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_ligne->noeud),
|
||||||
array_keys($lettres_suivantes_colonne->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) {
|
usort($lettres_communes, function ($a, $b) {
|
||||||
return mt_rand(-1, 1);
|
return mt_rand(-1, 1);
|
||||||
});
|
});
|
||||||
|
17
Trie.php
17
Trie.php
@ -1,9 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
|
class Trie implements ArrayAccess, IteratorAggregate, Countable
|
||||||
{
|
{
|
||||||
public array $noeud = [];
|
public array $noeud = [];
|
||||||
|
private $nb_branches = 0;
|
||||||
|
|
||||||
public function offsetSet($cles, $valeur): void {
|
public function offsetSet($cles, $valeur): void {
|
||||||
if (!count($cles)) {
|
if (!count($cles)) {
|
||||||
@ -11,6 +12,7 @@ class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
|
|||||||
}
|
}
|
||||||
$cle = array_shift($cles);
|
$cle = array_shift($cles);
|
||||||
if (!isset($this->noeud[$cle])) $this->noeud[$cle] = new Trie();
|
if (!isset($this->noeud[$cle])) $this->noeud[$cle] = new Trie();
|
||||||
|
$this->nb_branches++;
|
||||||
if (count($cles)) {
|
if (count($cles)) {
|
||||||
$this->noeud[$cle]->offsetSet($cles, $valeur);
|
$this->noeud[$cle]->offsetSet($cles, $valeur);
|
||||||
} else {
|
} else {
|
||||||
@ -47,8 +49,12 @@ class Trie implements ArrayAccess, IteratorAggregate //, Countable //, Iterator
|
|||||||
public function offsetUnset($cles): void {
|
public function offsetUnset($cles): void {
|
||||||
if ($this->offsetExists($cles)) {
|
if ($this->offsetExists($cles)) {
|
||||||
$cle = array_shift($cles);
|
$cle = array_shift($cles);
|
||||||
|
$this->nb_branches--;
|
||||||
if (count($cles)) {
|
if (count($cles)) {
|
||||||
$this->noeud[$cle]->offsetUnset($cles);
|
$this->noeud[$cle]->offsetUnset($cles);
|
||||||
|
if (count($this->noeud[$cle]) == 0) {
|
||||||
|
unset($this->noeud[$cle]);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
unset($this->noeud[$cle]);
|
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