Algorithm 我将如何实现这个算法?

Algorithm 我将如何实现这个算法?,algorithm,compression,brute-force,Algorithm,Compression,Brute Force,前一段时间,我试图对一个发送12位二进制“密钥”的遥控器施加暴力 我制作的设备工作正常,但速度非常慢,因为它以每秒50位的速度尝试每种组合(4096个代码=49152位=~16分钟) 我打开接收器,发现它正在使用移位寄存器检查代码,两次尝试之间不需要延迟。这意味着接收器只是查看要接收的最后12位,看看它们是否与密钥匹配 这意味着,如果流111111000000000000000000被发送,它实际上已经尝试了所有这些代码 111111111111 111111111110 11111

前一段时间,我试图对一个发送12位二进制“密钥”的遥控器施加暴力

我制作的设备工作正常,但速度非常慢,因为它以每秒50位的速度尝试每种组合(4096个代码=49152位=~16分钟)

我打开接收器,发现它正在使用移位寄存器检查代码,两次尝试之间不需要延迟。这意味着接收器只是查看要接收的最后12位,看看它们是否与密钥匹配

这意味着,如果流
111111000000000000000000
被发送,它实际上已经尝试了所有这些代码

111111111111    111111111110    111111111100    111111111000
111111110000    111111100000    111111000000    111110000000
111100000000    111000000000    110000000000    100000000000
000000000000
在本例中,我使用了24位来尝试13个12位组合(>90%压缩)


有没有人知道一种算法可以通过利用它来减少我发送的49152位?

我想,在每个12位序列中翻转一位将处理另外13个组合,例如11111111101000000000010,然后11111111101110000000100,等等。但是你仍然需要做很多排列,即使有一个比特,我想你仍然需要做11111111101000000000100等等。然后在一边翻转两个比特,另一边翻转一个比特,等等。

你说的是一个。如果你不在乎它是如何工作的,你只想要结果,.

绝对精彩。长度为4096位时,压缩率为91.6%,即每12位序列压缩1位。非常感谢,你把我的星期五安排好了!这里有一个很好的故事:在Dota中,调用程序有一个包含三个插槽的拼写队列。(或者说过去,我认为他已经被简化了)。每次你召唤一个球体时,它都会把它从起点移到终点。这个图表描述了与你当前法术相邻的法术的确切路径。虽然在Dota中是三个状态和三个插槽(相对于只有两个和三个插槽的字母表的图表)。你施法的咒语由队列的当前状态(即三个球体的排列)决定。