WIP
This commit is contained in:
parent
4c014bc789
commit
6ee909914d
@ -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);
|
||||
});
|
||||
|
15
Trie.php
15
Trie.php
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user