JS Récursion
Julien
-
Julien -
Julien -
Bonjour,
j'ai réalisé un petit script en js concernant la résolution d'une grille de sudoku avec une fonction récursive.
La résolution fonctionne mais j'ai tout de même un problème:
Pour comprendre voici l'essentiel du script
et la fonction solve
Normalement quand je click sur le bouton j'ai devrais voir la grille de départ et ensuite la résolution se lance mais la il effectue la résolution et après il affiche la grille de départ (si je n'affiche rien dans la fonction solve), incroyable ...
Et pour finir même si je lui demande de mettre à jour la grille pendant la résolution il fait tout mais une fois la résolution terminée.
la seul solution que j'ai trouvé c'est de mettre un setTimeout pour le premier problème
et de faire une alert dans la fonction solve (que je bloque par la suite avec le navigateur)
et la sa fonctionne mais en contrepartie le temps de résolution devient incroyablement long.
Quelqu'un aurait une idée ?
Merci d'avance
j'ai réalisé un petit script en js concernant la résolution d'une grille de sudoku avec une fonction récursive.
La résolution fonctionne mais j'ai tout de même un problème:
Pour comprendre voici l'essentiel du script
window.onload=function() { // Exemple sudoku = '100006000050700003009020000040500300000090050000000074070800040600000800002001000'; document.getElementById("start").onclick = function() { // Initialisation du chrono var d = new Date(); start_time = d.getTime(); show2(sudoku); // Affichage de la grille de départ solve(sudoku); // Résolution de la grille // Affichage du chrono var d = new Date(); var secs = (d.getTime() - start_time)/1000; document.getElementById("chrono").value = secs+'s'; } }
et la fonction solve
function solve(su) { nb++; // Compteur /* ISOLER LES VARIABLES */ var _sud = su, _nsud, _sudlen = _sud.length, _sol = find_sol(_sud), _nsol, _isud, _listsol, _ils; if(_sol === false) return false; // Aucune solution _isud = _sol[0], _listsol = _sol[2]; for(_ils in _listsol) // Parcours des solutions de la case { _nsud = _sud.substr(0, _isud)+_listsol[_ils]+_sud.substr(_isud+1, _sudlen); //sudoku = _nsud; // Maj du sudoku global document.getElementById("s"+_isud).value = _listsol[_ils]; var test = solve(_nsud); if(nb_libre(_nsud) == 0 || test == true) // Le sudoku est complet { //show2(sudoku); return true; } document.getElementById("s"+_isud).value = 0; } return false; }
Normalement quand je click sur le bouton j'ai devrais voir la grille de départ et ensuite la résolution se lance mais la il effectue la résolution et après il affiche la grille de départ (si je n'affiche rien dans la fonction solve), incroyable ...
Et pour finir même si je lui demande de mettre à jour la grille pendant la résolution il fait tout mais une fois la résolution terminée.
la seul solution que j'ai trouvé c'est de mettre un setTimeout pour le premier problème
et de faire une alert dans la fonction solve (que je bloque par la suite avec le navigateur)
et la sa fonctionne mais en contrepartie le temps de résolution devient incroyablement long.
Quelqu'un aurait une idée ?
Merci d'avance
A voir également:
- JS Récursion
- La tentative de récursion de substitution d'image ✓ - Forum Windows
- Copiez l'image dans un logiciel d'édition d'images ou un outil en ligne comme js paint ou pixlr e. remplissez les cases en suivant le code couleur. des cases supplémentaires vont se remplir automatiquement. que représente le dessin ? ✓ - Forum Windows
- Arrondi js ✓ - Forum Windows
- La tentative de récursion de substitution d'image s'annule - Forum Logiciels
- Remplir une case de tableau avec une couleur grise avec texture de pointillés ✓ - Forum Photoshop