gpt4 book ai didi

python - 组合函数以产生所需的整数输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:51:52 24 4
gpt4 key购买 nike

我不确定这个问题是属于 stackoverflow 还是数学,但我会试试 stackoverflow。

我正在尝试创建一个算法/函数来解决一个难题,但我就是做不到。谜题如前所述。

  1. 设一个单元是一个接受 0 到 15 之间的整数 i 的函数。
  2. 一个单元可以对 i 加上或减去 0 - 15 范围内的任何数字。
  3. 此外,一个单元还可以包含 0-15 之间的数字并从中减去 i,而不是向 i 添加或从 i 减去数字。
  4. 一个单元只能对一个数进行2次运算,产生最大值的运算将作为该单元的输出。
  5. 值仅介于 0 - 15 之间,因此 9 - 15 = 0 和 13 + 5 = 15。
  6. 我们可以将单元组合在一起以产生更复杂的结果。第一个单元只能接受 0 - 9 之间的数字。
  7. 在我的示例中,我将把 3 个单元串在一起。

这是一个与编码无关的问题,但似乎我需要一个程序来找出可能的解决方案。我试图创建一个蛮力算法来找到解决方案,但我一直无法这样做,因为我不太擅长编码。

例如,一个问题可能是:

对于值 1 和 4,让输出为 0。对于所有其他值,例如0, 2, 3, 5, 6, 7, 8, 9,输出必须大于0。

这里的解决方案可能是:

def unit1(input):
return max(5 - input, input)

def unit2(input):
max(14 - input, input)

def unit3(input):
max(10 - input, input - 10)

print(unit3(unit2(unit1(4))))

另一个例子可能是:

对于值 4、5、6 和 8,输出必须为 3 或更大。对于所有其他人,例如0, 1, 2, 3, 7, 9,输出必须小于3。

这里的解决方案可能是:

def unit1(input):
return max(4 - input, input - 4)

def unit2(input):
max(2, input)

def unit3(input):
max(1 - input, input - 6)

print(unit3(unit2(unit1(5))))

举上面两个例子,是否有一个通用的算法/公式可以用来找到我想要的输出?

另外,是否可以仅使用2个单元来解决上述问题?

如果我需要详细说明某些事情,请告诉我,非常感谢您的帮助!

最佳答案

似乎基本上有两种事情您必须做:将应该以相同方式处理的输入映射到连续范围,然后将连续范围移动到正确的位置。

max(A-x,x-B) 是唯一一种可以将非连续范围映射在一起的单元。它有局限性:它总是将 2 个输入映射到一个输出,并且您必须小心,永远不要将必须以不同方式处理的两个输入映射到同一输出。

就映射到一起的内容而言,您只需要一个参数,因为 max(x,A-x) 可以处理所有情况。您可以尝试所有 16 种可能性,看看是否有任何帮助。有时您可能需要在最大值之前进行饱和添加以折叠范围顶部或底部的输入。

在您的第一个示例中,您需要将 0 和 4 映射在一起。

max(x,A-x) 中,我们需要 4 = A-1

解决我们得到A=5,所以我们开始

max(x, 5-x)

将 4 和 1 映射到 4,将其他所有值映射到其他值。

现在我们需要合并高于和低于 4 的范围。所有小于 4 的东西都必须映射到高于 4 的东西。我们解决 5 = A-3 得到 A = 8 :

max(x, 8-x)

现在需要以相同方式处理的事物的范围是连续的,因此我们只需要将它们移动到正确的位置即可。我们有 >=4 的值,我们需要 4->0。我们可以添加一个减法单元,但是通过从两种情况中减去 4 来移动前面的 max 会更短。我们留下了最终的解决方案

max(x, 5-x)
max(x-4, 4-x)

您还没有真正定义您可能会被问到的所有可能问题,但看起来这些问题都可以通过这个两步合并和转移过程来解决。有时会没有解决方案,因为您无法以任何有效方式将范围与 max 组合。

关于python - 组合函数以产生所需的整数输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57335358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com