From 65bb8be2e39737404eebb0062925ab7d5aa38d18 Mon Sep 17 00:00:00 2001 From: adrien Date: Tue, 6 May 2025 17:29:51 +0200 Subject: [PATCH] Revert "Merge branch 'tmp3'" This reverts commit ed1ad0566f8c73d8855f66051e4c00818c52aab7, reversing changes made to 6ee909914d7aca7c88d8247417d8c9b4ef033c79. --- Grille.php | 86 ++++++++++++++++++++---------------------------------- Trie.php | 4 ++- index.php | 1 - 3 files changed, 34 insertions(+), 57 deletions(-) diff --git a/Grille.php b/Grille.php index 83df919..a8c5d1f 100644 --- a/Grille.php +++ b/Grille.php @@ -2,23 +2,7 @@ include_once "dico.php"; -$randmax = mt_getrandmax() + 1; -function gaussienne($moyenne = 0, $ecartType = 1.0): float { - global $randmax; - - $u = 0; - $v = 0; - - $u = (mt_rand() + 1) / $randmax; - $v = (mt_rand() + 1) / $randmax; - - $z = sqrt(-2.0 * log($u)) * cos(2.0 * M_PI * $v); - return $z * $ecartType + $moyenne; -} - - -class Grille implements ArrayAccess -{ +class Grille implements ArrayAccess { public $grille; public $hauteur; public $largeur; @@ -47,7 +31,7 @@ class Grille implements ArrayAccess public function get_ligne($y, $largeur) { $ligne = ""; - for ($x = 0; $x < $largeur; $x++) + for ($x = 0; $x < $largeur; $x++) $ligne .= $this->grille[$y][$x]; return $ligne; } @@ -60,38 +44,36 @@ class Grille implements ArrayAccess return $colonne; } - public function gen_grilles($i = 0, $lettres_ligne = NULL) + public function gen_grilles($i = 0, $lettres_suivantes_ligne = NULL) { [$x, $y] = $this->positions[$i]; if ($x == 0) { - $lettres_ligne = $this->lettres_suivantes[$this->largeur]; + $lettres_suivantes_ligne = $this->lettres_suivantes[$this->largeur]; } - $lettres_colonne = $this->lettres_suivantes[$this->hauteur]; - for ($y2 = 0; $y2 < $y; $y2++) { - $lettres_colonne = $lettres_colonne->noeud[$this->grille[$y2][$x]]; - } - $lettres_communes = array_intersect_key( - $lettres_ligne->noeud, - $lettres_colonne->noeud + $lettres_suivantes_colonne = $this->lettres_suivantes[$this->hauteur]; + for ($y2 = 0; $y2 < $y; $y2++) + $lettres_suivantes_colonne = $lettres_suivantes_colonne->noeud[$this->grille[$y2][$x]]; + $lettres_communes = array_intersect( + array_keys($lettres_suivantes_ligne->noeud), + array_keys($lettres_suivantes_colonne->noeud) ); - foreach ($lettres_communes as $lettre => $_) { - $lettres_communes[$lettre] = count($lettres_ligne->noeud[$lettre]) * count($lettres_colonne->noeud[$lettre]) * gaussienne(1, 5); + foreach($lettres_communes as $lettre => $_) { + $lettres_communes[$lettre] = count($lettres_suivantes_colonne[$lettre]) * count($lettres_suivantes_colonne[$lettre]); } - uksort($lettres_communes, function($a, $b) use ($lettres_communes) { - return $lettres_communes[$b] <=> $lettres_communes[$a]; + usort($lettres_communes, function ($a, $b) { + return mt_rand(-1, 1); }); - $lettres_communes = array_slice($lettres_communes, 0, 3); - foreach ($lettres_communes as $lettre => $_) { + foreach ($lettres_communes as $lettre) { $this->grille[$y][$x] = $lettre; $mots = []; if ($x == $this->largeur - 1) $mots = explode(" ", $this->get_ligne($y, $this->largeur)); else if ($lettre == " ") $mots = explode(" ", $this->get_ligne($y, $x)); else $mots = []; - $this->lignes[$y] = array_filter($mots, function ($mot) { + $this->lignes[$y] = array_filter($mots, function($mot) { return strlen($mot) >= 2; }); if (count($this->lignes[$y])) { @@ -112,15 +94,16 @@ class Grille implements ArrayAccess } if ($i < $this->nb_positions - 1) { - yield from $this->gen_grilles($i + 1, $lettres_ligne->noeud[$lettre]); + yield from $this->gen_grilles($i + 1, $lettres_suivantes_ligne->noeud[$lettre]); } else { yield $this; } } } - public function genere($id) - { + public function genere() { + session_regenerate_id(); + $id = session_id(); mt_srand(crc32($id)); $grilles = $this->gen_grilles(); @@ -142,9 +125,7 @@ class Grille implements ArrayAccess return hash('sha256', $string); } - public function save($id) - { - session_id($id); + public function save() { session_start(["use_cookies" => false]); $_SESSION["$this->largeur,$this->hauteur"] = implode( @@ -158,8 +139,7 @@ class Grille implements ArrayAccess ); } - public function load($id) - { + public function load($id) { session_id($id); session_start(["use_cookies" => false]); @@ -168,21 +148,21 @@ class Grille implements ArrayAccess } foreach (str_split($_SESSION["$this->largeur,$this->hauteur"], $this->largeur) as $y => $ligne) { - foreach (str_split($ligne) as $x => $lettre) { + foreach(str_split($ligne) as $x => $lettre) { $this->grille[$y][$x] = $lettre; } } - + for ($y = 0; $y < $this->hauteur; $y++) { $mots = explode(" ", $this->get_ligne($y, $this->largeur)); - $this->lignes[$y] = array_filter($mots, function ($mot) { + $this->lignes[$y] = array_filter($mots, function($mot) { return strlen($mot) >= 2; }); } - + for ($x = 0; $x < $this->largeur; $x++) { $mots = explode(" ", $this->get_colonne($x, $this->hauteur)); - $this->colonnes[$x] = array_filter($mots, function ($mot) { + $this->colonnes[$x] = array_filter($mots, function($mot) { return strlen($mot) >= 2; }); } @@ -191,23 +171,19 @@ class Grille implements ArrayAccess } - public function offsetExists(mixed $offset): bool - { + public function offsetExists(mixed $offset): bool { return isset($this->grille[$offset]); } - public function offsetGet(mixed $offset): mixed - { + public function offsetGet(mixed $offset): mixed { return $this->grille[$offset]; } - public function offsetSet(mixed $offset, mixed $value): void - { + public function offsetSet(mixed $offset, mixed $value): void { $this->grille[$offset] = $value; } - public function offsetUnset(mixed $offset): void - { + public function offsetUnset(mixed $offset): void { unset($this->grille[$offset]); } } diff --git a/Trie.php b/Trie.php index 750fdd1..cd783e1 100644 --- a/Trie.php +++ b/Trie.php @@ -1,7 +1,7 @@ nb_branches; } } + + diff --git a/index.php b/index.php index 54b4778..5bf3b68 100644 --- a/index.php +++ b/index.php @@ -43,7 +43,6 @@ $id = htmlspecialchars($_GET["grille"]); $grille_valide = $grille->load($id) || $grille->genere(); -mt_srand(crc32($id)); if ($grille_valide) { mt_srand(crc32($id));