gestion problème de génération

This commit is contained in:
Adrien MALINGREY 2025-04-28 18:33:14 +02:00
parent 50872aef31
commit 2445bfcf54
5 changed files with 84 additions and 67 deletions

View File

@ -38,7 +38,6 @@ class Grille {
mt_srand();
$this->grilles = $this->generateur();
$this->grilles->current();
}
public function get_ligne($l, $largeur) {
@ -133,6 +132,14 @@ class Grille {
}
}
public function current() {
return $this->grilles->current();
}
public function valid() {
return $this->grilles->valid();
}
public function hash() {
$string = "";
foreach ($this->grille as $ligne) {

View File

@ -3,7 +3,7 @@
const MIN_LETTRES_MOT_1 = 2;
const MIN_LETTRES_MOT_2 = 0;
const MAX_MOTS = 100000;
// const MAX_MOTS = 100000;
$dico = [];
@ -59,9 +59,9 @@ function mots_espaces($longueur)
fisherYatesShuffle($mots_de_n_lettres[$longueur]);
foreach ($mots_de_n_lettres[$longueur] as $mot) {
yield $mot;
if (++$nb_mots > MAX_MOTS) {
return;
}
// if (++$nb_mots > MAX_MOTS) {
// return;
// }
}
for ($i = MIN_LETTRES_MOT_1; $longueur - $i - 1 >= MIN_LETTRES_MOT_2; $i++) {
foreach ($mots_de_n_lettres[$i] as $mot1) {
@ -71,10 +71,10 @@ function mots_espaces($longueur)
yield "$mot1 $mot2";
$dico["$mot2 $mot1"] = array_merge($dico[$mot2], $dico[$mot1]);
yield "$mot2 $mot1";
$nb_mots += 2;
if ($nb_mots > MAX_MOTS) {
return;
}
// $nb_mots += 2;
// if ($nb_mots > MAX_MOTS) {
// return;
// }
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 518 B

After

Width:  |  Height:  |  Size: 518 B

122
index.php
View File

@ -36,6 +36,8 @@ $largeur = filter_input(INPUT_GET, 'colonnes', FILTER_VALIDATE_INT, [
]);
$grille = new Grille($hauteur, $largeur, $id);
$grille->current();
?>
<!DOCTYPE HTML>
@ -78,69 +80,73 @@ $grille = new Grille($hauteur, $largeur, $id);
</tbody>
</table>
</h1>
<table class="grille">
<tr>
<th></th>
<?php for ($c = 0; $c < $largeur; $c++): ?>
<th><?= chr($c + 65) ?></th>
<?php endfor; ?>
<th></th>
</tr>
<?php for ($l = 0; $l < $hauteur; $l++): ?>
<?php if ($grille->valid()): ?>
<table class="grille">
<tr>
<th><?= $l + 1 ?></th>
<th></th>
<?php for ($c = 0; $c < $largeur; $c++): ?>
<td class="case <?= $grille->grille[$l][$c] == " " ? "noire" : "blanche" ?>">
<?php if ($grille->grille[$l][$c] == " "): ?>
<input type="text" maxlength="1" size="1" value=" " disabled />
<?php else: ?>
<input type="text" maxlength="1" size="1" pattern="[A-Z]" />
<?php endif; ?>
</td>
<th><?= chr($c + 65) ?></th>
<?php endfor; ?>
<th></th>
</tr>
<?php endfor; ?>
</table>
<div class="definitions">
<div class="horizontales">
<h2>Horizontalement</h2>
<ol>
<?php for ($l = 0; $l < $hauteur; $l++): ?>
<li>
<?php $definitions = $dico[$grille->get_ligne($l, $largeur)] ?>
<?php if (count($definitions) == 1): ?>
<?= $definitions[0] ?>
<?php else: ?>
<ol>
<?php foreach ($dico[$grille->get_ligne($l, $largeur)] as $definition) : ?>
<li><?= $definition ?></li>
<?php endforeach ?>
</ol>
<?php endif ?>
</li>
<?php endfor; ?>
</ol>
<?php for ($l = 0; $l < $hauteur; $l++): ?>
<tr>
<th><?= $l + 1 ?></th>
<?php for ($c = 0; $c < $largeur; $c++): ?>
<td class="case <?= $grille->grille[$l][$c] == " " ? "noire" : "blanche" ?>">
<?php if ($grille->grille[$l][$c] == " "): ?>
<input type="text" maxlength="1" size="1" value=" " disabled />
<?php else: ?>
<input type="text" maxlength="1" size="1" pattern="[A-Z]" />
<?php endif; ?>
</td>
<?php endfor; ?>
</tr>
<?php endfor; ?>
</table>
<div class="definitions">
<div class="horizontales">
<h2>Horizontalement</h2>
<ol>
<?php for ($l = 0; $l < $hauteur; $l++): ?>
<li>
<?php $definitions = $dico[$grille->get_ligne($l, $largeur)] ?>
<?php if (count($definitions) == 1): ?>
<?= $definitions[0] ?>
<?php else: ?>
<ol>
<?php foreach ($dico[$grille->get_ligne($l, $largeur)] as $definition) : ?>
<li><?= $definition ?></li>
<?php endforeach ?>
</ol>
<?php endif ?>
</li>
<?php endfor; ?>
</ol>
</div>
<div class="verticales">
<h2>Verticalement</h2>
<ol type="A">
<?php for ($c = 0; $c < $largeur; $c++): ?>
<li>
<?php $definitions = $dico[$grille->get_colonne($c, $hauteur)] ?>
<?php if (count($definitions) == 1): ?>
<?= $definitions[0] ?>
<?php else: ?>
<ol>
<?php foreach ($dico[$grille->get_colonne($c, $hauteur)] as $definition) : ?>
<li><?= $definition ?></li>
<?php endforeach ?>
</ol>
<?php endif ?>
</li>
<?php endfor; ?>
</ol>
</div>
</div>
<div class="verticales">
<h2>Verticalement</h2>
<ol type="A">
<?php for ($c = 0; $c < $largeur; $c++): ?>
<li>
<?php $definitions = $dico[$grille->get_colonne($c, $hauteur)] ?>
<?php if (count($definitions) == 1): ?>
<?= $definitions[0] ?>
<?php else: ?>
<ol>
<?php foreach ($dico[$grille->get_colonne($c, $hauteur)] as $definition) : ?>
<li><?= $definition ?></li>
<?php endforeach ?>
</ol>
<?php endif ?>
</li>
<?php endfor; ?>
</ol>
</div>
</div>
<?php else: ?>
<h3 class="erreur">Erreur de génération de la grille</h3>
<?php endif ?>
<input type="hidden" id="lignes" <?php if (isset($_GET["lignes"])): ?>name="lignes" <?php endif ?>value="<?= $hauteur ?>" />
<input type="hidden" id="colonnes" <?php if (isset($_GET["colonnes"])): ?>name="colonnes" <?php endif ?>value="<?= $largeur ?>" />

View File

@ -130,6 +130,10 @@ table.grille {
text-wrap: nowrap;
}
.erreur {
text-align: center;
}
button[type='submit'] {
width: fit-content;
margin: 0 auto;