问题标签 [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 投票
2 回答
2063 浏览

python - 使用 Python 将灰度图像转换为其原始颜色格式

您好我目前正在尝试使用 Python 中的 Open CV 将灰度图像转换为其原始颜色格式。

执行此操作会产生错误:

也欢迎使用 Python 图像库中的代码。任何帮助将不胜感激。

谢谢

0 投票
2 回答
1010 浏览

php - 格雷码生成 - n 位格雷码

问题是由hackerrank提出的,我得到了解决方案,但在最后的测试用例中解决方案存在问题。

问题如下。

以下是 1 位序列 (n = 1)

输出

以下是 2 位序列 (n = 2)

输出

以下是 3 位序列 (n = 3)

输出

以下是 4 位序列 (n = 4)

输出

解决方案示例

以下是从 2 位格雷码列表生成 3 位格雷码列表的步骤。

  • L1 = {00, 01, 11, 10}(2 位格雷码列表)
  • L2 = {10, 11, 01, 00}(L1 的倒数)
  • L1 的所有条目都以 '0' 为前缀,L1 变为 {000, 001, 011, 010}
  • L2 的所有条目都以 '1' 为前缀,L2 变为 {110, 111, 101, 100}
  • 连接 L1 和 L2,我们得到 {000, 001, 011, 010, 110, 111, 101, 100}

下面给出第一个解决方案。(基于上面的解决方案示例)

但是下面给出的解决方案在 22,23 个数字之后将不起作用。发生内存分配错误。

第二种解决方案如下

此解决方案将一直有效到 63。在 63 之后,这将显示超时错误。

当 64 位 php 在 64 位操作系统上运行时,这将一直工作到 63 岁。如果是在 64 位操作系统上运行的 32 位 php,则在 31 之后将无法工作。

请帮助我找到这个解决方案。

问题:如何解决上述问题,包括 $n = 64 和 $n = 65

参考:https ://www.geeksforgeeks.org/given-a-number-n-generate-bit-patterns-from-0-to-2n-1-so-that-successive-patterns-differ-by-one-少量/

0 投票
1 回答
933 浏览

algorithm - 生成由c ++中整数的二进制表示给出的集合的所有子集

在 c++ 中,我正在寻找一种有效的算法来生成所有整数,使得它们的二进制表示是由整数 N 的二进制表示给出的集合的子集。高效我的意思是我不想循环遍历所有小于 N 的整数来检查它们是否是子集,主要是因为 N 可能非常大。

我的一个想法是生成与 N 的汉明权重相对应的整数的所有可能子集,然后使用 << 将它们移动到正确的位置,但到目前为止我还没有找到一个好的方法来做到这一点。

例子:

对于整数 N=52 给出的集合 110100,所有可能的子集将是:

{000100,010000,010100,100000,100100,110000}

对应于整数 {4,16,20,32,36,48},这是我想要生成的。

0 投票
1 回答
294 浏览

c++ - 生成具有偶数汉明权重的整数(popcount)c ++

我想有效地(通过使用位黑客)生成给定数字 k 的所有整数,以便它们具有均匀的汉明权重,而无需明确计算它们的汉明权重。对我来说,按升序还是降序完成并不重要。

如果我可以生成所有具有均匀汉明权重的整数,这些整数是 k 的子集(在格雷码意义上),那么一个奖励(相关任务)将是。

示例:输入-> k=14(二进制 1110)

全部输出-> 3 (0011), 5(0101), 6 (0110), 9 (1001), 10 (1010), 12 (1100)

输出子集-> 6 (0110), 10 (1010), 12 (1100)

使用 popcount 的示例代码:

使用 popcount 作为子集的示例代码:

0 投票
2 回答
513 浏览

algorithm - 请建议一种算法来比较格雷码数

我有一个绝对编码器,它以格雷码输出 10 位值(0 到 1023)。我要解决的问题是如何确定编码器是向前还是向后移动。

我决定“最佳”算法如下:首先我将格雷码转换为常规二进制(完全归功于最后一个答案:https ://www.daniweb.com/programming/software-development/code/216355/格雷码转换):

其次,我比较了两个相隔 250 毫秒的采样值。我认为比较两个值会让我知道我是向前还是向后。例如:

就在我开始觉得自己很聪明的时候,令我失望的是,我意识到这个算法有一个致命的缺陷。当我将二进制值 824 与 1015 进行比较时,此解决方案效果很好。此时我知道编码器的移动方式。然而在某些时候,编码器会从 1023 翻转到 0 并爬升,然后当我去比较 1015 的第一个采样值和 44 的第二个采样值时,即使我在物理上朝同一个方向移动,我写的逻辑没有正确捕捉到这一点。另一个不行是将格雷码值作为一个整数,并比较两个整数。

如何比较两个相隔 250 毫秒的格雷码值并确定旋转方向,同时考虑到编码器的翻转方面?如果您愿意提供帮助,您能否提供一个简单的代码示例?

0 投票
1 回答
339 浏览

encoding - 用带负数的浮点对格雷码值进行编码

我的目标是能够使用格雷码将 -4.0 和 4.0 之间的任何数字转换为 5 位二进制字符串。我还需要能够转换回十进制。

感谢您的任何帮助,您可以提供。

如果有帮助,这里的大局是我从神经网络中获取权重并将它们变异为二进制字符串。

0 投票
2 回答
52 浏览

python-3.x - 谁能解释我这段代码中的打印语句?

我在互联网上找到了这段代码,但我无法理解打印语句是如何工作的。

我已经尝试过很多答案,但没有一个能完美回答。

0 投票
0 回答
590 浏览

python - 使用 Python 的 Binary_to_Gray 代码转换

我编写了一个程序,仅使用字符串操作将二进制代码转换为格雷码。我想检查我的代码的可行性,以及它是正确还是错误的方法。

0 投票
2 回答
173 浏览

algorithm - 固定任意长度数组的低内存伪随机洗牌

背景:我正在为基于微控制器的嵌入式系统编写一个外部 SRAM 测试仪。没有安全性,不涉及密码学。为了可重现地访问“尽可能不连续”的内存位置,我正在寻找一个实现

y = shuffle(x),取并返回一个介于 0 和固定 N = 2^16 - 1 之间的整数

它本身可能不会使用大量的 RAM,例如一个简单的随机地址数组。从好的方面来说,它可以变慢。对非连续没有严格的定义——它是关于上下颠簸地址线,寻找印刷电路板的焊接和其他故障。建议?

到目前为止,我发现Knuth shuffle aka Fisher-Yates shuffle

后期编辑:我想我正在寻找最大化汉明距离。“反格雷码”?

0 投票
4 回答
189 浏览

chisel - 在 Chisel 中获得格雷码计数器是否有公认的方法?

我正在寻找在 Chisel3 中编写用于寻址子单元的计数器。如果计数器与子单元中的某个寄存器匹配,则子单元会触发,否则不会。

我宁愿用格雷码而不是二进制的地址循环。用 Chisel 编写二进制计数器很容易,但我看不到格雷码计数器的规定。

我可以编写一种类似于 Uint 和 Sint 的新类型,但如果它已经存在,我不愿意重新发明它。然而,我在食谱或其他文档中没有看到任何关于格雷码的内容。Github 只是出现了一个面向 Minecraft 的 repo(因为它与“chisel”匹配) VHDL 有现有的东西,但我想用 Chisel 来表达这一点。

那么我是否错过了可以在 Chisel 中提供灰色计数器的资源?如果做不到这一点,构建类似于 Uint 的新类型是一种合理的继续方式吗?