Angenommen , wir eine unendliche Matrix definieren M
, auf N^2 -> {0, 1}
(wobei N
beginnt ab , 1
statt 0
) in dieser Art und Weise:
M(1, 1)
=0
.Für jeden
x > 1
,M(x, 1)
=1
wennx
ist Primzahl und0
sonst.Für jeden
y > 1
,M(1, y)
= dery
th Begriff in derThue-Morse sequence
.Für jeden
x, y > 1
,M(x, y)
=M(x, y-1) + M(x-1, y) mod 2
.
Der obere linke 16x16
Abschnitt dieser Matrix sieht wie folgt aus (wobei x
es sich um Zeilen und y
Spalten handelt):
0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0
1 0 1 1 0 0 0 1 0 0 0 1 1 0 1 1
1 1 0 1 1 1 1 0 0 0 0 1 0 0 1 0
0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1
1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 1
0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1
1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1
0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1
0 1 0 1 0 1 1 1 1 1 0 0 0 0 0 1
0 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0
1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 1
0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1
1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0
0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1
0 1 0 1 1 1 0 0 0 1 1 0 1 1 0 1
0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 1
Ihre Aufgabe ist es, ein Programm zu erstellen, das den Wert eines beliebigen Eintrags in dieser Matrix so genau wie möglich auswertet.
Ihr Programm nimmt zwei ganze Zahlen x
und y
gibt sie in einer beliebigen Form als Eingabe ein und gibt sie zurück M(x, y)
, entweder 0
oder 1
.
Ihr Code kann in einer beliebigen Sprache geschrieben sein, darf jedoch 64 Kilobyte (65.536 Bytes) Quellcodegröße oder 2 MB (2.097.152 Bytes) Gesamtspeicherauslastung nicht überschreiten. Ihr Programm muss mit leerem Speicher beginnen (dh es kann keine Daten von einer anderen Stelle laden) und muss für jede Eingabe unabhängig ausgeführt werden (d. H., Es darf keine gemeinsamen Daten für mehrere Durchläufe speichern). Ihr Programm muss außerdem in der Lage sein, alle Einträge im oberen linken 8192x8192
Quadrat in angemessener Zeit auszuwerten .
Das Programm, das die meisten Einträge im oberen linken 8192 x 8192
Quadrat richtig auswertet, wird der Gewinner sein, wobei ein kürzerer Code als Auslöser fungiert.