问题标签 [gray-code]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - 生成子集的最有效方法是什么?
我想要做的如下:
输入:n,例如 n = 3
输出:{000, 001, 010, 011, 100, 101, 110, 111},生成所有子集,我不在乎子集的顺序
我已经实现了一个算法:
我知道格雷码可以做这样的事情。但我想知道哪一种是生成子集的最有效方法?
gray-code - 为什么格雷码叫反射码?
我知道每个格雷码与其前面的代码有一点不同,但我不完全理解为什么它被称为反射。我遇到了这个网站https://www.pc-control.co.uk/gray_code.htm,上面写着“格雷码有时被称为反射二进制,因为前 8 个值与后 8 个值比较值,但倒序”,但前 8 个格雷码与倒序的后 8 个格雷码无法比较,这可以从他们网站上的格雷码表中看出。为了增加我的困惑,格雷码表与我教科书上的格雷码表不同,例如,我的教科书上的格雷码为 9 = 1000,而在网站上它的格雷码为 9 = 1101。
java - 如果给定两个十六进制数,求它们在格雷码中是否可以连续
“连续格雷码”应该是什么意思?我的意思是 10 和 11 在十进制系统中是连续的,但“格雷码连续”是什么意思?我只知道格雷码是一个二进制数字系统,其中两个连续的值只有一位不同。
这是在线解决方案,但我无法理解
我试图理解花费一个小时,但我仍然不知道。
vhdl - VHDL 中的 3 位有限状态机
有人可以告诉我导致错误的原因吗?我只是不明白。(“when”附近的语法错误。)
algorithm - 格雷码算法(32 位或更少)
我最近遇到了格雷码,我一直在试图围绕用于将格雷码转换回二进制(32 位或更少)的有效算法陷入困境。
这是我正在谈论的代码。现在这是我的问题:
- 这与普通代码(右移 1 和 XOR 直到 )有什么区别
mask == 0
? - 为什么专门使用 16、8、4、2、1 而不是任何其他小于 32 位的数字?
如果我们反过来做,有什么区别:
我已经尝试过了,它似乎产生了相同的结果。
haskell - 在所有成员之间生成二进制一位变化
我有个问题。我想生成二进制列表。但列表成员之间只会有一点变化。
oneBitAll :: Integral a => a -> [[String]]
对于 n=2
输出:
["00","01","11","10"] 已经 ["00","10","11","01"]
n=3
oneBitAll 3
[["000","001","011","010","110","111","101","100"], ["000","001","011", "111","101","100","110","010"], ["000","001","101","100","110","111","011", "010"], ["000","001","101","111","011","010","110","100"], ["000","010","011 ","001","101","111","110","100"],......]
成员之间只有一点点变化。
请帮忙。
这只给出了一个
格雷码适用于此。但我想找到所有组合。
如何为给定的 n 数生成所有可能的灰色代码?
此代码生成一半的可能性。我可以添加此代码什么?此代码生成;
[["000","001","011","010","110","111","101","100"],["000","010","011","001 ","101","111","110","100"],["000","001","101","100","110","111","011","010 "],["000","010","110","100","101","111","011","001"],["000","100","101", "001","011","111","110","010"],["000","100","110","010","011","111","101", “001”]]
但必须生成 12 个成员。
netlogo - Netlogo:将格雷码转换为二进制
我正在使用遗传算法来确定我的 Netlogo 模型中的生存,而 GA 的最终输出是 0 和 1 之间的十进制数,包括 0 和 1。出于交叉/突变的目的,我需要使用格雷码而不是二进制数。我有一个将二进制转换为十进制的函数,但没有将格雷码转换为二进制(我一直在努力)。
关于如何将格雷码编码为二进制函数的任何建议?
python - 生成格雷码。
我尝试在Python中生成灰色代码。此代码工作正常。问题是我在函数中初始化基本情况(n=1,[0,1]
)main
并将其传递给gray_code
函数以计算其余部分。我想在函数本身内生成所有灰色代码,包括基本情况。我怎么做?
是这个算法的递归关系T(n)=T(n-1)+n
吗?
bit-manipulation - 从第 (n-1) 个格雷码导出第 n 个格雷码
有没有办法通过对第 (n-1) 个格雷码使用位运算来使用第 (n-1) 个格雷码导出 4 位第 n 个格雷码?
例如第 4 个格雷码是 0010。现在我想通过对 0010 进行位操作来获得第 5 个格雷码 0110。
algorithm - An algorithm using bit flips to iterate over all numbers with k bits
I am looking for an efficient way to iterate over all n bit non-negative integers which have at most k bits set by flipping one bit at a time.
What is the minimum number of bit flips I need to do to iterate over all n bit non-negative integers with at most k bits set?
I know that if k = n, that is we want to iterate over all n bit non-negative integers then we can use a Gray code. This has the great property that you only ever change one bit to get a new number. However this will typically go via integers with more than k bits if k < n.