Wie vom Spiel vorgeschlagen kopiere ich mein Programm aus Level 24. Beim Subtrahieren der zweiten Zahl von der ersten wird nun die erste Zahl mit dem Ergebnis überschrieben - solange dies nicht negativ ist - und die Anzahl an erfolgreichen Durchläufen wird gespeichert und letztendlich ausgegeben.
Die Dialoge in den Level selbst sind natürlich reine Satire wie auch schon der Titel des Spiels. Doch was ist mit den Zwischensequenzen? Es kam zu Stromausfällen, woran vermutlich diese Maschinenarmee Schuld sein könnte. In der letzten Sequenz wirkt es so, als würden die Maschinen bereits die Menschen überwachen und würden als solche gar nicht mehr wahrgenommen.
Das Speichern der eingehenden Werte ist bereits vorgegeben. Ich beschrifte die Kacheln und da der Angestellte am bisherigen Programmende noch Z in der Hand hat, vergleiche ich diese mit den anderen Werten.
Anfangs dachte ich, ich würde das Ergebnis des Größenvergleichs in 1, 2 und 3 speichern, aber diesen Gedanken verwerfe ich wieder. Übrigens unterscheide ich nicht, ob zwei Zahlen gleich groß sind, weil dies keinen Unterschied in der Ausgabe macht.
Weiter geht's mit der Fallunterscheidung und nun wird auch entsprechend ausgegeben.
Das Programm funktioniert schon mal.
Von der Größenoptimierung sind wir weit entfernt, aber da habe ich schon eine Idee. Doch zuerst werde ich versuchen das vorhandene Programm um drei Schritte zu stutzen.
Ich ändere das Programm nach folgender Logik: Wenn ich weiß, dass Z größer Y ist, prüfe ich im Anschluss ob Y größer X ist. Wenn dies der Fall ist sparen wir eine weitere Fallbetrachtung.
Das Programm muss daraufhin weiter umgeschrieben werden.
Es kommt zur falschen Ausgabe. Der Fehler ist aber schnell gefunden, in Zeile 44 habe ich ausversehen den falschen JUMP benutzt.
Nach der Korrektur läuft das Programm erfolgreich durch und die Laufzeitoptimierung ist abgeschlossen.
Mit Maximal 34 Befehlen soll das Programm umsetzbar sein. Mein ursprünglicher Gedanke war, das Ergebnis der Unterscheidungen zwischen zu speichern. Dann hätten wir eine einzige Ausgabe für alle Fälle. Jedoch bin ich mir nicht sicher, wie ich dann die Dreierordnung in 21 Zeilen bestimmen soll.
Neuer Ansatz, bevor die dritte Zahl genommen wird, vergleichen wir welche der ersten beiden Zahlen größer ist. Sollte die zweite Zahl größer sein vertauschen wir den Speicherplatz beider Zahlen miteinander.
Nun teste ich, ob die dritte Zahl kleiner als die kleinste Zahl der beiden vorherigen ist. Wenn nicht, testen wir ob die dritte Zahl größer als die größere Zahl der anderen beiden ist. So kommen wir auf drei unterschiedliche Möglichkeiten der Ausgabe, die jedoch die Vorgaben an Befehlen sprengen.
Eine Ausgabe fehlt und ich bin schon bei Zeile 34.
Ein weiterer Ansatz, der das Programm immerhin auf 39 Zeilen runterbringt. Ich speichere die erste Zahl an den Kacheln 1 und 2. Wenn die zweite Zahl kleiner als die erste ist, wird diese in Kachel 1 gespeichert, andernfalls in Kachel 2. Wenn die dritte Zahl größer als die Zahl in Kachel 2 ist, speicher ich die dritte Zahl in Kachel 3 und gibt die Zahlenfolge aus. Wenn nicht rücken die Zahlen in den Kacheln nach rechts auf. Die dritte Zahl wird mit der Zahl in Kachel 1 verglichen und abhängig davon in Kachel 1 oder 2 gespeichert. Danach folgt die Ausgabe.