Was ist die Idee hinter diesem Programm, und wie vermeidet es nichtzusammenhängende Wege?
Hallo Georg,
ich habe deine Frage erst heute gelesen. Die Idee des Programms ist, die Felder von links oben nach rechts unten zeilenweise durchzugehen und zu schauen, welches der 6 Kurventeile hineinpasst. Dabei tracke ich als status die offenen Enden. Die Codierung ist in folgendem Beispiel gezeigt:
Hier ist der status in der zweiten Zeile und 5. Spalte codiert durch 0100(0)1202. Vor der Klammer stehen die nach unten offenen Enden der neuen (zweiten) Zeile, in Klammern das offene Ende des linken Nachbarn des aktuellen Feldes, und danach die offenen Enden der vorhergehenden (ersten) Zeile. Man kann sich überlegen, dass es immer nur eine oder zwei Möglichkeiten gibt, Kurventeile einzupassen.
Einen rekursiven Aufruf starte ich nur, wenn ich ein gerades Stück einfügen kann oder muss. Den Fall eines Kurvenstückes behandle ich ohne rekursiven Funktionsaufruf. Nicht zusammenhängende Wege werden dadurch vermieden, dass zwei offene Enden mit der gleichen Kennung nur beim Erreichen des letzten Feldes zusammengefügt werden dürfen.