faecher:informatik:oberstufe:java:aoc:aoc2021:day24:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:java:aoc:aoc2021:day24:start [26.12.2021 15:28] – [Was passiert also?] sbelfaecher:informatik:oberstufe:java:aoc:aoc2021:day24:start [26.12.2021 18:50] (aktuell) – [Zusammenfassung] sbel
Zeile 58: Zeile 58:
  
 (''div z 1'' und ''add x <WERT>'' mit ''<WERT> > 0'') (''div z 1'' und ''add x <WERT>'' mit ''<WERT> > 0'')
 +<code>
 +Ziffer(w)                   z
 +Start                       0
 +3             3+ADD_TO_Y      3+ADD_TO_Y
 +2             2+ADD_TO_Y      (26*z1) + (2+ADD_TO_Y)
 +4             4+ADD_TO_Y      (26*z2) + (4+ADD_TO_Y)
 +....
 +</code>
  
 +=== Variante B ===
 +
 +Wenn auf die obige Folge nun Variante B angewendet wird, erhält man in Zeile 4 den zuletzt abgelegten Wert im Register ''x'' zurück:
 +
 +<code>
 +z3 = (26*z2) + (4+ADD_TO_Y) % 26 -> (4+ADD_TO_Y)
 +</code>
 +Außerdem wird z durch 26 dividiert, d.h. in ''z'' steht anschließend der vorige z-Wert:
 +<code>
 +z4 = z3  % 26 ->  (26*z2)
 +</code>
 +
 +In ''x'' ist jetzt die vorige Ziffer der Modellnummer + das ADD_TO_Y aus dem vorigen Anweisungsblock gespeichert.
 +
 +Jetzt kommt es darauf an, ob die Bedingung 
 +<code>
 +Vorige Ziffer + ADD_TO_Y - ADD_TO_X = aktuelle Ziffer  (*) 
 +</code>
 +
 +erfüllt ist. Wenn ja, bleibt der Wert vom Stapel entfernt, wenn nein wird ''z'' in Zeile 13 wieder mit 26 multipliziert und der Wert wandert damit wieder auf den Stack.
 +
 +(*) ist also die Bedingung, die erfüllt sein muss, damit der Stack kleiner wird.
 +
 +==== Zusammenfassung ====
 +
 +Im Puzzle-Input gibt es 7 Blöcke, die auf jeden Fall ''(Ziffer+ADDTO_Y)'' auf den Stack pushen. Außerdem gibt es 7 Blöcke, die bei erfüllen der Bedingung (*) einen Wert vom Stapel entfernen. Jeder dieser 7 Blöcke definiert eine Bedingung zwischen zwei der 14 Ziffern der Modellnummer - diese müssen also alle erfüllt sein, dann ist die Modellnummer gültig. 
  
  
  • faecher/informatik/oberstufe/java/aoc/aoc2021/day24/start.1640532485.txt.gz
  • Zuletzt geändert: 26.12.2021 15:28
  • von sbel