受到伟大的API复活节彩蛋狩猎的启发!
摘要
您的任务是使用尽可能少的步骤在“ Collatz空间”(稍后说明)中搜索预定整数。
介绍
这项挑战基于著名的Collatz猜想,希望这里至少每个人都听说过。这是“ 打印超级Collatz编号”的摘要。
将在Collatz序列(也称为3X + 1的问题)是你用任意正整数开始,在这个例子中,我们将使用10和应用这一套步骤吧:
if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1
的在Collatz距离C(m,n)
的两个数字之间m
和n
,对于这一挑战的目的,是在两个数字之间的距离在Collatz图表(贷记@tsh告诉我关于这个概念),其被定义为如下:(使用21
和13
作为例子):
写下了在Collatz序列m
(在这种情况下,21
):
21, 64, 32, 16, 8, 4, 2, 1
写下了在Collatz序列n
(在这种情况下,13
):
13, 40, 20, 10, 5, 16, 8, 4, 2, 1
现在计算仅在一个序列中出现多少个数字。定义为m
和之间的Collatz距离n
。在这种情况下8
,即
21, 64, 32, 13, 40, 20, 10, 5
所以我们之间在Collatz距离21
和13
作为C(21,13)=8
。
C(m,n)
具有以下不错的属性:
C(m,n)=C(n,m)
C(m,n)=0 iff. m=n
希望C(m,n)
现在的定义很清楚。让我们开始在Collatz空间进行鸡蛋狩猎!
在游戏开始时,控制器确定复活节彩蛋的位置,该复活节彩蛋的位置由其一维坐标表示:间隔中的整数[p,q]
(换句话说,介于p
和之间的整数q
,包括两端)。
鸡蛋的位置在整个游戏过程中保持不变。我们将此坐标表示为r
。
现在,您可以将初始猜测设为0,它将由控制器记录下来。这是您的第0轮。如果您很幸运,您一开始就把它弄对了(即0 = r),那么游戏结束,您的分数为0
(分数越低越好)。否则,您进入第一个回合,然后重新猜测为1,直到猜对为止,即n = r,您的得分将为n
。
对于0号之后的每个回合,控制器都会为您提供以下反馈之一,以便您可以根据给定的信息做出更好的猜测。假设您当前处于n
第30轮,因此您的猜测为n
- “你找到了!” 如果n = r,则游戏结束,您得分
n
。 - 如果C(a n,r)<C(a n-1,r)
- 如果C(a n,r)= C(a n-1,r),则“您正在绕蛋”
- “您离得更远:(”如果C(a n,r)> C(a n-1,r)
为了节省一些字节,我将按照上述顺序将响应称为“正确”,“更近”,“相同”,“更远”。
这是带有的示例游戏p=1,q=15
。
- 一个0 = 10
- 一个1 = 11,响应: “终结者”
- a 2 = 13,响应:“更远”
- a 3 = 4,响应:“更远”
- a 4 = 3,响应:“ Closer”
- 一个5 = 5,响应: “相同”
- a 6 = 7,响应:“对”
得分:6
。
挑战
设计确定性策略,p=51, q=562
以最佳分数玩游戏。
答案应详细描述算法。您可以附加任何有助于阐明算法的代码。这不是代码高尔夫,所以鼓励您编写清晰的代码。
答案应该包括在的所有可能情况下可能达到的最差得分r
,以及最差得分最低的那个得分。在平局的情况下,对于所有可能的r
s(也应包括在答案中)具有更好平均分数的算法获胜。没有更多的决胜局,最终我们可能会有多个赢家。
眼镜
- 重申
r
一下,就在区间内[51,562]
。 - 默认漏洞适用。
赏金(在发布第一个答案后添加)
我个人可以悬赏一个答案,其中所有的猜测都在该范围内,[51,562]
而最差得分仍然较低。