Array ausserhalb einer Funktion beschreiben?

Hallo Geisterkarle,

Hallo!

egal, wenn du in einer Funktion auf eine globale Variablen
zugreifen willst, dann geht das so:

Hab ich inzwischen auch rausgefunden! Mach es jetzt auch so; auch wenn Kollege Stefan das „unschön“ findet :stuck_out_tongue:

leider versteh ich nicht wirklich, was du machen willst, aber

Mir tut grad das Kreuz weh, also hab ich Zeit das zu erklären :stuck_out_tongue:
Also hab ja das Spiel Kakuro erwähnt. Bei großen Kakurofeldern, die auch noch entsprechend schwierig gestaltet sind muss man - ich zumindest, sonst komm ich da nicht zum Ergebnis - erstmal in die Felder alle möglichen Zahlenkombinationen eintragen.
Eindeutige Kombinationen, wie „3 Felder und Ergebnis 24 kann nur 789 sein - muss ich nur noch die Reihenfolge finden“ hab ich im Kopf.
Hab ich dagegen 4 Felder mit Ergebnis 24, habe ich ganze 8 Möglichkeiten:
1689
2589
2679
3489
3579
3678
4569
4578

DIE hab ich jetzt nicht auswendig im Kopf! Bisher ergrübele ich mir die „mühsam“ Daher wollt ich jetzt mir in PHP kleines Programm schreiben, die mir die berechnet. Dafür baue ich jetzt ein Array auf, dass so viele Indizes hat wie Felder. Diese Indizes fülle ich jetzt einfach rekursiv 1-9 und prüfe jede Möglichkeit auf Zahleneinzigartigkeit und korrektes Ergebnis und speichere das gefundene Array in einem Ergebnisarray, das ich nochmal vereinzigartige (sonst finde ich 789 und 987 als zwei Ergebnisse, obwohl es gleich ist).

Ich hoffe, dass ich dir helfen konnte.

Bisle zu spät :wink: Aber danke trotzdem!
Hoffe konnte dir erläutern, was ich tue!

Gruß Daniel

Grüße
Geisterkarle

PS:
Falls wen jetzt mein „endgültiger“ Code interessiert:

<?php // Zu suchen:<br />$feldanzahl=4;
$ergebnis=24;

// hilfsarray für suche
$ergebnisarray=array();

// suchergebnisse
$allErg=array();

// hilfsarray mit 1en füllen
for ($i=0; $i \< $feldanzahl; $i++)
{
 $ergebnisarray[$i]=1;
}

// eigentliche suchfunktion
function calErg($arrPosi, $eArray)
{
 // globale deklarierung
 global $allErg, $feldanzahl, $ergebnis; 
 for ($h=1; $h \<= 9; $h++)
 {
 // rekursiver aufruf aller feld-positionen
 if ($arrPosi \< $feldanzahl-1)
 {
 calErg($arrPosi+1,$eArray);
 }
 $eArray[$arrPosi]=$h;
 // array auf ergebnis prüfen
 if (count($eArray) == count(array\_unique($eArray)) && array\_sum($eArray) == $ergebnis)
 {
 // sortieren
 sort($eArray);
 // in Ergebnisarry speichern
 $allErg[]=$eArray;
 // in dieser FOR-Schleife wird kein weiteres Ergebnis sein
 break;
 }
 }

}

// array\_unique für Mehrdimensionale Arrays
function super\_unique($array)
{
 $result = array\_map("unserialize", array\_unique(array\_map("serialize", $array)));

 foreach ($result as $key =\> $value)
 {
 if ( is\_array($value) )
 {
 $result[$key] = super\_unique($value);
 }
 }

 return $result;
}

// Eigentliche Suche
calErg(0, $ergebnisarray);

// Einzigartig
$allErgU=super\_unique($allErg);
// "Lücken" in Array-Indizes beseitigen
$allErgV=array\_values($allErgU);

echo " ";

// Ausgabe
if (count($allErgV) ";
 }
}

?\>