薛定谔的二维码

很早以前,我就在想:给定一个二维码,往某些空白处涂上黑点,能不能使之成为另一个指定内容的二维码?
答案是可能。一年前我就知道答案了,不过拖到现在才写了篇文章。(懒惰)
下面提供一些例子:


仔细观察的话就会发现,第2个二维码是第1个的基础上添加一些黑点而成的。
如果我们把它们之间不同的地方用灰点表示,就会产生有趣的效果。

扫描这个二维码有3种可能:
1、识别出:九条可怜酱(灰点全部为0)
2、识别出:HTTPS://SPACE.BILIBILI.COM/185316(灰点全部为1)
3、什么都识别不出来(部分灰点为0,另一部分为1)
灰点识别为0或1取决于各种因素,如拍摄角度、屏幕亮度、环境亮度、扫描软件的不同等。尝试不同拍摄角度方可识别出两种不同的结果,正对屏幕扫描有大几率识别不出任何内容。
当然这东西可能没什么实际用途,就当是好玩吧……
代码我也放上来:https://github.com/ibukisaar/QRCodeArt
食用方法:




背后的原理是解二元域上的方程组,感兴趣的读者可以自己尝试一下。要解释这东西需要很长的篇幅,有时间再更新吧 /w\