Question sudoku solver V2

Plus d'informations
il y a 5 ans 2 mois #24343 par crogiez
sudoku solver V2 a été créé par crogiez
bonjour
moi, j'aime les sudoku
personne n'est parfait !!

je résous niveau +10
j'ai récupérer le solver de Jean Luc Moreau

www.powershell-scripting.com/index.php?o...;id=194&Itemid=2

je suis en train de l'améliorer
pour avoir un compte rendu explicite
sur la façon de résoudre

aie ! ya une procédure récursive
qui s’exécute plus d'une centaine de fois

est ce que çà vous interesse ?

bisoux<br><br>Message édité par: crogiez, à: 3/10/17 15:20

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #24346 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:sudoku solver
Hello !!

Bien sûr que ça nous intéresse :woohoo:

N'hésite pas à poster ta version ici, dans ce forum.

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ou d'un conseil ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #24351 par crogiez
Réponse de crogiez sur le sujet Re:sudoku solver
bien le bonjour mrs dames

j'ai envoyé mail à jean luc
mais pas de réponse

je suis rentré dans son code
je ne modifie pas la methode
j'ameliore juste la presentation
et les messages de relosution

quand un sudoku est tres dur à resoudre
le bon chemin cest decrire tous les candidats possibles
alors on voit des relations
et chiffres impossibles dans certaines cases
au fur et à mesure on elimine
et on trouve
çà peut durer 24H

le prog de JLM permet de saisir un sudoku \&quot;dur\&quot;
d'afficher automatiquement les candidats
et de tester certaines methodes
pour enfin éliminer certains chiffres

il faut connaitre plusieurs methodes pour résoudre
et plusieurs façon de chercher
JLM à retranscris ces methodes en script
là je dis chapeau bas
au moins 1 mois de boulot

moi j'ai deja du mal à comprendre les méthodes
et à trouver les eliminations

cest pourquoi j'ai ajouté des messages
apres chaque chiffre trouvé et exclusion trouvée

exemple
.
106|090|082
000|302|700
320|500|046
---+---+---
860|019|030
004|000|200
010|470|068
---+---+---
540|008|079
009|105|000
280|030|604
.

Appel CheckAllCells
Appel VerifChoixUnique
Candidat Unique 7
Ligne 1 Colonne 4 : Insertion de 7
.
106|790|082
000|302|700
320|500|046
---+---+---
860|019|030
004|000|200
010|470|068
---+---+---
540|008|079
009|105|000
280|030|604
.

bon j'y retourne
A+<br><br>Message édité par: crogiez, à: 3/10/17 09:23

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #24354 par crogiez
Réponse de crogiez sur le sujet Re:sudoku solver
çà se précise

il y a 3 script
- pour remplir une grille
- pour lancer une resolution =&gt; log
- fonctions de resolutions

pour dialoguer entre les scripts
il a utilisé $script:

le plus dur c'est de faire une log
pour une procedure recursive
un truc qui tourne +7000 fois
et faut retenir que la bonne solution
mais je suis plus un débutant ;-)

je fais du basic depuis le 8086
à cette époque, c'était des K7 !!!

une petite log recursive (en bas)

Traitement du fichier
grille initiale =009006080080509300100000000000000003270800900000000210406007090930050000000040700

