Hallo Experten!
Folgendes versuche ich gerade:
Ich bin ein großer Fan von Kakuro (http://de.wikipedia.org/wiki/Kakuro) und wollte mir es etwas einfacher machen (und mal wieder zwischendurch PHP coden) und mir ein kleines Codeschnipsel schreiben, dass mir durch Angabe der Feldanzahl und des gewünschten Ergebnisses alle verfügbaren Zahlenkombinationen angibt.
Die etwas stupide Idee, das zu lösen ist einfach einen Array mit der Feldlänge aufzubauen, alle möglichen Kombinationen einzutragen und über array_sum() zu prüfen, ob ich ein Ergebnis habe. Kann man vermutlich auch irgendwie anders lösen, aber bleiben wir mal dabei.
Ich habe auch jetzt eine Funktion, die mir das gewünschte Ergebnis „sozusagen“ liefert:
function calErg($arrPosi, $fanzahl, $eArray, $sum)
{
$zus=array();
for ($h=1; $h ";
}
}
return $zus;
}
$alles=calErg(0, $feldanzahl, $ergebnisarray, $ergebnis);
Ich fange meinen Array mit 0 an, übergebe die Feldanzahl, das Array, das ich betrachte und die Summe, die ich Suche. Das Array wird davor mit 1en gefüllt (weil sonst findet er auch einzelne Zahlen). Das ganze rufe ich dann entsprechend Rekursiv auf.
Nicht schön aber selten und vor allem habe ich zwei Probleme:
- Warum auch immer, bekomme ich jedes (?) Ergebnis zweimal angezeigt.
- Gibt es natürlich doppelte Ergebnisse
(Ja, hier ist „doppelt“ und „zweimal“ anders gemeint )
Für die Feldanzahl 2 und Ergebnis 3 gibt es die Ausgabe:
12
12
21
21
Beide Probleme könnte ich lösen, wenn ich meine Ergebnisarrays sortiere (ist hier auskommentiert drin für Problem 2) und dann alle in einen „globales“ Array schieben könnte (also ein Array von Arrays, ist ja grundsätzlich kein Problem) und dann mir einfach mit array_unique() das ganze einschrumpfe.
Doch wie komme ich mit der Funktion da raus? Ich habe es mit der Rückgabe $zus versucht, was nicht so wirklich funktioniert… zudem kann die Funktion ja nicht nach „draussen“ zugreifen … oder ist das irgendwie möglich und ich weiss es jetzt nicht?
Danke für Hilfestellungen!
grüße
Geisterkarle