python - 如何找到自定义二进制规则的编号?
问题描述
正如您在下面看到的,仅查找这种新型二进制代码的数字需要一种新方法。我可以一个一个地计算它们,但是如何正确地实现它仍然让我头疼。
以这个二进制代码为例。
1100
并使用以下方法检测它的号码:
0011 - #1
0101 - #2
0110 - #3
1001 - #4
1010 - #5
1100 - #6
因此 1100 是 '6'
然后我们创建一个 6 的新代码,但它的 1 更少(因此有更多的 0)!用户定义少了多少个 1。在此示例中,它是 1 减去 1。所以我们可以通过以下方式找到它:
000001
000010
000100
001000
010000
100000
因此 100000 是 '6'
此外,代码应该反向工作,通过用户定义带走 2 个 0 将 100000 变为 1100,然后代码添加 1 直到它工作。(用户只需将代码中的 1 更改为 0 即可反转代码功能。无需额外代码。)
代码的结尾有时需要填充。所有 1 前。1100-1111。
解决方案
“二进制规则”的描述对我来说没有任何意义,但在第一条规则中,如果你只是忽略最后一个数字,那么它就是数字的简单二进制表示。在第二条规则中,它看起来只是将数字向左移动的函数,这与乘以 2 的幂相同(您可以使用该log2
函数撤消):
% cat rules.py
import math
bin1 = 0b1100
bin2 = 0b100000
print(bin1>>1)
print(math.log2(bin2)+1)
% python rules.py
6
6.0
推荐阅读
- openlayers - 如何在此交互中找到圆形交互与地图上可见的所有图层的所有特征之间的交集?
- wpf - 绑定兄弟控件并在转换器中使用
- git - 非 LFS 仓库的 Git 镜像到 LFS 仓库
- python - Python 嵌套字典——按键加值
- javascript - 未捕获的 RangeError:超出最大调用堆栈大小并且 [Violation] 'click' 处理程序占用
- javascript - 如何获取剑道 pdfExport 中的页数
- asp.net - 如何在 SSRS 2016 中添加自定义身份验证 - 使用 ADFS 和 OWIN
- html - 如何使用浮动右键进行文本输入
- rust - 如何使用在 main 中创建的变量调用需要“静态生命周期”的函数?
- angular - 为什么我应该使用@ngrx/store?