perl Kreuzwortraetsel
Markus Banach
- perl
0 Cheatah
Veehrte Forumsleser,
ich sitze vor einem (fuer mich) kniffligen Perl Problem.
Ich habe ein array mit String Werten.
Wenn $array[x] == $array[x-1] dann sollen beide Elemente der Liste als Identifikation die gleiche Zahl erhalten.
Beispiel :
$array[0] == "bernd" und $array[1] == $array[0], dann sollen
$array[0] und $array[1] "1 bernd" als neuen Wert erhalten. Mit
der 1 als Identifikation.
$array[x+1] soll jetzt mit $array[x] verglichen werden.
Wenn $array[x+1] == $array[x] dann wie oben beschrieben.
Wenn $array[x+1] != $array[x], dann soll fuer $array[x+1] die
Identifikation um 1 erhoet werden (Identifikation++;) .
$array[x+2] soll jetzt mit $array[x+1] verglichen werden ...
Am Ende sollen alle Elemente des Feldes die direkt aufeinander folgen und den gleichen Wert haben auch die gleiche Identifikation besitzen.
Ich bedanke mich fuer Ihre Aufmerksamkeit !
Markus Banach
Hi,
dieses Problem solltest Du vielleicht mit zwei verschiedenen Arrays lösen; eines enthält die Begriffe, das andere die zugehörigen Werte. Andernfalls müßtest Du mit ziemlich kniffeligen split-Konstrukten arbeiten, was sowohl problemanfällig als auch speicher- und zeitaufwendig ist. Mit diesem Ansatz solltest Du eigentlich selbst zur Lösung kommen; ich möchte hier nur noch mal auf ein paar mögliche Fehlerquellen eingehen:
Wenn $array[x] == $array[x-1] dann sollen beide Elemente der Liste als Identifikation die gleiche Zahl erhalten.
$array[x] - das "x" ist wahrscheinlich hier nur ein Platzhalter, aber falls nicht: "$x" macht sich an der Stelle besser.
Beispiel :
$array[0] == "bernd" und $array[1] == $array[0], dann sollen
$array[0] = 0;
print "Ja!" if ($array[0] == "bernd");
=> Ja!
Zum Vergleich von Strings mußt Du eq statt ==, ne statt !=, lt statt <, gt statt >, le statt <= und ge statt >= benutzen. Andernfalls werden die Werte als Zahl interpretiert.
Ich hoffe, das hilft!
Cheatah