AWK kakou du Sudoku


Objectif

A force de résoudre des tableaux du jeu de Sudoku, j'ai voulu écrire un petit programme qui me permettrait de vérifier mes résultats.
Mais tant qu'à me compliquer les méninges, j'ai décidé d'écrire ce programme en langage Awk

Principe

Le programme sudoku.awk permet par réitération de résoudre les inconnues d'un tableau de Sudoku.
Au départ du programme on crée un tableau des 9 valeurs possibles ( 0 à 9 ) pour chaque case du tableau de 9 lignes / 9 colonnes
Ensuite on supprime les valeurs impossibles suite aux valeurs initiales données.
Les règles sont simples

Exemple


Tableau initial






8
2







6

4
2


7

4

5

5


4
9

8

7


3



4


1

4

2
3


6

5

6

7


3
3

7







6

2







Tableau résultat

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

Présentation  sur la console

La présentation avec awk n'étant en rien graphique, vous allez devoir entrer le tableau initial sous la forme suivante avec un espace entre chaque caratère.

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

Le résultat sera présenté de la façon suivante

+-------------------------+--------------------------+--------------------------+
|                         |                          |                          |
|        |       |        |      3  |       |        |         |   2   |  1     | 
|     6  |  4    |        |         |   5   |        |         |       |        | 
|        |       |    9   |         |       |   8    |    7    |       |        | 
+  ---------------------  +  ----------------------  +  ----------------------  +
|        |    3  |        |         |  1    |   2    |         |       |        | 
|        |       |   5    |         |       |        |      6  |       |  4     | 
|   7    |       |        |      9  |       |        |         |   8   |        | 
+  ---------------------  +  ----------------------  +  ----------------------  +
|    2   |  1    |        |         |       |        |      3  |       |        | 
|        |       |        |         |    6  |  4     |         |   5   |        | 
|        |       |   8    |    7    |       |        |         |       |    9   | 
|                         |                          |                          |
+-------------------------+--------------------------+--------------------------+
|                         |                          |                          |
|        |   2   |        |         |       |  1     |         |    3  |        | 
|    5   |       |    6   |    4    |       |        |         |       |        | 
|        |       |        |         |    9  |        |     8   |       |  7     | 
+  ---------------------  +  ----------------------  +  ----------------------  +
|        |       |    3   |         |       |        |         |  1    |   2    | 
|        |       |        |     5   |       |    6   |    4    |       |        | 
|    8   |    9  |        |         |  7    |        |         |       |        | 
+  ---------------------  +  ----------------------  +  ----------------------  +
|   1    |       |        |         |   2   |    3   |         |       |        | 
|        |       |  4     |         |       |        |     5   |       |    6   | 
|        |  7    |        |     8   |       |        |         |    9  |        | 
|                         |                          |                          |
+-------------------------+--------------------------+--------------------------+
|                         |                          |                          |
|        |       |   2    |         |       |        |    1    |       |    3   | 
|        |   5   |        |      6  |       |        |         |  4    |        | 
|     9  |       |        |         |   8   |  7     |         |       |        | 
+  ---------------------  +  ----------------------  +  ----------------------  +
|     3  |       |        |    1    |       |        |     2   |       |        | 
|        |       |        |         |  4    |        |         |    6  |   5    | 
|        |   8   |  7     |         |       |    9   |         |       |        | 
+  ---------------------  +  ----------------------  +  ----------------------  +
|        |       |  1     |     2   |    3  |        |         |       |        | 
|   4    |    6  |        |         |       |   5    |         |       |        | 
|        |       |        |         |       |        |      9  |  7    |   8    | 
|                         |                          |                          |
+-------------------------+--------------------------+--------------------------+
Résolution en 6 passes

Utilisation

Télécharger les programmes et exemples dans un répertoire, ensuite depuis une console texte,
au besoin éditer le fichier d'exemple "sudoku.org" pour un nouveau tableau à traier, puis lancer


bash $ sh sodoku.sh

Téléchargement

Testez le !

Maintenant testez cette application, et retournez les problèmes, ou remarques que vous voudriez reporter  :  support CHEZ ogm-techno POINT org