N-拼图游戏的可解性

所谓的N-拼图 (N-puzzle) 是一种流传很久的智力游戏,是谁发明已无法考证。1865年Embossing公司发售了这款游戏的一个版本,使得其风靡一时。常见版本的有 8 块和 15 块的两种,非常类似游戏“华容道”。以 15 块的拼图为例,玩家需要通过移动一个方形容器中的各个小方块,将一副打乱的拼图恢复成初始形态(如下图)。
15-puzzle Continue Reading…

用matplotlib绘制数学图像

绘制美观漂亮的数学图像是往往是一件让我们头疼的事,因为我们既要保证绘图的准确性,又要同时做到使图像容易理解又不失美观。能画数学图像的软件种类很多,但好用的却很少。有些支持的图像类型很多功能很全,但是画出的图不平滑,有很多锯齿;而有些画的图形很漂亮,但支持的功能又少。Matplotlib 是一个数学图形绘制的 python 库,能够绘制出版质量的数学插图,同时功能也非常丰富。 Continue Reading…

几个实用的MATLAB技巧(收集更新中)

MATLAB是世界上最出名、应用最广泛的数学软件之一。相当多的科学家、工程师、经济学者们利用MATLAB进行数值计算。MATLAB可以让用户将时间更多地投入到思考和处理问题上而不是浪费精力在处理无聊的任务上。MATLAB内置的算法存在了较长时间并且能给出较为可靠的结果。MATLAB也允许用户为特定的程序自定义函数,再加上内置的指令,我们就能很自信的得到需要的结果。MATLAB同时具备绘制高质且丰富的图表的能力,它们可以轻松地导入LaTeX和Word中。

与此同时,掌握一些MATLAB的使用小技巧可以让工作更有效率,游刃有余。 Continue Reading…

亚马逊kindle阅读器入手初感

2013 年 6 月 10 日下午,亚马逊在中国发布了kindle阅读器还有平板电脑,我就从网上订了一款kindle paperwhite尝尝鲜。

一直觉得纸质书太过笨重,有点占空间,而电纸书的特点是采用电子墨水,显示效果已经很逼近传统书籍,宣传说长时间阅读不易产生疲劳感,于是乎就订购了。

同时买了一个官方的保护套,kindle的 6 寸的屏幕比普通的书小那么一点,但是还是蛮方便携带的,效果如下图: Continue Reading…

身份证和条形码中的校验码

通常校验码是指通过计算得出的一组数的最后一位或几位,例如身份证和条形码的最后一位,用来检验是否出现了输入错误。在数据传输的时候,一般也会在数据的末尾加上几位校验位来判断传输的数据是否有误。

一般说来,人类容易犯的常见输入错误有:

  • 输错某一位:1 → 2
  • 颠倒相邻两位顺序:12 → 21
  • 输错相邻的两位相同数字:33 → 44
  • 跳跃错位:456 → 645

而一个好的校验码方案能够检测出以上大多数以上的输入错误。 Continue Reading…

如何确定安全性又高又好记的密码

在现代社会中,几乎所有的一切都是用密码来保护的。因此确定一个安全的密码显得相当重要。而与此同时,有时候密码虽然安全,但是又太长太难记,弄忘了又要找回密码,相当地麻烦。之前AIR20在设置WordPress.com的密码的时候就因为一开始设得过于复杂,后来忘了密码,找也找不回。因此有必要确定一个安全性又高又好记的密码方案。

首先,有些密码虽然好记,但是出现的频率太高,很容易被暴力破解,应当避免,例如据统计出现频率最高的 5 个密码:

  1. password
  2. 123456
  3. 12345678
  4. 1234
  5. qwerty(键盘上的第一排的前六个字母,貌似是是幽鬼吧?)

这样的密码应该少用,除非是非常不重要的账号,比如注册了之后下载个东西然后就扔掉不用的。事实上现在注册账号的时候,这些太常见的密码已经通过不了注册了。HOW SECURE IS MY PASSWORD是一个测试密码安全性的网站,输入你的密码,就能测试一台普通电脑破解你的密码需要多久。

还有一点应该注意的是,不要在各个网站中使用相同的密码。现在的互联网漏洞很多,让黑客们有很多空子得以攻破网站的服务器,安全管理不善的网站的账号密码很容易被黑客们窃取,现在各个网站的账号关联也很密切,他们会用这个密码尝试你在别的网站的账号,给账号安全带来威胁。 Continue Reading…

如何利用python个性化扫邮(支持附件)

扫邮,其实就是群发邮件的形象说法。虽然个人很鄙视扫邮这种行为,但有时候我们迫不得已还是要扫这么一下两下。但不得不说学校分配给学生的邮箱扫邮扫起来很麻烦,发件人有 20 个人的上限设置,不能一次性地群发出去。听说现在有人还是把扫邮列表分成 N 多份,每份 20 人,然后分成 N 次发出去,这样的方法略原始,效率也略低,容易漏发或者重复。

不过既然学校的邮箱支持IMAP和SMTP,我们就可以用python来扫邮了。Python自带的email包和smtplib包都很强大,不但可以满足基本的发邮件的需要,而且可以添加附件,再配合上python编程功能,像使用个性化称呼这样平时群发邮件时的难题也能解决。
Continue Reading…

谈谈拼音输入法——双拼

拼音输入法是国人输入汉字最常见的选择。尤其是现在拼音已经普及,大多数年轻人都是用拼音输入法来输入汉字。

AIR20使用的输入法也是拼音输入法,但是是双拼输入法,跟普通的全拼输入法(即直接使用汉语拼音输入的方法)略有不同,可以说是全拼输入法的一个改进。鉴于很多人经常问我我用的这个输入法到底是什么,我决定在博客里说一说什么是双拼输入法以及其相比于全拼的优势。

双拼,顾名思义,就是打出每个汉字只需要按键两次的拼音方案。因此,使用双拼打字的速度也比全拼快出许多。像AIR20用双拼打字的速度大概是全拼的 1.5 倍左右。尤其在手机打字方面,双拼由于击键次数大大减少,双拼的优势也更加明显。对学习者而言,由于不需要记字根,双拼的上手比五笔之类字型输入法的快很多,也适合大多数人学习。另外,常见的搜狗输入法、谷歌输入法都有双拼模式,所以无需安装另外的输入法。
Continue Reading…

条形码编码原理解析

条形码在我们的日常生活中非常常见。我们平时购买的各种商品,还有书籍上都印有条形码。条形码可以方便商家管理商品的库存,控制售价。物流中运用条形码可以实现快速扫包,将快递发往正确的目的地,免去了人工分拣的麻烦。今天我们就来看看条形码是如何编码的。

首先,条形码的种类很多,不同种类所应用的范围也各不相同。例如买的饮料上印的条形码,和汽车上还有火车票上的条形码显然不是同一种。本文将主要介绍EAN-13条形码。EAN-13(European Article Number)原本是欧洲标准,后来被采纳为国际标准,被广泛世界各国应用在商品编码和书籍编码(ISBN)中。

下图是一个常见的条形码,我们以它为例,来讲讲条形码是如何编码的。

味全麦香味酸牛奶的条形码

味全麦香味酸牛奶的条形码

Continue Reading…