mardi 3 octobre 2017 15:19:50
.
009|006|080
080|509|300
100|000|000
---+---+---
000|000|003
270|800|900
000|000|210
---+---+---
406|007|090
930|050|000
000|040|700
.
.
Appel CheckAllCells
Appel VerifChoixUnique
Appel VerifCaseUniqueR
Candidat Unique caché 9
Ligne 3 Colonne 9 : Insertion de 9
.
009|006|080
080|509|300
100|000|009
---+---+---
000|000|003
270|800|900
000|000|210
---+---+---
406|007|090
930|050|000
000|040|700
.
Candidat Unique caché 7
Ligne 8 Colonne 3 : Insertion de 7
.
009|006|080
080|509|300
100|000|009
---+---+---
000|000|003
270|800|900
000|000|210
---+---+---
406|007|090
937|050|000
000|040|700
.
Candidat Unique caché 9
Ligne 9 Colonne 4 : Insertion de 9
.
009|006|080
080|509|300
100|000|009
---+---+---
000|000|003
270|800|900
000|000|210
---+---+---
406|007|090
937|050|000
000|940|700
.
.
Appel CheckAllCells
Appel VerifChoixUnique
Appel VerifCaseUniqueR
Appel VerifCaseUniqueC
Candidat Unique caché 3
Ligne 9 Colonne 8 : Insertion de 3
.
009|006|080
080|509|300
100|000|009
---+---+---
000|000|003
270|800|900
000|000|210
---+---+---
406|007|090
937|050|000
000|940|730
.
.
Appel CheckAllCells
Appel VerifChoixUnique
Appel VerifCaseUniqueR
Candidat Unique caché 6
Ligne 9 Colonne 9 : Insertion de 6
.
009|006|080
080|509|300
100|000|009
---+---+---
000|000|003
270|800|900
000|000|210
---+---+---
406|007|090
937|050|000
000|940|736
.
.
Appel CheckAllCells
Appel VerifChoixUnique
Appel VerifCaseUniqueR
Candidat Unique caché 6
Ligne 8 Colonne 4 : Insertion de 6
.
009|006|080
080|509|300
100|000|009
---+---+---
000|000|003
270|800|900
000|000|210
---+---+---
406|007|090
937|650|000
000|940|736
.
.
Appel CheckAllCells
Appel VerifChoixUnique
Appel VerifCaseUniqueR
Appel VerifCaseUniqueC
Appel VerifCaseUniqueM
Appel VerifNPaireR
Appel VerifHPaireR
Appel VerifNPaireC
Appel VerifHPaireC
Appel VerifNPaireM
Appel VerifHPaireM
Appel VerifVerrou1R
Verrou ligne type 1 avec Filtrage 8
Ligne 9 Colonne 6 Exclusion de 8
.
Appel CheckAllCells
Appel VerifChoixUnique
Appel VerifCaseUniqueR
Appel VerifCaseUniqueC
Appel VerifCaseUniqueM
Appel VerifNPaireR
Appel VerifHPaireR
Appel VerifNPaireC
Appel VerifHPaireC
Appel VerifNPaireM
Appel VerifHPaireM
Appel VerifVerrou1R
Verrou ligne type 1 avec Filtrage 5
Ligne 7 Colonne 2 Exclusion de 5
.
Appel CheckAllCells
Appel VerifChoixUnique
Appel VerifCaseUniqueR
Appel VerifCaseUniqueC
Appel VerifCaseUniqueM
Appel VerifNPaireR
Appel VerifHPaireR
Appel VerifNPaireC
Appel VerifHPaireC
Appel VerifNPaireM
Appel VerifHPaireM
Appel VerifVerrou1R
Appel VerifVerrou1C
Appel VerifVerrou2R
Appel VerifVerrou2C
Appel VerifNTripletR
Appel VerifNTripletC
Appel VerifNTripletM
Appel VerifNQuadR
Appel VerifNQuadC
Appel VerifNQuadM
Appel VerifModeleXR
Appel VerifModeleXC
Appel VerifModeleXY
Appel VerifSwordfishR
Appel VerifSwordfishC
Appel VerifCouleurs
Appel VerifMCouleurs
Couleurs multiples avec Filtrage 6
Ligne 4 Colonne 1 Exclusion de 6
.
Appel CheckAllCells
Appel VerifChoixUnique
Appel VerifCaseUniqueR
Appel VerifCaseUniqueC
Appel VerifCaseUniqueM
Appel VerifNPaireR
Appel VerifHPaireR
Appel VerifNPaireC
paire nue 58 en colonne 1
Ligne 1 Colonne 1 Exclusion de 5
paire nue 58 en colonne 1
Ligne 6 Colonne 1 Exclusion de 5
paire nue 58 en colonne 0
Ligne 6 Colonne 1 Exclusion de 8
.
Appel CheckAllCells
Appel VerifChoixUnique
Appel VerifCaseUniqueR
Appel VerifCaseUniqueC
Appel VerifCaseUniqueM
Appel VerifNPaireR
Appel VerifHPaireR
Appel VerifNPaireC
Appel VerifHPaireC
Appel VerifNPaireM
Appel VerifHPaireM
Appel VerifVerrou1R
Appel VerifVerrou1C
Appel VerifVerrou2R
Appel VerifVerrou2C
Appel VerifNTripletR
Appel VerifNTripletC
Appel VerifNTripletM
Appel VerifNQuadR
Appel VerifNQuadC
Appel VerifNQuadM
Appel VerifModeleXR
Appel VerifModeleXC
Appel VerifModeleXY
Appel VerifSwordfishR
Appel VerifSwordfishC
Appel VerifCouleurs
Appel VerifMCouleurs
resolu par essais successifs
.
359|426|187
784|519|362
162|783|549
---+---+---
841|295|673
273|861|954
695|374|218
---+---+---
426|137|895
937|658|421
518|942|736
.
Tentatives du solveur récursif = 7874
Echecs du solveur récursif = 7823
Status de résolution = True
Temps ecoule = 00:00:03.2853512
Echelle de difficulté = 29
grille résolue =359426187784519362162783549841295673273861954695374218426137895937658421518942736
.
Ligne 1 Colonne 1 jessaye 3
Ligne 1 Colonne 2 jessaye 2
Ligne 1 Colonne 2 jessaye 4
Ligne 1 Colonne 2 jessaye 5
Ligne 1 Colonne 4 jessaye 1
Ligne 1 Colonne 4 jessaye 2
Ligne 1 Colonne 4 jessaye 4
Ligne 1 Colonne 5 jessaye 1
Ligne 1 Colonne 5 jessaye 2
Ligne 1 Colonne 7 jessaye 1
Ligne 1 Colonne 9 jessaye 7
Ligne 2 Colonne 1 jessaye 6
Ligne 2 Colonne 1 jessaye 7
Ligne 2 Colonne 3 jessaye 2
Ligne 2 Colonne 3 jessaye 4
Ligne 2 Colonne 5 jessaye 1
Ligne 2 Colonne 8 jessaye 2
Ligne 2 Colonne 8 jessaye 6
Ligne 2 Colonne 9 jessaye 2
Ligne 3 Colonne 2 jessaye 2
Ligne 3 Colonne 2 jessaye 6
Ligne 3 Colonne 3 jessaye 2
Ligne 3 Colonne 4 jessaye 3
Ligne 3 Colonne 4 jessaye 7
Ligne 3 Colonne 5 jessaye 3
Ligne 3 Colonne 5 jessaye 8
Ligne 3 Colonne 6 jessaye 3
Ligne 3 Colonne 7 jessaye 4
Ligne 3 Colonne 7 jessaye 5
Ligne 3 Colonne 8 jessaye 4
Ligne 4 Colonne 1 jessaye 5
Ligne 4 Colonne 1 jessaye 8
Ligne 4 Colonne 2 jessaye 1
Ligne 4 Colonne 2 jessaye 4
Ligne 4 Colonne 3 jessaye 1
Ligne 4 Colonne 4 jessaye 2
Ligne 4 Colonne 5 jessaye 6
Ligne 4 Colonne 5 jessaye 7
Ligne 4 Colonne 5 jessaye 9
Ligne 4 Colonne 6 jessaye 5
Ligne 4 Colonne 7 jessaye 6
Ligne 4 Colonne 8 jessaye 7
Ligne 5 Colonne 3 jessaye 3
Ligne 5 Colonne 5 jessaye 6
Ligne 5 Colonne 6 jessaye 1
Ligne 5 Colonne 8 jessaye 5
Ligne 5 Colonne 9 jessaye 4
Ligne 6 Colonne 1 jessaye 6
Ligne 6 Colonne 2 jessaye 9
Ligne 6 Colonne 3 jessaye 5
Ligne 6 Colonne 4 jessaye 3
Ligne 6 Colonne 5 jessaye 7
Ligne 6 Colonne 6 jessaye 4
Ligne 6 Colonne 9 jessaye 8
Ligne 7 Colonne 2 jessaye 1
Ligne 7 Colonne 2 jessaye 2
Ligne 7 Colonne 4 jessaye 1
Ligne 7 Colonne 5 jessaye 3
Ligne 7 Colonne 7 jessaye 8
Ligne 7 Colonne 9 jessaye 5
Ligne 8 Colonne 6 jessaye 2
Ligne 8 Colonne 6 jessaye 8
Ligne 8 Colonne 7 jessaye 4
Ligne 8 Colonne 8 jessaye 2
Ligne 8 Colonne 9 jessaye 1
Ligne 9 Colonne 1 jessaye 5
Ligne 9 Colonne 2 jessaye 1
Ligne 9 Colonne 3 jessaye 8
Ligne 9 Colonne 6 jessaye 2
.
359|426|187
784|519|362
162|783|549
---+---+---
841|295|673
273|861|954
695|374|218
---+---+---
426|137|895
937|658|421
518|942|736
.
03/10/2017 15:19:54
Version 1 Jean Luc MOREAU
Version 2 Philippe CROGIEZ

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #24355 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:sudoku solver
Salut Philippe !

