薛定諤的二維碼

很早以前,我就在想:給定一個(gè)二維碼,往某些空白處涂上黑點(diǎn),能不能使之成為另一個(gè)指定內(nèi)容的二維碼?
答案是可能。一年前我就知道答案了,不過拖到現(xiàn)在才寫了篇文章。(懶惰)
下面提供一些例子:


仔細(xì)觀察的話就會發(fā)現(xiàn),第2個(gè)二維碼是第1個(gè)的基礎(chǔ)上添加一些黑點(diǎn)而成的。
如果我們把它們之間不同的地方用灰點(diǎn)表示,就會產(chǎn)生有趣的效果。

掃描這個(gè)二維碼有3種可能:
1、識別出:九條可憐醬(灰點(diǎn)全部為0)
2、識別出:HTTPS://SPACE.BILIBILI.COM/185316(灰點(diǎn)全部為1)
3、什么都識別不出來(部分灰點(diǎn)為0,另一部分為1)
灰點(diǎn)識別為0或1取決于各種因素,如拍攝角度、屏幕亮度、環(huán)境亮度、掃描軟件的不同等。嘗試不同拍攝角度方可識別出兩種不同的結(jié)果,正對屏幕掃描有大幾率識別不出任何內(nèi)容。
當(dāng)然這東西可能沒什么實(shí)際用途,就當(dāng)是好玩吧……
代碼我也放上來:https://github.com/ibukisaar/QRCodeArt
食用方法:




背后的原理是解二元域上的方程組,感興趣的讀者可以自己嘗試一下。要解釋這東西需要很長的篇幅,有時(shí)間再更新吧 /w\
標(biāo)簽: