问题标签 [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.

0 投票
1 回答
510 浏览

algorithm - 生成子集的最有效方法是什么?

我想要做的如下:

输入:n,例如 n = 3

输出:{000, 001, 010, 011, 100, 101, 110, 111},生成所有子集,我不在乎子集的顺序

我已经实现了一个算法:

我知道格雷码可以做这样的事情。但我想知道哪一种是生成子集的最有效方法?

0 投票
1 回答
13246 浏览

gray-code - 为什么格雷码叫反射码?

我知道每个格雷码与其前面的代码有一点不同,但我不完全理解为什么它被称为反射。我遇到了这个网站https://www.pc-control.co.uk/gray_code.htm,上面写着“格雷码有时被称为反射二进制,因为前 8 个值与后 8 个值比较值,但倒序”,但前 8 个格雷码与倒序的后 8 个格雷码无法比较,这可以从他们网站上的格雷码表中看出。为了增加我的困惑,格雷码表与我教科书上的格雷码表不同,例如,我的教科书上的格雷码为 9 = 1000,而在网站上它的格雷码为 9 = 1101。

0 投票
4 回答
4460 浏览

java - 如果给定两个十六进制数,求它们在格雷码中是否可以连续

“连续格雷码”应该是什么意思?我的意思是 10 和 11 在十进制系统中是连续的,但“格雷码连续”是什么意思?我只知道格雷码是一个二进制数字系统,其中两个连续的值只有一位不同。

这是在线解决方案,但我无法理解

我试图理解花费一个小时,但我仍然不知道。

0 投票
1 回答
851 浏览

vhdl - VHDL 中的 3 位有限状态机

这是完整的代码

有人可以告诉我导致错误的原因吗?我只是不明白。(“when”附近的语法错误。)

0 投票
1 回答
610 浏览

algorithm - 格雷码算法(32 位或更少)

我最近遇到了格雷码,我一直在试图围绕用于将格雷码转换回二进制(32 位或更少)的有效算法陷入困境。

这是我正在谈论的代码。现在这是我的问题:

  • 这与普通代码(右移 1 和 XOR 直到 )有什么区别mask == 0
  • 为什么专门使用 16、8、4、2、1 而不是任何其他小于 32 位的数字?
  • 如果我们反过来做,有什么区别:

    我已经尝试过了,它似乎产生了相同的结果。

0 投票
1 回答
328 浏览

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 个成员。

0 投票
1 回答
242 浏览

netlogo - Netlogo:将格雷码转换为二进制

我正在使用遗传算法来确定我的 Netlogo 模型中的生存​​,而 GA 的最终输出是 0 和 1 之间的十进制数,包括 0 和 1。出于交叉/突变的目的,我需要使用格雷码而不是二进制数。我有一个将二进制转换为十进制的函数,但没有将格雷码转换为二进制(我一直在努力)。

关于如何将格雷码编码为二进制函数的任何建议?

0 投票
6 回答
11608 浏览

python - 生成格雷码。

我尝试在Python中生成灰色代码。此代码工作正常。问题是我在函数中初始化基本情况(n=1,[0,1]main并将其传递给gray_code函数以计算其余部分。我想在函数本身内生成所有灰色代码,包括基本情况。我怎么做?

是这个算法的递归关系T(n)=T(n-1)+n吗?

0 投票
2 回答
359 浏览

bit-manipulation - 从第 (n-1) 个格雷码导出第 n 个格雷码

有没有办法通过对第 (n-1) 个格雷码使用位运算来使用第 (n-1) 个格雷码导出 4 位第 n 个格雷码?

例如第 4 个格雷码是 0010。现在我想通过对 0010 进行位操作来获得第 5 个格雷码 0110。

0 投票
2 回答
427 浏览

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.