Je ne suis pas sûr de comprendre tout ce que tu fais mais ça se précise on dirait !? :)

Une époque lointaine que j'ai connu également le Basic ! Personnellement j'ai commencé mon apprentissage de la programmation en Basic sur Amstrad CPC 464 (K7). C'était en 1984, j'avais 10 ans :blink:

@+
Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ou d'un conseil ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #24356 par crogiez
Réponse de crogiez sur le sujet Re:sudoku solver
bonjour

but1 : comprendre le code

but2 : voir si tout fonctionne
là je trouve des trucs bizarres
JLM devait avoir une seule façon de s'en servir
il y a une dizaine de grilles résolues

moi je veux plusieurs façons
- saisir une grille
- utiliser les outils pour résoudre visuellement
si on trouve pas,
si on bloque
- lancer une recherche de résolution
- avoir un compte rendu sur la façon de résoudre
pour apprendre à résoudre mieux et plus

j'y suis presque

but3 :
la résolution utilise
-plusieurs recherches logiques basées sur théories
-une proc récursive qui essaie toute les possibilités
jusqu'à trouver la bonne et unique

en pratique, çà revient à utiliser la \&quot;gomme\&quot;
on écrit au crayon,
si çà marche pas, on gomme,
et on recommence avec un autre chiffre
=pas drôle

