Kocha
Gesperrt
Hallo Leute
Ich hab da so ne Aufgabe, bei der ich die Lösung einfach nicht finde :O
Es geht um diese Rätsel, die auf allen möglichen Fernsehsendern jede Nacht laufen.
Eines davon ist ein Spiel, man hat eine Matrix von Buchstaben und muss herausfinden, wie oft sich das gesuchte Wort darin befindet.
Also zb. hier:
PETERG
EPTDFP
TERGGF
XTTARD
PPGRGF
kommt das Wort "PETER" 8mal vor.
Nun verlangt die Aufgabe, dass die Matrix aus einer Datei eingelesen wird, das Wort per Kommandozeilenparameter mitgegeben wird und das Programm dann ausspuckt, wie oft sich das Wort darin befindet.
Das Wort wird um die Ecke gelesen, diagonal ist nicht.
Die Bewegungsrichtung darf sich dabei beliebig oft ändern, allerdings darf ein Buchstabe ein Buchstabe im selben Wort nicht mehrere Male verwendet werden.
Nun ist das Problem, dass die Länge des Wortes, das man übergibt, dynamisch ist. Folglich kann man das ganze ja nicht einfach mit mehreren Schlaufen lösen. Also eine Verkettung der Art:
for(i=0;i<laenge_der_matrix*höhe_der_matrix;i++) //für jeden Anfangsbuchstaben
{
for(j=0;j<4;j++) // für alle Möglichkeiten des 2. Buchstabens
{
for(l=0;l<3;l++) //für alle Möglichkeiten des 3. Buchstabens
{
... //Wenn alle 3 Buchstaben stimmen, anzahl++
}
}
}
Man kann ja nicht eine dynamische Anzahl for-Schlaufen machen
Oder gibt's die und ich komm bloss nich drauf?
Möglicherweise hatte einer von Euch die Aufgabe auch mal im Studium, wäre echt froh, wenn mir jemand helfen könnte.
Grüsse
PS: Falls ich nich verständlich formuliert hab, ist hier das Aufgabenblatt, es ist die unterste Aufgabe, Aufgabe 3
Ich hab da so ne Aufgabe, bei der ich die Lösung einfach nicht finde :O
Es geht um diese Rätsel, die auf allen möglichen Fernsehsendern jede Nacht laufen.
Eines davon ist ein Spiel, man hat eine Matrix von Buchstaben und muss herausfinden, wie oft sich das gesuchte Wort darin befindet.
Also zb. hier:
PETERG
EPTDFP
TERGGF
XTTARD
PPGRGF
kommt das Wort "PETER" 8mal vor.
Nun verlangt die Aufgabe, dass die Matrix aus einer Datei eingelesen wird, das Wort per Kommandozeilenparameter mitgegeben wird und das Programm dann ausspuckt, wie oft sich das Wort darin befindet.
Das Wort wird um die Ecke gelesen, diagonal ist nicht.
Die Bewegungsrichtung darf sich dabei beliebig oft ändern, allerdings darf ein Buchstabe ein Buchstabe im selben Wort nicht mehrere Male verwendet werden.
Nun ist das Problem, dass die Länge des Wortes, das man übergibt, dynamisch ist. Folglich kann man das ganze ja nicht einfach mit mehreren Schlaufen lösen. Also eine Verkettung der Art:
for(i=0;i<laenge_der_matrix*höhe_der_matrix;i++) //für jeden Anfangsbuchstaben
{
for(j=0;j<4;j++) // für alle Möglichkeiten des 2. Buchstabens
{
for(l=0;l<3;l++) //für alle Möglichkeiten des 3. Buchstabens
{
... //Wenn alle 3 Buchstaben stimmen, anzahl++
}
}
}
Man kann ja nicht eine dynamische Anzahl for-Schlaufen machen
Oder gibt's die und ich komm bloss nich drauf?
Möglicherweise hatte einer von Euch die Aufgabe auch mal im Studium, wäre echt froh, wenn mir jemand helfen könnte.
Grüsse
PS: Falls ich nich verständlich formuliert hab, ist hier das Aufgabenblatt, es ist die unterste Aufgabe, Aufgabe 3