2005年12月5日 星期一

數獨 (Sudoku)

幾週前看見公司同事拿著一本小冊子,專心的在上頭劃記一些數字,湊過去仔細瞧瞧,加上同事熱心解釋,這才生平第一次接觸到「數獨」這遊戲,但因為書只有一本,所以當時也只是了解了規則,而沒有實際解題經驗。

最近,自由時報新增了假日副刊,頭版就是兩個數獨題目,好奇心驅使下,連續做了兩週,覺得已經抓到解數獨的演算法,手癢的開始想寫個程式來迅速解決數獨題目。

昨晚,在 del.icio.us 上瀏覽最近有無好玩網站,發現有個名為 Sudoku 的 tag,連過去看了才知道,原來數獨就是 Sudoku。不但如此,速解數獨的演算法和程式,早就多如牛毛,根本不需要再開發了。

於是多花了點時間找找數獨的源起,看起來多數人都傾向於認為數獨的想法是源自 Graeco-Latin Squares,也就是在 NxN 矩陣中,填入 N 個符號,使得無論是行或列來看,每個符號都只出現一次。而數獨則是 Graeco-Latin Squares 的一個子集,設定 N=9,另外再將矩陣區分成 9 個 3x3 的矩陣,令其 3x3 矩陣中符號亦為 1-9。

據信在瑞士源起數獨這樣的構想,但到了 1970 末期,才由美國數學雜誌 Math Puzzles and Logic Problems 首次依據這樣的概念,刊登了名為 Number Place 的遊戲,可惜未造成風行。1980 年代,日本人鍜治真起,將該遊戲引進日本,並命名為「數獨」﹝Su Doku﹞,以及發行一本名為「數獨」的雜誌,接下來就在日本與世界各國風行起來了。

有興趣的朋友,可以在線上玩玩數獨。甚至可以自己製作一個數獨謎題給朋友玩玩。有個玩家看數字不過癮,動起腦筋求變,將數獨變形成圖形化,也非常有趣。而原本自己想撰寫的程式,呵呵,SourceForge 上已經有個現成的專案囉。

2 則留言:

  1. 昨玩隨手翻開報紙,看到了玩玩數獨版,從未看過它,也不知它是什麼,好奇心趨使我動手玩起它,剛開始完全不會,但後來漸漸駕輕就熟,越來越感興趣,於是就上網找題目來做,樂在其中。

    回覆刪除
  2. 我們有相同的經歷,都是從自由時報週末版中認識數獨,很高興認識你,把你加入我的郵件群組囉,日後將分享一些我覺得有意思的 email 給你。

    回覆刪除