méthodes magiques

This commit is contained in:
2025-08-22 10:56:06 +02:00
parent 6635adf26a
commit d3b11df015
4 changed files with 48 additions and 36 deletions

View File

@ -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;

View File

@ -580,7 +580,7 @@ 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 Saccorde à 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
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 dart@Corinne Beltz
RENTABLES Quand les choses le sont cest quil y a un certain rapport@Georges Perec
RENTREE Revenue ou revenu@Michel Laclos
REPAS Cest après lavoir saut é quon se sent léger@Paul Roisin
REPAS Cest après lavoir sauté quon se sent léger@Paul Roisin
REPASSEUSE Dame de fer@Michel Deineko
REPETITION Cest du travail avant de jouer@Michel Laclos
REPLIQUE Double sauf sur scène@Philippe Harang

Can't render this file because it has a wrong number of fields in line 12.

View File

@ -1,4 +1,5 @@
<?php
include_once "Trie.php";
@ -48,9 +49,9 @@ function mots_espaces($longueur_max) {
for ($longueur = $longueur_max; $longueur >= 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;
}
}
}

View File

@ -1,4 +1,9 @@
<?php
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
include_once "Grille.php";
@ -131,7 +136,7 @@ function formatter_definition($definition) {
<?php for ($x = 0; $x < $largeur; $x++): ?>
<?php if ($grille[$y][$x] == CASE_NOIRE): ?>
<td class="case noire">
<input id="<?= chr($x + 65) . ($y + 1) ?>" type="text" maxlength="1" size="1" disabled />
<input id="<?= chr($x + 65) . ($y + 1) ?>" type="text" maxlength="1" size="1" value="<?= CASE_NOIRE ?>" disabled />
</td>
<?php else: ?>
<td class="case blanche">