maeTimmae
Erfahrenes Mitglied
Matthias: Mitlerweile ja, war nen dämlicher Denkfehler - Aber anscheinend steh ich weiterhin auf dem Schlauch, denn anscheinend wird mein Kreuzprodukt-Array der bestehenden Werte in Spalte und Reihe nicht gefüllt...
Das lässt mir jetzt keine Ruhe
Füllt zwar die Zellen, aber es kommen doppelte Werte vor, da die Schnittmenge nicht (korrekt) berechnet wird.
------------------------------------------------------------------------------------------------------------------
Warum baue ich die zwei for eigentlich in die while? *omg*
Läuft zwar schneller, lieferte aber eben auch nur Folgendes, was falsch ist:
Gerade den totalen Denkfehler drin...
------------------------------------------------------------------------------------------------------------------
Jetzt aber... Wie gesagt, wirklich dummer Denkfehler
PHP:
<?php
for ($x = 0; $x < 9; ++$x) {
for ($y = 0; $y < 9; ++$y) {
while (true) {
$random = rand(1, 9);
$cut = array();
for ($i = 0; $i < $x; ++$i) {
if (isset($cell[$x][$i])) {
$cut[] = $cell[$x][$i];
}
}
for ($i = 0; $i < $y; ++$i) {
if (isset($cell[$i][$y])) {
$cut[] = $cell[$i][$y];
}
}
if (!in_array($random, $cut)) {
break;
}
}
$cell[$x][$y] = $random;
}
}
Das lässt mir jetzt keine Ruhe
Füllt zwar die Zellen, aber es kommen doppelte Werte vor, da die Schnittmenge nicht (korrekt) berechnet wird.
------------------------------------------------------------------------------------------------------------------
Warum baue ich die zwei for eigentlich in die while? *omg*
PHP:
<?php
for ($x = 0; $x < 3; ++$x) {
for ($y = 0; $y < 3; ++$y) {
$cut = array();
for ($i = 0; $i < $x; ++$i) {
echo "x... ({$x};{$i})\n";
if (isset($cell[$x][$i])) {
$cut[] = $cell[$x][$i];
}
}
for ($i = 0; $i < $y; ++$i) {
echo "y... ({$i};{$y})\n";
if (isset($cell[$i][$y])) {
$cut[] = $cell[$i][$y];
}
}
while (true) {
$random = rand(1, 3);
if (!in_array($random, $cut)) {
break;
}
}
$cell[$x][$y] = $random;
}
}
print_r($cell);
Code:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 2
[1] => 1
[2] => 1
)
[2] => Array
(
[0] => 1
[1] => 3
[2] => 2
)
)
------------------------------------------------------------------------------------------------------------------
Jetzt aber... Wie gesagt, wirklich dummer Denkfehler
PHP:
<?php
$cell = array();
for ($x = 0; $x < 3; ++$x) {
for ($y = 0; $y < 3; ++$y) {
$cut = array();
echo "({$x};{$y})\n";
echo "-----\n";
// Reihe
for ($i = 0; $i < $x; ++$i) {
$cut[] = $cell[$i][$y];
}
// Spalte
for ($i = 0; $i < $y; ++$i) {
$cut[] = $cell[$x][$i];
}
print_r($cut);
while (true) {
$random = rand(1, 3);
if (!in_array($random, $cut)) {
break;
}
}
$cell[$x][$y] = $random;
}
}
print_r($cell);
Zuletzt bearbeitet: