Der Knall aus der letzten Zwischensequenz scheint aus diesem Raum gekommen zu sein.
Ich benutze drei Werte. Die vorgebene Null bezeichne ich als Max und hier wird an die letzte der oben gespeicherten Kacheln verwiesen. Links daneben ist der Durchlauf, der notwendig ist um auf die bereits abgespeicherten Werte zuzugreifen. In Inbox wird mal wieder die aktuelle Inbox gespeichert, wobei die erste Inbox ohne weiteres gespeichert und ausgegeben wird.
Danach beginne ich mit der nächsten Inbox und starte den Vergleich.
Im letzten Bild hatte ich einen kleinen Denkfehler, den ich korrigiere. So subtrahiere ich natürlich den Durchlauf und nicht Max ab. Der Durchlauf wird vermindert, wenn dieser im negativen Bereich landet, ist die aktuelle Inbox kein Duplikat. Sie wird gespeichert und ausgegeben.
In Zeile 12 und 13 vollende ich die Schleife und das Programm kann ausgeführt werden.
Laufzeitziel wurde gleich erreicht, nur für die Größe muss ich mit einem Befehl weniger auskommen. Vielleicht gelingt mir das, in dem ich die erste Inbox in die Schleife miteinbinde.
Gut, dann fangen wir mal an. Die 0 brauchen wir für das erste Wort, die 10 für das zweite. Da wir beide Werte auch noch zum Aneinanderreihen der Buchstaben benötigen, kopiere ich beide Werte in andere Kacheln.
Die Inbox ist wieder nullterminiert, also sollen beide Worte buchstabenweise gespeichert werden, bis zur nächsten Null in der Inbox.
Danach setze ich den Wert von 1 und 2 auf ihren Ursprung zurück, um bei beiden Worten mit dem Anfangsbuchstaben anfangen zu können. Damit werde ich vermutlich kein Optimierungsziel erreichen, aber das komplexere Programm möchte ich doch erstmal zum Laufen bringen, bevor wir es verbessern.
Nun starten wir den Vergleich, solange beide Buchstaben gleich sind, wird das nächste Paar verglichen.
Sobald die Buchstaben nicht identisch sind, beginnen wir mit der Ausgabe von eins der beiden Wörter.
Allerdings können wir die Ausgabe so nicht ungehindert durchführen lassen, da sonst auf Kacheln zugegriffen wird, denen gar kein Wert zugewiesen wurde. Daher bestimmen wir anhand des Schrittzählers die Wortlänge und geben nur bis dieser aus.
Voller Optimismus legt der Angestellter los.
Es sieht doch gar nicht so schlecht aus.
Fehlermeldung! Ich habe das "größere" Wort anstatt des "kleineren" ausgegeben, da hatte ich einen Denkfehler, aber da braucht man ja nur den Inhalt zweier Schleifen oder die JUMP-Zuweisung vertauschen. Mir fiel aber auch sofort ein Schusslichkeitsfehler auf, so müssen Zeile 32 und 33 auch noch getauscht werden.
Einem anderem Problem wird mir nun aber auch bewusst, ich gebe das Wort nur bis zu der Stelle aus, wo die Buchstaben beider Wörter nicht mehr übereinstimmen.
Also gehe ich erstmal die beiden kleinen Dinge an, vertausche die beiden falschen JUMPs sowie die Ausgabe der Wörter.
Nun bestimme ich die neue Kachel X und setze sie auf den Wert 4. Das ist genau der Wert um von 0 und 10 auf die jeweilige letzte Kachel der Wörter mit fünf Buchstaben zu kommen. Die Ausgabe wird nun auch auf X angepasst.
Wieder legt der Angestellte los!
Das Programm ist erfolgreich, jedoch nur bei der aktuellen Eingabe.
So werden uns nun Wörter bestehend aus vier Buchstaben in die Inbox gelegt. Das aktuelle Programm ist nicht dynamisch genug, um damit umzugehen.
Also verwerfe ich X und erstelle stattdessen X1 und X2. Diese Kacheln sollen die Länge beider Wörter seperat speichern.
Sobald in der Inbox die Null errreicht wird, können wir die maximale Wortlänge bestimmen und speichern die in X1 bzw. X2.
Mit großer Hoffnung macht sich der Angestellte wieder ans Werk.
Doch das Programm ist wieder nicht flexibel genug.
Ich lasse das Programm mit der neuen Inbox durchlaufen und bemerke, was ich vergessen habe.
Die Ausgabe ist zwar nun an die Länge beider Worte angepasst, aber der Vergleich nicht. So wird bei unterschiedlicher Wortlänge auf eine leere Kachel zugegriffen.