中英文之间的空格

中英文混排的时候,有时候我们会觉得它们都挤在一起了。中英文之间其实要空开一格才比较美观,比如中文 English 混合,而不是中文English混合。当然,用 Word 或者 XeTeX 现在已经没有这个问题了(早先的 LaTeX 可以用 cctspace 解决)。但是在网页上,在 Adobe Illustrator / InDesign 之类处理混排不特别成熟的软件里,手工一个个去注意还是很麻烦。于是我就写了个小脚本来解决这个问题。它可以在中英文字符中间自动插入空格,去除中文标点前后的空格,以及连续两个以上的多余空格。程序其实很简单,但似乎用起来还算方便。
Continue reading “中英文之间的空格”

毕达哥拉斯树

今天的 Project Euler 是关于求毕达哥拉斯树的面积极限。鉴于现在还早,贴答案太不好了,不过还是可以看看这个东西。

毕达哥拉斯树 (Pythagoras Tree) 的构造过程,就是先给定一个单位正方形,把正方形的顶边作为一个直角三角形的斜边,然后两个直角边各扩展出一个正方形。接下来这两条直角边的正方形对边再作为斜边继续扩展,如此无穷迭代下去得到的。与其说是树,我觉得它倒更像一朵花菜…

很显然扩展出去的两个正方形的面积之和就等于斜边上这个正方形的面积,所以每扩展一次,总面积就会增加一个单位正方形,所以是会趋于无穷大。然而迭代到一定程度之后,这些枝干就开始互相重叠,到了最后这个总覆盖面积还是有限的。但是,似乎这个极限并没有简便的解法。

比如让两条直角边和斜边分别是 3、4、5,我们迭代 15 次之后得到的图形是这个样子的:

Pythagoras Tree

Continue reading “毕达哥拉斯树”

最小误差的矩形网格

这个实际上是上个星期的 Project Euler 题目——我也知道贴答案不好,但是这个问题实在很有意思:给定一个单位圆,在 [-1, 1] x [-1, 1] 里面插入 N 条线,如果小单元和单位圆重叠就标为红色,否则标为黑色。找出让红色区域最小的划分方法。我在 N = 16 时候的解是这个样子的: Continue reading “最小误差的矩形网格”

平均投几个三分才会连续进 3 个?

今天男篮对澳大利亚虽然输了,但是王仕鹏表现神勇,三分球 10 投 7 中拿下 21 分;梦十对尼日利亚,安东尼更是有如神助,出场 16 分钟,三分球 12 投 10 中!可是平常看 NBA 比赛,不要说 10 中了,一个人连进三个三分都不常见。那平常要扔多少个三分才能看到一次连中三元呢?
Continue reading “平均投几个三分才会连续进 3 个?”

WP LaTeX 中的反斜杠

刚刚升级到 WordPress 3.4.1,我很郁闷地发现,每次我输入一个 LaTeX 公式,反斜杠就消失了。我得把 \ 换成 \\,但每次一保存,两个就变成了一个,再保存一次就没了。研究了一下终于发现了罪魁祸首,把它去掉就好了:

/wp-includes/load.php

function wp_magic_quotes() {
	// If already slashed, strip.
	if ( get_magic_quotes_gpc() ) {
		$_GET    = stripslashes_deep( $_GET    );
//      $_POST   = stripslashes_deep( $_POST   );
		$_COOKIE = stripslashes_deep( $_COOKIE );
	}

	// Escape with wpdb.
	$_GET    = add_magic_quotes( $_GET    );
	$_POST   = add_magic_quotes( $_POST   );
	$_COOKIE = add_magic_quotes( $_COOKIE );
	$_SERVER = add_magic_quotes( $_SERVER );

	// Force REQUEST to be GET + POST.
	$_REQUEST = array_merge( $_GET, $_POST );
}

Emacs 图片支持

新装了最新的官方 Emacs 24.1,一启动发现图片不是光滑的 png 而是 xpm
于是查看 png 支持
M-: (image-type-available-p 'png) RET
返回nil。再看
C-h v libpng-version RET
返回 10403。这才想起来官方 Windows 版里面不带 libpng,原来的版本里面 libpng 版本可能不对。去 bin 目录下面看果然发现 libpng 是 1.2 版本。下载新的 1.4 版本 libpng14-14.dll 替换搞定。
另外实际上 Emacs 显示 png 还需要 zlib1.dll。

补:现在24.4版本里面已经需要10612版。

所有的文件都可以在这里下载。

Sudoku Solution – Project Euler #96

This is a Python solution for Project Euler #96, to find the solution for sudokus.

The speed is modest (0.750s with pypy on Windows 7 @ i5 2.60GHz), but the code is relatively short and hopefully the idea is clear. Enjoy.
1. Find candidates for all items. If only one exists for a blank, fill it in.
2. Note down the blank with least but more than one candidates.
3. Copy the matrix and trial the candidates recursively until all blanks are filled.
Continue reading “Sudoku Solution – Project Euler #96”