Tuppers Selbstreferenzformel (kopiert aus Wikipedia)
Tuppers Selbstreferenzformel ist eine von Jeff Tupper definierte Formel, die, wenn sie in zwei Dimensionen an einer bestimmten Stelle in der Ebene grafisch dargestellt wird, so programmiert werden kann, dass sie die Formel selbst visuell reproduziert. Es wird in verschiedenen Kursen in Mathematik und Informatik als Übung für grafische Formeln verwendet.
Wo ist die Bodenfunktion.
Es k
sei die folgende 543-stellige Zahl:
960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014655997933798537483143786841806593422227898388722980000748404719
Wenn man Graphen die Menge der Punkte (x, y)
in 0 <= x < 106
und k <= y < k + 17
die Ungleichung gegeben oben, die resultierende Graph sieht wie folgt aus (beachten Sie, dass die Achsen in diesem Diagramm sind vertauscht, da sonst das Bild kommt aus dem Kopf nach unten):
Na und?
Das Interessante an dieser Formel ist, dass sie verwendet werden kann, um alle möglichen Schwarzweißbilder mit 106 x 17 zu zeichnen. Das Durchsuchen zur Suche wäre extrem mühsam. Sie können also den k-Wert ermitteln, auf dem Ihr Bild angezeigt wird. Der Prozess ist ziemlich einfach:
- Beginnen Sie mit dem unteren Pixel der ersten Spalte Ihres Bildes.
- Wenn das Pixel weiß ist, wird eine 0 an den k-Wert angehängt. Wenn es schwarz ist, fügen Sie eine 1 hinzu.
- Verschieben Sie die Spalte nach oben und wiederholen Sie Schritt 2.
- Wechseln Sie am Ende der Spalte zur nächsten Spalte und beginnen Sie von unten nach dem gleichen Verfahren.
- Nachdem jedes Pixel analysiert wurde, konvertieren Sie diese Binärzeichenfolge in eine Dezimalzahl und multiplizieren Sie sie mit 17, um den k-Wert zu erhalten.
Was ist mein Job?
Ihre Aufgabe ist es, ein Programm zu erstellen, das ein beliebiges 106x17-Bild aufnehmen und dessen entsprechenden k-Wert ausgeben kann. Sie können folgende Annahmen treffen:
- Alle Bilder werden genau 106x17 sein
- Alle Bilder enthalten nur schwarze (# 000000) oder weiße (#FFFFFF) Pixel, nichts dazwischen.
Es gibt auch ein paar Regeln:
- Ausgabe ist einfach der k-Wert. Es muss sich in der richtigen Basis befinden, kann aber in jedem Format vorliegen.
- Bilder müssen entweder aus einem PNG oder PPM gelesen werden.
- Keine Standardlücken.
Bilder testen
[ ] sollte ~ 1,4946 x 10 542 ergeben
[ ] sollte ~ 7.2355x10 159 ergeben
[ ] sollte 2 1801 * 17 ergeben
[ ] sollte (2 1802 -1) * 17 ergeben
In dieser Übersicht finden Sie die genauen Lösungen.
Das ist Code-Golf , also gewinnt die geringste Anzahl von Bytes.
Nützliche Links
quine
irgendwo sehen werde, bevor ich zum Teil "Was ist mein Job" komme .