- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
上下文: Image: XOR first and second, to form heart-shaped pixel art
我正在创建一个可视化的一次性填充程序,它将输入位图分成两个不同的随机位列表,当它们一起异或时,应该重现输入位图 - 一种“逆向工程” 。
作为高度简化的解释,每个新创建的位图都被提供给 2 个独立的接收者。如果他们的组合形成指定的形状(见下文),他们可能会互相信任。
在上面的示例中,像素输入和最终输出在中间形成一个心形。
<小时/>尝试:最初,我的代码成功地将适当的位分配给两个单独的列表,具体取决于输入位是零还是一。 (包含随机性,因为我希望每次都能使用不同的输出。)当输入仅在白色背景上显示一个黑色(即一串 1)心形时,这一切都很好:Image: binary representation
input_pixels = [[0,0, ... 0], [0,0, ... 0], ... , [0,1, ... 1,0]] ## I've shortened here
bitmap1 = []
bitmap2 = []
for row in input_pixels:
temp1 = []
temp2 = []
for bit in row:
## 'Case A' when a bit in input_pixels is 0
if bit == 0:
randbit = random.choice((0, 1))
temp1.append(randbit)
if randbit == 1:
temp2.append(1)
else:
temp2.append(0)
## 'Case B' when a bit in input_pixels is 1
else:
randbit = random.choice((0, 1))
temp1.append(randbit)
if randbit == 1:
temp2.append(0)
else:
temp2.append(1)
bitmap1.append(temp1)
bitmap2.append(temp2)
但是,如果输入在心形以外的区域包含 1,我的代码显然不会产生所需的结果,因为条件语句不会区分我们感知的“形状”。
<小时/>问题:如何更改代码以可能识别指定形状的位,并仅将“情况 B”应用于此类相应部分?我对正则表达式不太熟悉,但这也许可以解决这些边缘情况吗?
编辑(澄清):
我的代码失败,例如:Image: If the 1s occupy non-heart-shaped locations just to add noise虽然我可以选择输入,以便只有 heart == 1(如上面标记为“二进制表示”的图像),但在这种情况下,用户可以立即看到他们收到的位图,而无需诉诸异或运算形成一颗心——我想避免这种情况。因此,在给定任何噪声输入的情况下,我需要以某种方式将“情况 B”应用于只是所需的“指定”区域(心脏)。
最佳答案
我不知道为什么你想要心脏周围的随机噪声,但只需使用 temp2.append(random.choice((0, 1))
独立于 randbit 的值
会做到这一点(仅适用于情况 A,如果 0
表示白色而心形是黑色)。
毕竟,两个随机位异或在一起仍然会生成随机位值。
关于python - 如何仅对列表中的指定位进行异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59522593/
我是一名优秀的程序员,十分优秀!