最近買了一個(gè)叫做“華容道”的玩具給兒子晚。這個(gè)游戲雖然號(hào)稱是中國(guó)四大古典智力游戲之一。其實(shí)不過百年歷史,而且是從國(guó)外引進(jìn)的。不過本地化做得非常好,也算是創(chuàng)造性地吸收國(guó)外文明。
手工解決這個(gè)游戲有點(diǎn)難度,當(dāng)然已經(jīng)有人給出了解法;不過我還是自己用編程的方式解決了一遍。發(fā)現(xiàn)自己在這方面的編程還是比較弱。大部分時(shí)間花在了調(diào)試上。
剛開始是用的深度優(yōu)先搜索。大致知道了答案應(yīng)該長(zhǎng)什么樣。后來改進(jìn)為廣度優(yōu)先搜索,得到了最優(yōu)的解法。還有一個(gè)就是原先只考慮每次最多移動(dòng)一格。后來發(fā)現(xiàn)傳統(tǒng)的定義是一個(gè)塊的所有連續(xù)移動(dòng)都算作一步。相應(yīng)地修改了實(shí)現(xiàn)算法。
最難的是做界面。為了調(diào)試,隨便寫了個(gè)Applet。但是給我兒子玩,就覺得拿不出手了。