2014年2月23日 星期日

JavaFX Sudoku

數獨 (Sudoku),日語為すうどく,源自於拉丁方陣 (Latin Square),拉丁方陣由瑞士數學家Leonhard Paul Euler以拉丁字母做為方陣中的元素而命名,拉丁方陣為一n階矩陣,在矩陣中恰有n種不同的元素,每一橫列或直行中同一元素只能出現一次,例如以下範例:
1895年法國報紙La France發表名為Carré Magique Diabolique的九階遊戲,與現在的數獨十分類似。1979年拉丁方陣在美國發展,由Howard GarnsNumber Place為名發表於Dell Magazines上。

1984Number Place流傳至日本,由ニコリ遊戲公司在其「パズル通信ニコリ」雜誌中首次發表,由其社長かじ まき (鍜治 真起) 將此遊戲命名為數獨 (すうどく),原文為「数字は独身に限る」,意思是每一格只能有一個數字鍜治 真起因此亦被稱為數獨之父。

1997年紐西蘭籍的香港高等法院法官Wayne Gould在日本旅遊時,無意間發現數獨,將其帶回英國,並於2004年首次刊登於The Times (泰晤士報),Wayne Gould並以電腦程式編寫數獨,發表於網站上,因此數獨很快就在全世界流行。

數獨於2005年由中國時報引進臺灣,於2009年成立臺灣數獨發展協會 (Taiwan Sudoku Association),並成為世界解謎聯盟(World Puzzle Federation)的會員之一。此外,尤怪之家為臺灣有關數獨資源最豐富的網站,網站並提供相當多的數獨遊戲與討論數獨的解題方法,相當值得參考。 

最早的數獨為一種九階方格的填數字遊戲,並分成九等份,每一等份由3×3的格子組成,遊戲規則很簡單,每一格子只能填入1至9其中一個數字,此外,每一數字在橫列、直行與3×3格子也只能出現一次。 

數獨盛行多年,發展出一系列的解題方法,依據臺灣數獨發展協會與尤怪之家的整理,包括直觀法、餘數法、摒餘法、唯一法、二餘法、三餘法、四餘法、數對唯餘法、數對摒除法、雙候選數佔位法、區塊數對唯餘法、宮摒餘法、行列摒餘法、基礎摒除法、區塊摒除法、單元摒除法、矩形摒除法等,相當豐富。 

數獨發展至今,有以下之變形: 

  • 迷你數獨 (Mini Sudoku):由六階方格所組成,並分成六等份,每一等份由3×2的格子組成。
  • 殺手數獨 (Killer Sudoku):與數獨同為與九階方格的填數字遊戲,並分成九等份,每一等份由3×3的格子組成,殺手數獨並結合數獨與數和 (Kakuro,日語為カックロ) 遊戲。
  • 字母數獨 (Alphabetical Sudoku):又稱為Wordoku,將數字改為英文字母,特殊之處在於除了需符合數獨的基本規則之外,最後必須在其對角線找出正確的英文單字。
  • 超數獨 (Hypersudoku):與數獨同為與九階方格的填數字遊戲,並分成九等份,每一等份由3×3的格子組成,除了需符合數獨的基本規則之外,此外,每一數字在額外的3×3顏色格子也只能出現一次。
  • 巨形數獨 (Dodeka Sudoku):由九階方格組成,並分成十二等份,每一等份由4×3的格子組成,其餘規則如同傳統數獨。
  • 武士數獨 (Samurai Sudoku):由41個3×3的格子組成。 

數獨沒有牽涉到很複雜的數學,僅需要單純的直覺邏輯推理則可完成,因此很適合各年齡層的玩家。

自2009年筆者買了第一支iPod Touch之後,數獨一直是我最喜歡的遊戲,我深信常玩數獨會減少老人癡呆症罹患的機率,我也一直希望能自己寫一個數獨遊戲。

數獨是一個典型的矩陣遊戲,此次以JavaFX設計數獨,並以Apple iPad的Sudoku為範本,難度分為Novice, Easy, Medium, Hard與Master。
Level: Hard

Example: Link

© Chia-Hui Huang

沒有留言:

張貼留言