### 瀏覽

- 索引
- 模組 |
- 下一頁 |
- 上一頁 |
- SudokuStudyLib 1.0 documentation »

# 數獨(Sudoku)基礎知識

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

## 一個典型的數獨題目

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

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

## 基本規則

數獨(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

### 瀏覽

- 索引
- 模組 |
- 下一頁 |
- 上一頁 |
- SudokuStudyLib 1.0 documentation »