JWINF-Trainingsaufgabe "Fischen" (Python)?

Hallo,

ich bereite mich momentan auf den Jugendwettbewerb in Informatik vor. Bei den Trainingsaufgaben bin ich aber auf eine Aufgabe gestoßen, die ich nicht lösen konnte. Gegeben ist das "Insel"-Problem (siehe Aufgabenstellung), bei dem der Roboter die Fische aus den Netzen aufsammeln und auf den Inseln abliefern soll. Soweit nicht sonderlich schwierig, dies lässt sich mit wenigen for-Schleifen und if-Fallunterscheidungen lösen. Das Problem:

  1. Der Roboter darf nur versuchen einen Fisch abzuliefern, wenn er auch einen Fisch transportiert (genauere Informationen siehe Bild mit "Weiteren Hinweisen"). So erledigen sich Schleifen, wie dass der Roboter sich immer bewegen soll und wenn er auf einem Fisch ist diesen aufsammeln soll und wenn er auf einer Insel ist einen Fisch abliefern soll, da es bspw. vorkommt dass zuerst Inseln kommen und erst danach Fische zum aufsammeln.
  2. Die Inseln sind "zufälig", bzw. ohne Muster platziert, d.h. Fisch und Insel sind z.B. nicht immer nur 5 Felder voneinander entfernt. KORREKTUR: Die Grafik ist maßstabsgetreu und die Inseln und Fische sind genau auf den in der Grafik angegebenen Felder, ihre Position verändert sich nicht mehr. Nur ich erkenne hier halt kein Muster.
  3. Man darf nur for-Schleifen und Fallunterscheidungen benutzen, keine while-Schleifen etc.

Ich hoffe dass wer eventuell einen Lösungsvorschlag oder zumindest Tipps und Ideen hat. Vielen Dank im Voraus : )

Bild zum Beitrag
Informatik, Python
While Schleife beenden mit kbhit in Programmiersprache C?

Hallo, ich habe folgende while Schleife die mir eine 10GB große .csv Datei nach einem bestimmten String durchsucht. Da die Suche etwas lange dauert möchte ich gerne die While schleife verlassen indem ich eine bestimmte Taste drücke, z.b "y". Habe dazu eine break Bedingung mit kbhit versucht umzusetzen:

Allerdings dauert die Suche mit der Abbruchbedingung break und kbhit sehr viel länger als ohne diese Funktion. Weiß jemand warum?

Bzw. kann ich auf einem anderen Weg die While Schleife verlassen sobald ich eine bestimmte Taste drücke?

  while(fgets(puffer, BUF, f) != NULL)
    {
       if(kbhit())
            {
            int key = getch();
            if(key == 'y')
                {
                    break;
                }
            }


        strcpy(puffer_bak, puffer);
        wort = strtok(puffer, trennzeichen);
        permno = atoi(wort);

        while(wort != NULL)
        {

            if(strcmp(wort,searchstring)==0)
            {

                if(permno!=permno_alt)
                {
                    printf("%s",puffer_bak);

                }
                permno_alt=permno;

            }

            wort = strtok(NULL,trennzeichen);
        }
    }
    fclose(f);
Informatik, programmieren c

Meistgelesene Beiträge zum Thema Informatik