我不太清楚如何描述我的意思,所以让我试着通过例子解释(忍受我) .
当你只是递增一个整数时,你得到一个像这样的二进制序列(假设这个问题为8位):
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 1
0 0 0 0 0 1 0 0
0 0 0 0 0 1 0 1
0 0 0 0 0 1 1 0
0 0 0 0 0 1 1 1
0 0 0 0 1 0 0 0
0 0 0 0 1 0 0 1
0 0 0 0 1 0 1 0
0 0 0 0 1 0 1 1
0 0 0 0 1 1 0 0
0 0 0 0 1 1 0 1
0 0 0 0 1 1 1 0
0 0 0 0 1 1 1 1
0 0 0 1 0 0 0 0
0 0 0 1 0 0 0 1
0 0 0 1 0 0 1 0
0 0 0 1 0 0 1 1
0 0 0 1 0 1 0 0
0 0 0 1 0 1 0 1
0 0 0 1 0 1 1 0
0 0 0 1 0 1 1 1
0 0 0 1 1 0 0 0
0 0 0 1 1 0 0 1
0 0 0 1 1 0 1 0
0 0 0 1 1 0 1 1
0 0 0 1 1 1 0 0
0 0 0 1 1 1 0 1
0 0 0 1 1 1 1 0
0 0 0 1 1 1 1 1
[ ... etc ... ]
可视化的一种方法是每列代表一个“时钟” . 每个时钟/列的频率是其右邻居的一半 .
所以最右边的时钟有一个 0 后跟一个 1 等 . 下一个时钟有两个 0 s后跟两个 1 等等等......
我对一系列二进制字符串很感兴趣,其中每个时钟都是其邻居的整数除法 .
所以最右边的时钟仍然是一个 0 ,一个 1 ,下一个时钟仍然是两个 0 s,两个 1 s,但第三个时钟是三个 0 s和三个 1 等等 .
而不是 /1 /2 /4 /8 /16 ... 现在 /1 /2 /3 /4 /5 ... .
序列现在看起来像这样:
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0
0 0 0 0 0 1 1 1
0 0 0 0 1 1 0 0
0 0 0 1 1 1 0 1
0 0 1 1 1 0 1 0
0 1 1 1 1 0 1 1
1 1 1 1 0 0 0 0
1 1 1 1 0 1 0 1
1 1 1 0 0 1 1 0
1 1 1 0 0 1 1 1
1 1 0 0 1 0 0 0
1 1 0 0 1 0 0 1
1 0 0 0 1 0 1 0
1 0 0 1 1 1 1 1
0 0 0 1 0 1 0 0
0 0 0 1 0 1 0 1
0 0 1 1 0 0 1 0
0 0 1 1 0 0 1 1
[ ... etc ... ]
Question :是否有一个操作/算法可以在 i-1 给出 i 的值?
换句话说,让's say I' m在第4步( 0 0 0 0 0 1 1 1 ) . 我可以对此数字执行某些操作以获取第5步( 0 0 0 0 1 1 0 0 )的值,并且类似地执行任何其他步骤吗?
在除以2的情况下,你只需增加数字( i++ ),但在除以N的情况下,我似乎无法找出从一个到另一个的类似方式 . 我错过了一些明显的东西吗
我已经尝试将排序转换为十进制,但该模式是 0, 1, 2, 7, 12, 29, 58, etc ,这对我来说并不突出 .
我现在正在做的蛮力方式是我有一个计数器阵列(每个列/时钟一个),当达到相应列的“周期”时,我独立地重置每个计数(因此第一列为2) ,3为下一个,等) . 但这感觉很难看 .
我喜欢直接在号码上这样做而不需要一系列计数器 . 这甚至可能吗?这是一个已知的序列吗?我甚至不确定谷歌要说实话 . 我很欣赏这方面的任何线索 . 我很乐意在一些指导下走下兔洞 .
UPDATE
根据@ borrible的观察,对于给定的 i , i-1 有多个值,所以事实证明我原来问题的解决方案是模棱两可的 . 所以我将扩展我的问题以允许 i 作为输入(除了 i-1 th值 .