Kürzlich habe ich eine Frage zu Diffy-Spielen gepostet, die unbeantwortet geblieben ist. Das ist in Ordnung, die Frage ist wirklich schwierig, aber ich möchte eine einfachere Frage zu Diffy-Spielen stellen, damit wir den Ball ins Rollen bringen können.
Wie funktioniert Diffy?
Das Diffy-Spiel funktioniert wie folgt: Sie beginnen mit einer Liste nicht negativer Ganzzahlen, die wir in diesem Beispiel verwenden werden
3 4 5 8
Dann nehmen Sie die absolute Differenz zwischen benachbarten Zahlen
(8) 3 4 5 8
5 1 1 3
Dann wiederholst du. Sie wiederholen, bis Sie feststellen, dass Sie in eine Schleife eingetreten sind. Und dann fängt das Spiel in der Regel wieder von vorne an.
3 4 5 8
5 1 1 3
2 4 0 2
0 2 4 2
2 2 2 2
0 0 0 0
0 0 0 0
Die meisten Spiele enden in einer Folge von Nullen, was als Verlust betrachtet wird, aber einige wenige Spiele bleiben in größeren Schleifen stecken.
Aufgabe
Bestimmen Sie anhand des Anfangszustands eines Diffy-Spiels, ob das Spiel schließlich einen Zustand aller Nullen erreicht. Sie sollten für jeden der beiden Zustände einen Wert für Wahr oder Falsch ausgeben. Was was entspricht ist egal.
Ziel ist es, die Anzahl der Bytes in Ihrer Quelle zu minimieren.
1 1 0
ist periodisch, so 42 42 41
ist ein solcher Zustand.
n
ungerade ist, geht das Spiel nicht auf Null, es sei denn, alle Zahlen sind gleich. Wenn die Länge eine Zweierpotenz ist, geht sie immer auf Null.
n
Elementen und Maximum besteht aus m
höchstens n * bit_length(m)
Schritten. Ist n*m
also auch eine Obergrenze. Eine stärkere Obergrenze ist t(n) * bit_length(m)
, wo t(n)
die größte Potenz von 2 ist, die ein Faktor von ist n
.