From d3b11df015156976cdbaaa0f7b42b2abde26f2c6 Mon Sep 17 00:00:00 2001 From: adrien Date: Fri, 22 Aug 2025 10:56:06 +0200 Subject: [PATCH] =?UTF-8?q?m=C3=A9thodes=20magiques?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Trie.php | 58 ++++++++++++++++++++++++++++++------------------------- dico.csv | 8 ++++---- dico.php | 5 +++-- index.php | 13 +++++++++---- 4 files changed, 48 insertions(+), 36 deletions(-) diff --git a/Trie.php b/Trie.php index aa424d0..cd95b0f 100644 --- a/Trie.php +++ b/Trie.php @@ -52,10 +52,40 @@ class Trie implements ArrayAccess, IteratorAggregate, Countable { } } - public function arrayIterator() { + // ArrayAccess + public function offsetSet($array, $valeur): void { + if (is_string($array)) { + $array = str_split($array); + } + $this->arraySet($array, $valeur); + } + + public function offsetExists($array): bool { + if (is_string($array)) { + $array = str_split($array); + } + return $this->arrayExists($array); + } + + public function &offsetGet($array): mixed { + if (is_string($array)) { + $array = str_split($array); + } + return $this->arrayGet($array); + } + + public function offsetUnset($array): void { + if (is_string($array)) { + $array = str_split($array); + } + $this->arrayUnset($array); + } + + // IteratorAggregate + public function getIterator(): Traversable { foreach ($this->branches as $cle => $branche) { if ($branche instanceof Trie) { - foreach($branche->arrayIterator() as $sous_cles => $feuille) { + foreach($branche->getIterator() as $sous_cles => $feuille) { yield array_merge([$cle], $sous_cles) => $feuille; } } else { @@ -64,30 +94,6 @@ class Trie implements ArrayAccess, IteratorAggregate, Countable { } } - // ArrayAccess - public function offsetSet($string, $valeur): void { - $this->arraySet(str_split($string), $valeur); - } - - public function offsetExists($string): bool { - return $this->arrayExists(str_split($string)); - } - - public function &offsetGet($string): mixed { - return $this->arrayGet(str_split($string)); - } - - public function offsetUnset($string): void { - $this->arrayUnset(str_split($string)); - } - - // IteratorAggregate - public function getIterator(): Traversable { - foreach($this->arrayIterator() as $array => $valeur) { - yield implode("", $array) => $valeur; - } - } - // Countable public function count(): int { return $this->nb_branches; diff --git a/dico.csv b/dico.csv index d8157e2..129b8e4 100644 --- a/dico.csv +++ b/dico.csv @@ -579,8 +579,8 @@ COTON Devient souvent mauvais quand on le file@Michel Laclos COU S'y pendre est plus sympa que d'y mettre la corde@Thierry Larsan COUCHETTE Vous permet, en somme, d’être en train@Georges Perec Grâce à elle on peut être en train couenne@Tour de cochon COULANT S’accorde à nœud@Lionel Leteur -COUP DE FOUDRE Ce qui arrive lorsque se rencontrent deux personnes très excitées, mais peu sélectives -COUPEPAPIER Lame pour "les trois mousquetaires"@Thierry Larsan +COUP DE FOUDRE Ce qui arrive lorsque se rencontrent deux personnes très excitées, mais peu sélectives +COUPE PAPIER Lame pour "les trois mousquetaires"@Thierry Larsan COUPEROSE Ne désigne absolument pas une espèce de sécateur@Georges Perec COUR Plat agréable à faire@Michel Laclos S'annonce aux messieurs, se fait aux dames@Bernard Philippet COURAGE N’écouter que le sien@Alain Schifres dans Les Hexagons Art d'avoir peur sans que cela paraisse @@ -1807,7 +1807,7 @@ OPPOSITION En politique, le parti qui empêche le gouvernement d'aller battre la OPTICIEN Deux verres chez lui pour éviter les dégâts@Philippe Dupuis OPTIMISTE Adepte de la doctrine selon laquelle le noir est blanc@Ambrose Bierce Personne qui commence à faire ses mots croisés au stylo-bille OPULENTES Avec avantages en nature ou en espèces@Corinne Beltz -OR Son pont nous permet de rouler dessus@Georges Perec Matière pour un livre mais plus pour une livre@Robert Scipion A été veau avant d’être étalon@Dédale Brillante conjonction@Michel Laclos Pour un bridge ou un pont@Philippe Dupuis Prix fort@Philippe Harang Massif apprécié@Lucien Lacau Une eau s'en régale@Guy Hachette Plut à danaé@Thierry Larsan Le massif des écrins@Bernard Philippet Précieuse conjonction +OR Son pont nous permet de rouler dessus@Georges Perec Matière pour un livre mais plus pour une livre@Robert Scipion A été veau avant d’être étalon@Dédale Brillante conjonction@Michel Laclos Pour un bridge ou un pont@Philippe Dupuis Prix fort@Philippe Harang Massif apprécié@Lucien Lacau Une eau s'en régale@Guy Hachette Plut à Danaé@Thierry Larsan Le massif des écrins@Bernard Philippet Précieuse conjonction ORACLE Il se mouille parfois mais ne sèche jamais@Bernard Philippet ORAL Procès-verbal@Michel Laclos ORANGE Souvent pressée dès le réveil@Michel Laclos Réunion de quartier @@ -2158,7 +2158,7 @@ RENGAINE Un air qui commence par vous entrer par une oreille et qui finit par vo RENI Guide pour amateur d’art@Corinne Beltz RENTABLES Quand les choses le sont c’est qu’il y a un certain rapport@Georges Perec RENTREE Revenue ou revenu@Michel Laclos -REPAS C’est après l’avoir saut é qu’on se sent léger@Paul Roisin +REPAS C’est après l’avoir sauté qu’on se sent léger@Paul Roisin REPASSEUSE Dame de fer@Michel Deineko REPETITION C’est du travail avant de jouer@Michel Laclos REPLIQUE Double sauf sur scène@Philippe Harang diff --git a/dico.php b/dico.php index 05f6cce..3924e50 100644 --- a/dico.php +++ b/dico.php @@ -1,4 +1,5 @@ = 2; $longueur--) { for ($position_espace = $longueur - 1; $position_espace >= 1; $position_espace--) { $mots_suivants = $dico[$longueur - $position_espace - 1]; - foreach ($dico[$position_espace]->arrayIterator() as $premier_mot => $definition) { + foreach ($dico[$position_espace] as $premier_mot => $definition) { $premier_mot[] = CASE_NOIRE; - $dico[$longueur]->arraySet($premier_mot, $mots_suivants); + $dico[$longueur][$premier_mot] = $mots_suivants; } } } diff --git a/index.php b/index.php index bd3cc3f..59b4d4f 100644 --- a/index.php +++ b/index.php @@ -1,4 +1,9 @@ - + @@ -154,9 +159,9 @@ function formatter_definition($definition) {
    - -
  1. - + +
  2. +