Bonjour à tous,

Je pense être tombé sur un os et j'aurai besoin d'un petit coup de main svp.
Mon but est de générer, en php, un carton de loto traditionnel dont les conditions sont les suivantes :

  • 3 lignes
  • 9 colonnes
  • pas plus de 2 nombres par colonne
  • 5 nombres par ligne obligatoirement
  • pas 2 fois le même nombre


Mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
 
$numbers = array(
		'1' => array(
				1, 2, 3, 4, 5, 6, 7, 8, 9
			),
		'2'	=>	array(
				10, 11, 12, 13, 14, 15, 16, 17, 18, 19
			),
		'3'	=>	array(
				20, 21, 22, 23, 24, 25, 26, 27, 28, 29
			),
		'4'	=>	array(
				30, 31, 32, 33, 34, 35, 36, 37, 38, 39
			),
		'5'	=>	array(
				40, 41, 42, 43, 44, 45, 46, 47, 48, 49
			),
		'6'	=>	array(
				50, 51, 52, 53, 54, 55, 56, 57, 58, 59
			),
		'7'	=>	array(
				60, 61, 62, 63, 64, 65, 66, 67, 68, 69
			),
		'8'	=>	array(
				70, 71, 72, 73, 74, 75, 76, 77, 78, 79
			),
		'9'	=>	array(
				80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90
			)
);
 
echo '<table border="1">';
for ($l=1; $l < 4; $l++) { 
	echo '<tr>';
	$nbChoix = 0;
	$nbReste = 9;
	for ($c=1; $c < 10; $c++) {		
		if ($nbChoix < 5) {
			$rAnd = rand(0,1);
			if ($l!=1) {
				if ($rAnd == 1 && (9 - $nbChoix) > 4) {
					if ($selection[$l-1][$c] == null) {
						$nbChoix++;
						$getNumber = array_rand($numbers[$c], 1);
						echo '<td>'.$numbers[$c][$getNumber].'</td>';
						$selection[$l][$c] = $numbers[$c][$getNumber];
					} else {
						if ((5 - $nbChoix) >= ($nbReste - $nbChoix) && ($selection[$l-2][$c] == NULL || $selection[$l-1][$c] == null)) {
							$nbChoix++;
							$getNumber = array_rand($numbers[$c], 1);
							echo '<td>'.$numbers[$c][$getNumber].'</td>';
							$selection[$l][$c] = $numbers[$c][$getNumber];
						} else {
							echo '<td>&nbsp;</td>';
							$selection[$l][$c] = null;
						}
					}
				} else if ($rAnd == 0 && (5 - $nbChoix) >= ($nbReste - $nbChoix)) {
					$nbChoix++;
					$getNumber = array_rand($numbers[$c], 1);
					echo '<td>'.$numbers[$c][$getNumber].'</td>';
					$selection[$l][$c] = $numbers[$c][$getNumber];
				} else {
					echo '<td>&nbsp;</td>';
					$selection[$l][$c] = null;
				}
			} elseif ($l==1) {
				if ($rAnd == 1 && (9 - $nbChoix) > 4) {
					$nbChoix++;
					$getNumber = array_rand($numbers[$c], 1);
					echo '<td>'.$numbers[$c][$getNumber].'</td>';
					$selection[$l][$c] = $numbers[$c][$getNumber];
				} else if ($rAnd == 0 && (5 - $nbChoix) >= ($nbReste - $nbChoix)) {
					$nbChoix++;
					$getNumber = array_rand($numbers[$c], 1);
					echo '<td>'.$numbers[$c][$getNumber].'</td>';
					$selection[$l][$c] = $numbers[$c][$getNumber];
				} else {
					echo '<td>&nbsp;</td>';
					$selection[$l][$c] = null;
				}
			} else {
				echo '<td>&nbsp;</td>';
				$selection[$l][$c] = null;
			}			
		} else {
			echo '<td>&nbsp;</td>';
			$selection[$l][$c] = null;
		}
		$nbReste--;
	}
	echo '</tr>';
}
echo '</table>';
Mon problème ? Je n'arrive pas à obliger les 5 nombres par ligne et a empêcher les 3 nombres par colonne.

Quelqu'un aurait une idée, svp ?

Un grand merci d'avance!