gpt4 book ai didi

python - 如何仅对列表中的指定位进行异或

转载 作者:行者123 更新时间:2023-12-02 05:13:59 24 4
gpt4 key购买 nike

上下文: 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com