內容目录

上一个主题

安装与使用

下一个主题

「逻辑」是什么?

本页

数独(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