exemple :
grille résolue =359426187784519362162783549841295673273861954695374218426137895937658421518942736
.
Ligne 1 Colonne 1 jessaye 3 &lt;= ousp trouvé
Ligne 1 Colonne 2 jessaye 2 &lt;= pas bon
les recherches suivantes avec ce chiffre
sont cachées, perdues, on s'en fou, puisque pas bon
Ligne 1 Colonne 2 jessaye 4 &lt;= pas bon
Ligne 1 Colonne 2 jessaye 5 &lt;= oups trouvé
Ligne 1 Colonne 4 jessaye 1
Ligne 1 Colonne 4 jessaye 2
Ligne 1 Colonne 4 jessaye 4 &lt;= oups trouvé
Ligne 1 Colonne 5 jessaye 1

résumé
Ligne 1 Colonne 1 jessaye 3 &lt;= ousp trouvé
Ligne 1 Colonne 2 jessaye 5 &lt;= oups trouvé
Ligne 1 Colonne 4 jessaye 4 &lt;= oups trouvé
correspond à
grille résolue =3594261...

donc là j'ai une log de la proc récursive

but4 :
ajouter d'autres fonctions
basées sur les théories
et les transcrire en code
c'est mieux q'une résolution par essai successifs
même si le truc fonctionne en quelques secondes
çà c'est bleffant !!!

bixoux

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.075 secondes
Propulsé par Kunena