內容目錄

上一個主題

安裝與使用

下一個主題

「邏輯」是甚麼?

本頁

數獨(Sudoku)基礎知識

數獨(Sudoku)是一種智力遊戲, 也是一種學習邏輯的最好工具. 而 Python 則是世界上最好的電腦程式語言之一. 所以如果能夠結合這兩種工具, 來教導小孩或青少年來學習邏輯的話, 那就是最好的組合. 這就是這個專案的緣起, 也是這個專案的目標.

一個典型的數獨題目

你可以從下列網站取得與學習數獨(sudoku)的相關知識:http://en.wikipedia.org/wiki/Sudoku

下面是一個典型的數獨題目:

 

下面是一個典型解出來的數獨:

sudoku_init   sudoku_result

基本規則

數獨(Sudoku)的基本規則非常簡單:

  1. 將數字 1-9 填到每一行(包含 x-way 及 y-way)及每一個 3x3 區塊。

  2. 每行及每個區塊的數字不能夠重複。

在一個 9x9 數獨中, 可以組成多少種可能的遊戲?

假如我們開始在位置 (1, 1) 中置放一個數, 那必然是有9個可能的數字讓我們選擇. 然後當我要置放第二個數到位置 (1, 2) 時, 那我們會有8個數字可以選擇. 所以, 以此類推, 從上往下, 從左到右, 我們可以寫下每一個位置可以被選擇的數字:

9! 6! 3! 6! 3! 1! 3! 1! 1!
9 6 3 6 3 1 3 1 1
8 5 2 5 2 1 2 1 1
7 4 1 4 1 1 1 1 1
6 3 1 3 1 1 1 1 1
5 2 1 2 1 1 1 1 1
4 1 1 1 1 1 1 1 1
3 1 1 1 1 1 1 1 1
2 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1

所以, 所有的組合就是 9!*6!*3!*6!*3!*1!*3!*1!*1* = 4,514,807,808,000

假如我們使用 python 來計算時:

>>> def n(x):
    if x==1:
        return 1
    else:
        return x*n(x-1)

>>> n(9)*n(6)*n(3)*n(6)*n(3)*n(1)*n(3)*n(1)*n(1)

關於數獨的數學知識, 你可以到下列網站來取得, http://en.wikipedia.org/wiki/Mathematics_of_Sudoku