Aller au contenu

yuuzhantar

Actif
  • Compteur de contenus

    11
  • Inscrit(e) le

  • Dernière visite

Réputation sur la communauté

0 Neutre
  1. bonjour je voudrais savoir si il existe un moyen de créer un script qui génère des mots ( même si ils sont incompréhensibles ) je pense déjà savoir ce qu'il lui faut mais je ne sais pas comment l'écrire une liste de caractères une longueur de mot voila après se serait comme un compteur il ferait toutes les combinaisons possibles de 3 caractères de longueur avec les caractères disponibles voila se qu'il ferait aaa aab aac aad aae aaf aba abb abc abd abe abf aca acb ... est ce possible ??? merci d'avance pour votre aide yann
  2. yuuzhantar

    sudoku et mysql

    je voudrais savoir si il est possible de le modifier un petit peu pour pouvoir extraire deux variables : $sudoku = 4987431637814 ... ( tous les chiffres du sudoku à la suite par ligne ) et $masque = 01001101101100 ... ( pareil que pour $sudoku mais avec 0 masqué et 1 affiché ) par ce que je voudrais faire avec ceci du traitement mysql mais le script est trop compliqué pour moi merci d'avance pour votre aide yann
  3. yuuzhantar

    sudoku et mysql

    Bonjour j'ai trouvé ce code sur internet http://www.asp-php.net/ressources/bouts_de_code.php?id=681 <HEAD> <TITLE>Su-Duku en PHP</TITLE> <META name="author" content="Tedheu"> <STYLE type="text/css"> BODY, TD { font: normal 12px verdana,arial; color: navy; line-height: 14px;} </STYLE> </HEAD> <BODY> <H3>Création de grilles Su-Doku en PHP</H3> <HR> <!-- code PHP --> <? print " --> <BR>\n"; /********* les variables *************/ // grille 'SuDoku', caractères de "1" à "9", case $i,$j $Grille = array(); // masque de la grille: 0 = non masquable, 1 = la case peut être masquée $Masque = array(); // loterie est une chaine de caractères pour le tirage des cases restantes $loterie = ""; // variable collision pour tester le cas où on tirerais la même case $collision = 0; // la grille est divisée en 9 régions, 9 lignes et 9 colonnes // les tableaux $Reg,$Lgn,$Col sont indexés 'numéro,chiffre' ($n,$m m=chiffre-1) // les valeurs sont des chaines de caractères indiquant les positions possibles $Reg = array(); $Lgn = array(); $Col = array(); // /********* fonctions *************/ function initialisation(){ global $Grille ,$Masque ,$loterie ,$collision; global $Reg, $Lgn, $Col; $loterie = ""; $collision = 0; // iniatisation, grille et masque, d'abord initialisée à '0' for ($i=0; $i<=8; $i++){ for ($j=0; $j<=8; $j++){ $Grille[$i][$j] = "0"; $Masque[$i][$j] = 0; $loterie = $loterie.chr(97+$i).chr(48+$j); } } // Au début toutes les positions sont possibles for ($n=0; $n<=8; $n++){ for ($m=0; $m<=8; $m++){ $Reg[$n][$m] = "012345678"; $Lgn[$n][$m] = "012345678"; $Col[$n][$m] = "012345678"; } } } // function elimination($i,$j,$m){ global $Grille ,$Masque ,$loterie ,$collision; global $Reg, $Lgn, $Col; // case $i,$j , chiffre= $m+1 // élimination du chiffre en mettant les positions possibles à rien (= "") $n = floor($i/3)*3+floor($j/3); // région concernée numéro $n $Reg[$n][$m] = ""; $n = $i; // ligne concernée numéro $n $Lgn[$n][$m] = ""; $n = $j; // Colonne concernée numéro $n $Col[$n][$m] = ""; // élimination sélective des positions possibles dans les régions voisines for($n=0; $n<=8; $n++){ for ($p=0; $p<=8; $p++){ // $p est la position d'une case dans une région // position de la case en coordonnées 'grille', $ic,$jc $ic = floor($n/3)*3+floor($p/3); $jc = ($n-floor($n/3)*3)*3+($p-floor($p/3)*3); if ($ic==$i OR $jc==$j){ $posi = Chr(48+$p); $Reg[$n][$m] = str_replace($posi,"",$Reg[$n][$m]); } } } // élimination sélective des positions possibles dans les lignes voisines $posi = chr(48+$j); for($n=0; $n<=8; $n++){ $Lgn[$n][$m] = str_replace($posi,"",$Lgn[$n][$m]); } // élimination sélective des positions possibles dans les colonnes voisines $posi = chr(48+$i); for($n=0; $n<=8; $n++){ $Col[$n][$m] = str_replace($posi,"",$Col[$n][$m]); } // élimination sélective des positions possibles, lignes-colonnes/région $n = floor($i/3)*3+floor($j/3); // région concernée numéro $n for($p=0; $p<=8; $p++){ // position de la case en coordonnées 'grille', $ic,$jc $ic = floor($n/3)*3+floor($p/3); $jc = ($n-floor($n/3)*3)*3+($p-floor($p/3)*3); $posi = chr(48+$jc); $Lgn[$ic][$m] = str_replace($posi,"",$Lgn[$ic][$m]); $posi = chr(48+$ic); $Col[$jc][$m] = str_replace($posi,"",$Col[$jc][$m]); } // élimination de la position occupée quelque soit le chiffre for($mc=0; $mc<=8; $mc++){ // régions (la région concernée, numéro $n) $n = floor($i/3)*3+floor($j/3); $p = ($i-floor($i/3)*3)*3+($j-floor($j/3)*3); $posi = chr(48+$p); $Reg[$n][$mc] = str_replace($posi,"",$Reg[$n][$mc]); // lignes $posi = chr(48+$j); $Lgn[$i][$mc] = str_replace($posi,"",$Lgn[$i][$mc]); // colonnes $posi = chr(48+$i); $Col[$j][$mc] = str_replace($posi,"",$Col[$j][$mc]); } } // function affectation($i,$j,$m,$D){ global $Grille ,$Masque ,$loterie ,$collision; if ($Grille[$i][$j]== "0"){ $Grille[$i][$j]= chr(48+$m+1); $posi = chr(97+$i).chr(48+$j); $loterie = str_replace($posi,"",$loterie); elimination($i,$j,$m); if ($D== "1") $Masque[$i][$j]= 1; } else{ $collision++; } } /********* boucle *************/ $tentative = 0; $tentative_max = 10; initialisation(); while (strlen($loterie)>0 AND $tentative<$tentative_max){ $tentative++; initialisation(); $iter = 0; $itermax = 82; while ($loterie<>"" AND $iter<$itermax){ $iter++; // placement déterministe d'un chiffre dans une case $bingo = 0; for ($n=0; $n<=8; $n++){ for ($m=0; $m<=8; $m++){ // en premier les régions if (strlen($Reg[$n][$m])== 1){ $p = ord($Reg[$n][$m])-48; $i = floor($n/3)*3+floor($p/3); $j = ($n-floor($n/3)*3)*3+($p-floor($p/3)*3); affectation($i,$j,$m,"1"); $bingo = 1; break; } // en second les lignes if (strlen($Lgn[$n][$m])== 1){ $p = ord($Lgn[$n][$m])-48; $i = $n; $j = $p; affectation($i,$j,$m,"1"); $bingo = 1; break; } // en troisième les colonnes if (strlen($Col[$n][$m])== 1){ $p = ord($Col[$n][$m])-48; $i = $p; $j = $n; affectation($i,$j,$m,"1"); $bingo = 1; break; } } if ($bingo== 1) break; } // placement par tirage au sort, si le placement déterministe n'a pas abouti if ($bingo== 0){ // tirage d'une case $i,$j parmis les cases libres $ncase2 = strlen($loterie); $ncase = strlen($loterie)/2; $index = rand(0,$ncase-1)*2; $posi = substr($loterie,$index,2); // détermination des coordonnées de la case: $i,$j $i = ord(substr($posi,0))-97; $j = ord(substr($posi,1))-48; // tirage d'un chiffre parmis les chiffres libres $liste = ""; for ($m=0; $m<=8; $m++){ $libre = 1; // régions $n = floor($i/3)*3+floor($j/3); if ($Reg[$n][$m]== "") $libre = 0; // lignes $n = $i; if ($Lgn[$n][$m]== "") $libre = 0; // colonnes $n = $j; if ($Col[$n][$m]== "") $libre = 0; // concaténation if ($libre== 1) $liste = $liste.chr(48+$m); } if (strlen($liste)>0){ $m = ord(substr($liste,floor(rand(0,strlen($liste)-1))))-48; affectation($i,$j,$m,"0"); } } } } /************* fin de la boucle *******************************************/ if (strlen($loterie)== 0){ if ($tentative== 1){ print("Une grille a été trouvée dès la première tentative .... <BR>\n"); } else{ print("Une grille a été trouvée après $tentative tentatives .... <BR>\n"); } } else{ print("Désolé, la recherche d'une grille a échouée après les $tentative_max tentatives.<BR>\n"); print("Il reste des cases non résolues <I>(case \"0\" sur fond jaune)</I>.<BR>\n"); print("(<I style=color:green> rechargez ou actualisez la page (F5) pour un autre essais </I>)<BR>\n"); } ?> <BR> <h4 align="left" style=color:blue>Affichage de la grille</H4> <? // Affichage de la grille $nalea = 0; print("<TABLE border=1>\n"); for ($ri=0; $ri<=2; $ri++){ print("<TR>\n"); for ($rj=0; $rj<=2; $rj++){ print("<TD>\n"); print("<TABLE border=1>\n"); for ($ii=0; $ii<=2; $ii++){ print("<TR>\n"); for ($jj=0; $jj<=2; $jj++){ // calcul de ($i,$j) $i = $ri*3+$ii; $j = $rj*3+$jj; If ($Grille[$i][$j]== "0"){ print("<TD style=font-size:15px bgcolor=yellow><B>".$Grille[$i][$j]."</B></TD>\n"); } else{ If ($Masque[$i][$j]== 1){ print("<TD style=font-size:15px><B style=color:ddd>".$Grille[$i][$j]."</B></TD>\n"); } else{ $nalea++; print("<TD style=font-size:15px><B>".$Grille[$i][$j]."</B></TD>\n"); } } } print("</TR>\n"); } print("</TABLE>\n"); print("</TD>\n"); } print("</TR>\n"); } print("</TABLE>\n"); print("nombre de cases mimimun obtenues $nalea <BR>\n"); ?> <BR>Les chiffres en grisé peuvent être retirés,<BR> totalement ou en partie suivant le niveau de difficulté recherchée.<BR> (<I style=color:purple>niveau 1 = 42 cases, niveau 2 = 36 cases, ...</I>)<BR> <HR> Tedheu, Générateur de grilles de Su-Doku en PHP, version 1, 24-04-2006 <HR style="color: red" width="500" align="left"> </BODY> </HTML>
  4. yuuzhantar

    sudoku

    ah j'ai trouvé un nouveau script sudoku en php http://pagesperso.laposte.net/ttu/sudoku.php ou peut on trouver dedans les chiffres du sudoku ????
  5. yuuzhantar

    sudoku

    Je suis en train de préparer un jeu de sudoku en ligne, c'est pour sa que je vous demande ceci
  6. yuuzhantar

    sudoku

    voila je crois m'être assez bien expliqué
  7. yuuzhantar

    sudoku

    en fait, voila le code PHP: <html> <head> <title>Untitled Document</title> </head> <body> <? if(!$niveau = @$_COOKIE["niveau"]) $niveau = 5; if($tmp = @$_GET["niveau"]) { $niveau = max(2,min(8,$niveau+$tmp)); setcookie("niveau",$niveau); } ?> <html><body> <div align=center> <? // Chargement $tmp = _AT_file("sudoku.txt"); if($tmp) { $nb = sizeof($tmp); $n = @$_GET["n"]; if(!@$tmp[$n]) $n=$nb-1; // Choix de la grille $ligne = trim($tmp[$n]); $sudoku=unserialize($ligne); $sudoku2=$sudoku; // Application du masque if(!@$_GET["soluce"]) { $liste = range(0,8); for($i=0;$i<9;$i++) { // pour chaque grille 3x3 $niv = rand($niveau-1,$niveau+1); shuffle($liste); for($j=0;$j<$niv;$j++) $sudoku[$i][$liste[$j]] = ""; } } // Affichage ?> <style> td.s { font:normal 18pt verdana } A { text-decoration:none } A.hover { text-decoration:underline } .f7 { font:normal 7pt Verdana } </style> <script language="JavaScript"> sauve=""; sauve3 = new Array(); function drawcase() { tmp = sauve.id.split("-"); mem = sauve3[tmp[0]*9+tmp[1]]+""; if(mem=="undefined") mem=""; if(mem=="") tmp2 = " "; else { if(mem.length==1) tmp2 = "<font color=red>"+mem+"</font>"; else { tmp2 = "<table cellspacing=0 cellpadding=0 border=0>"; for(i=0;i<2;i++) { tmp2+="<tr>"; for(j=0;j<4;j++) { t = i*4+j; tmp2+="<td class=f7>"+String.fromCharCode(mem.charCodeAt(t))+"</td>"; } tmp2+="</tr>"; } tmp2 += "</table>"; } } sauve.innerHTML = tmp2; } function drawgrid() { tmp = sauve.id.split("-"); mem = sauve3[tmp[0]*9+tmp[1]]+""; if(mem=="undefined") mem=""; for(i=1;i<10;i++) { ch = String.fromCharCode(i+4; if(mem.indexOf(ch)>=0) document.getElementById("j"+i).style.background="yellow"; else document.getElementById("j"+i).style.background=""; } } function soluce() { tmp = sauve.id.split("-"); sauve3[tmp[0]*9+tmp[1]]=sauve.s; drawcase(); drawgrid(); } function joue(lacase) { if(sauve!="") sauve.style.background=""; sauve=lacase; lacase.style.background="yellow"; lejeu = document.getElementById("jeu"); tmp = sauve.id.split("-"); mem = sauve3[tmp[0]*9+tmp[1]]+""; if(mem=="undefined") mem=""; drawgrid(); lejeu.style.visibility="visible"; } function store(n) { tmp = sauve.id.split("-"); ch = String.fromCharCode(n+4; mem = sauve3[tmp[0]*9+tmp[1]]+""; if(mem=="undefined") mem=""; t = mem.indexOf(ch) if(t>=0) { t2 = mem.split(""); t2[t]=""; mem = t2.join(""); } else mem+=ch; sauve3[tmp[0]*9+tmp[1]]=mem; drawcase(); drawgrid(); } </script> <h1>Sudoku</h1> <table><tr><td width=50 nowrap> <div id="jeu" style="visibility:hidden"> <table style="cursor:help" width=45><tr> <th id=j1 onclick=store(1)>1</th> <th id=j2 onclick=store(2)>2</th> <th id=j3 onclick=store(3)>3</th> </tr><tr> <th id=j4 onclick=store(4)>4</th> <th id=j5 onclick=store(5)>5</th> <th id=j6 onclick=store(6)>6</th> </tr><tr> <th id=j7 onclick=store(7)>7</th> <th id=j8 onclick=store(>8</th> <th id=j9 onclick=store(9)>9</th> </tr><tr> <th colspan=3 ><A href="java script:;" onClick="soluce()">Soluce</A></th> </tr></table> </div> </td><td align=center> <table border=0> <? for($i=0;$i<3;$i++) { ?> <tr> <? for($j=0;$j<3;$j++) { ?> <td><table align=center border=1 cellspacing=0 width=100%> <? for($k=0;$k<3;$k++) { ?> <tr> <? for($l=0;$l<3;$l++) { ?> <td class=s align=center width=30 nowrap <? $id = ($i*3+$j)."-".($k*3+$l); echo "id='".$id."' "; $tmp=@$sudoku[$i*3+$j][$k*3+$l]; if(!$tmp) { echo "style='cursor:help' "; echo "title='Cliquer pour jouer' "; echo "onclick=joue(this) "; echo "s='".@$sudoku2[$i*3+$j][$k*3+$l]."'"; } ?>><b><? echo ($tmp)?$tmp:" "; ?></b></td> <? } ?> </tr> <? } ?> </table></td> <? } ?> </tr> <? } ?> </table> <table width=300><tr> <td> <A href="?n=<?=$n?>&niveau=-1">-</A> <A href="?n=<?=$n?>">Niveau <?=$niveau?></A> <A href="?n=<?=$n?>&niveau=1">+</A> </td><td align=right> <?if($n>1) { ?><A href="?n=0">|<</A> <? } ?> <?if($n) { ?><A href="?n=<?=$n-1?>"><</A> <? } ?> <i>Grille n° <?=($n+1)?></i> <?if($n<$nb-1) { ?> <A href="?n=<?=$n+1?>">></A> <? } ?> <?if($n<$nb-2) { ?><A href="?n=<?=$nb-1?>">>|</A> <? } ?> </td> </tr></table> <button onClick="window.print();">Imprimer</button> <button onClick="location.replace('?n=<?=$n?>&soluce=1')">Solution</button> </td></tr></table> <? } else { $search = 1;?> Création d'une grille en cours... <? } ?> <br /> <iframe src="sudoku.php?search=<?=@$search?>" frameborder=no /> </div> </body></html> </body> </html> <html> <head> <title>Untitled Document</title> </head> <body> <? $TempsMax = 5; // 5 secondes semblent suffire $Temps = time(); // Propose un carré pour compléter la ligne function complete_h($c1,$c2) { $t = range(1,9); $r1 = array($c1[0],$c1[1],$c1[2],$c2[0],$c2[1],$c2[2]); $r2 = array($c1[3],$c1[4],$c1[5],$c2[3],$c2[4],$c2[5]); $r3 = array($c1[6],$c1[7],$c1[8],$c2[6],$c2[7],$c2[8]); $v1 = array_diff($t,$r1); shuffle($v1); $v2 = array_diff($t,$r2); shuffle($v2); $v3 = array_diff($t,$r3); shuffle($v3); return array_merge($v1,$v2,$v3); } // Propose un carré pour compléter la colonne function complete_v($c1,$c2) { $t = range(1,9); $r1 = array($c1[0],$c1[3],$c1[6],$c2[0],$c2[3],$c2[6]); $r2 = array($c1[1],$c1[4],$c1[7],$c2[1],$c2[4],$c2[7]); $r3 = array($c1[2],$c1[5],$c1[8],$c2[2],$c2[5],$c2[8]); $v1 = array_diff($t,$r1); shuffle($v1); $v2 = array_diff($t,$r2); shuffle($v2); $v3 = array_diff($t,$r3); shuffle($v3); return array($v1[0],$v2[0],$v3[0],$v1[1],$v2[1],$v3[1],$v1[2],$v2[2],$v3[2]); } // Détermine le n° du carré et le rang de la case d'après les coordonnées function ij2nr($i,$j) { // coords i-j => coords carré $n = 3*floor($i/3)+floor($j/3); $r = 3*($i%3)+$j%3; return array($n,$r); } // Teste si la ligne ou la colonne est conforme function test(&$c,$colflag) { $s = sizeof($c); // nombre de carrés // limite le nombre de lignes/colonnes à tester if($colflag) { // Test sur les colonnes $nc=3; if($s==2) $nc=6; elseif($s>2) $nc = 9; } else // Test sur les lignes $nc = (floor(($s-1)/3)+1)*3; // On teste for($i=0;$i<$nc;$i++) { for($j=0;$j<9;$j++) { $t = ($colflag) ? ij2nr($j,$i) : ij2nr($i,$j); if($t[0]>=$s) continue; $row[$i][] = $c[$t[0]][$t[1]]; } if(array_unique($row[$i])!=$row[$i]) return false; } return true; } // Tente de générer une grille dans le temps imparti function genere() { global $Temps,$TempsMax; // Liste des 9 valeurs possibles $liste = range(1,9); // carré haut-gauche shuffle($liste); // Mélange la liste $carre[0] = $liste; $result = $carre; $nbcarre = 1; // Pour les autres carrés while($nbcarre<9) { // Soit c'est une fin de ligne => on complète if(($nbcarre==2)||($nbcarre==5)||($nbcarre==8)) $l = complete_h($carre[$nbcarre-2],$carre[$nbcarre-1]); // Soit c'est une fin de colonne => on complète elseif(($nbcarre==6)||($nbcarre==7)) $l = complete_v($carre[$nbcarre-6],$carre[$nbcarre-3]); // Sinon => tirage random else { shuffle($liste); $l = $liste; } // On teste $carre[$nbcarre] = $l; if($test = (test($carre,0)&&test($carre,1)) ) { // OK, mémorise et passe au carré suivant $result[$nbcarre] = $l; $nbcarre++; // echo (time()-$Temps)." - "; } // Le temps de recherche est dépassé ? if(time()-$Temps>$TempsMax) break; } return $result; } if($search=@$_GET["search"]) { echo "Recherche".str_repeat(".",@$_GET["n"]+1); if(@$_GET["n"]) $sudoku = genere(); } $tmp = _AT_file("sudoku.txt"); $s=0; if($tmp) $s = sizeof($tmp); // On a trouvé une nouvelle grille => on la sauve if($search&&@$sudoku[8]) { $search = 0; // Fin de la recherche $t = serialize($sudoku)."\n"; if($tmp) { if(!in_array($t,$tmp)) { $f=fopen("sudoku.txt","a"); fputs($f,$t); fclose($f); $s++; } else $search=1; // déjà trouvée... } else { $f=fopen("sudoku.txt","w"); fputs($f,$t); fclose($f); $s++; } if(!$search) { ?> <script language="JavaScript"> t=top.location.href.split("?"); top.location.replace(t[0]+"?n=last"); </script> <? } } ?> <center> <?if($search) { ?> <script>document.location.replace("sudoku.php?n=<?=@$_GET["n"]+1?>&search=1");</script> <? } else { ?> <b><?=$s?> grille<?=($s>1)?"s":""?> disponible<?=($s>1)?"s":""?></b><br /> <A href="?search=1">Créer une nouvelle grille</A> <? } ?> </center> </body> </html> et en fait je voudrais trouver en modifiant un des deux scripts un moyen pour avoir les chiffres du sudoku tous à la suite par ligne dans une variable ( array ) et pour plusieurs niveaux les chiffres qui sont masqués de la grille de sudoku dans une variable par ligne ( 1 pour affiché et 0 pôur masquer ) c'est sa que je voudrais après pour exploiter tout sa je peut faire moi même mais je voudrais trouver ces chiffres mais je ne sais pas où ! j'ai testé des trucs mais c'est trop compliqué pour moi ce script et je n'ai pas réussi à avoir les chiifres ensuite, je peut me débrouiller pour afficher sa dans des grilles à partir de base mysql ... si vous m'avez pas compris ... voila je précise au cas ou que il y en a qui ne s'en seraient pas douté, que le script viens d'ici : http://www.asp-php.net/scripts/asp-php/sudoku.php il faut juste que j'arrive à trouver dans le script prééxistant l'endroit ou avoir ces nombres, le modifier un peu pour n'avoir que l'essentiel et que je rajoute une requete sql pour enregistrer ca dans une base et pas un fichier pour un expert sa devrait pas etre très dur mais moi je suis perdu dans ce script voila, merci d'avance ! yann
  8. yuuzhantar

    sudoku

    euhhhhhhhhh sa m'aide pas vraiment ce que tu raconte
  9. yuuzhantar

    sudoku

    je voudrais juste sortir les chiffres en fait mais je ne vois pas ou les prendre qqn pourrait m'aider svp merci
  10. yuuzhantar

    sudoku

    peut on le modifier pour avoir par exemple ( A : ligne 1 B : ligne 2 ... 1 : colonne 1 2 colonne 2 ... et A1 : ligne 1 colonne 1 C9 ... ) $a1 = ... $a2 = ... $a3 = ... mais vu qu'il y a des cases qui sont vides ( avec le niveau de difficulté ) $ta1 = (1 pour pleine et 0 pour vide) ... après, je peut me débrouiller tout seul, j'aime bien le mysql
  11. yuuzhantar

    sudoku

    Bonjour vu que je ne comprend pas trop les scripts sudoku que j'ai précédement vu, je cherche un script qui génère des grilles sudoku mais ce que j'aimerais trouver c'est un script qui enregistre les nombres et leur position dans une table mysql est ce que quelqun pourrais m'aider svp merci d'avance yuuzhantar
×
×
  • Créer...