This commit is contained in:
Adrien MALINGREY 2025-05-06 15:55:58 +02:00
parent 4c014bc789
commit 6ee909914d
2 changed files with 18 additions and 2 deletions

View File

@ -59,6 +59,9 @@ class Grille implements ArrayAccess {
array_keys($lettres_suivantes_ligne->noeud),
array_keys($lettres_suivantes_colonne->noeud)
);
foreach($lettres_communes as $lettre => $_) {
$lettres_communes[$lettre] = count($lettres_suivantes_colonne[$lettre]) * count($lettres_suivantes_colonne[$lettre]);
}
usort($lettres_communes, function ($a, $b) {
return mt_rand(-1, 1);
});

View File

@ -1,9 +1,10 @@
<?php
class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
class Trie implements ArrayAccess, IteratorAggregate, Countable
{
public array $noeud = [];
private $nb_branches = 0;
public function offsetSet($cles, $valeur): void {
if (!count($cles)) {
@ -11,6 +12,7 @@ class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
}
$cle = array_shift($cles);
if (!isset($this->noeud[$cle])) $this->noeud[$cle] = new Trie();
$this->nb_branches++;
if (count($cles)) {
$this->noeud[$cle]->offsetSet($cles, $valeur);
} else {
@ -47,8 +49,12 @@ class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
public function offsetUnset($cles): void {
if ($this->offsetExists($cles)) {
$cle = array_shift($cles);
$this->nb_branches--;
if (count($cles)) {
$this->noeud[$cle]->offsetUnset($cles);
if (count($this->noeud[$cle]) == 0) {
unset($this->noeud[$cle]);
}
} else {
unset($this->noeud[$cle]);
}
@ -67,4 +73,11 @@ class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
}
}
}
// Countable
public function count(): int {
return $this->nb_branches;
}
}