Wir alle kennen oder haben zumindest von Brainfuck gehört , einer der bekanntesten und einflussreichsten esoterischen Sprachen. Während heutzutage die meisten Implementierungen ein unendliches Band verwenden, hatte der ursprüngliche Compiler von Urban Müller ein Band mit 30000 Zellen. Eine wenig bekannte Tatsache * ist, dass es am Ende des Bandes einen speziellen Wert gibt, mit dem in einem typischen Brainfuck-Programm so gut wie nie interagiert wird.
Während Sie diesen Wert mit 29999 >
s und a ausgeben können .
, ist brainfuck für seine kurzen und präzisen Lösungen bekannt. Daher ist es Ihr Ziel, diesen Wert mit der Mindestanzahl von Zeichen auszudrucken.
*Fiktion
Regeln:
- Eine Auffrischung der Brainfuck-Anleitung:
+
/-
: Inkrementiert / dekrementiert die aktuelle Zelle und hüllt sie von 255 auf 0 auf, wenn 255 inkrementiert wird, und umgekehrt<
/>
: Bewegen Sie den Zeiger auf dem Band nach links / rechts.
: Gibt den Wert der aktuellen Zelle aus.[
: Springe zum entsprechenden]
Wert, wenn der Wert in der Zelle 0 ist]
: Zum entsprechenden springen,[
wenn der Wert in der Zelle nicht 0 ist
- In diesem Fall hat
,
(Get input) keine Auswirkung, da der ursprüngliche Compiler die Zelle in EOF unverändert lässt und dieses Programm keine Eingaben erhalten sollte. - Das Band ist anfänglich mit allen Nullen gefüllt, mit Ausnahme der Zelle 30000, die einen unbekannten Wert enthält
- Der Zeiger beginnt in Zelle 1 und sollte in Zelle 30000 enden, nachdem er gedruckt wurde.
- Die Zellen links von 1 und rechts von 30000 weisen ein undefiniertes Verhalten auf. Daher sollten Lösungen diese Zellen nicht besuchen.
- Beachten Sie, dass der Wert bei 30000
istkann eine 0 sein , so einfach Looping , bis Sie eine Nicht-Null - Zelle getroffen wird nicht funktionieren. - Sie sollten nur den Wert in Zelle 30000 drucken
- Die kürzeste Lösung gewinnt!
- Tie-Breaker ist das effizientere Programm (wird in den wenigsten Schritten ausgeführt), gefolgt von der schnellsten Einreichungszeit.
Tipp: Esolanging Fruit empfiehlt die Verwendung von https://copy.sh/brainfuck zum Testen Ihres Codes. Die technischen Daten entsprechen den Angaben in dieser Herausforderung. Sie können die abort
Option so auswählen, dass Ihr Programm angehalten wird, wenn die Grenzen überschritten werden.
.
. Ich gewinne.Antworten:
54 Bytes
119 x 252 = 29988. Einfache verschachtelte Schleife.
Ich habe dieses Tool verwendet , um zu überprüfen, ob der Zeiger bei 29999 stoppt.
quelle
50 Bytes
Probieren Sie es hier aus!
Der erste Abschnitt (
>+[>+[<]>->+]>-<<
) richtet das Band als einDer nächste Abschnitt (
[>>-------[[>]+[<]>-]<<-]
) iteriert 121 Mal und fügt1
jedes Mal 249 Sekunden an das Bandende an. Wenn Sie schnell rechnen können, werden Sie vielleicht feststellen, dass 121 * 249 301291
s ergibt , aber die erste Iteration hat den verbleibenden Wert 110 und hängt nur (110-7
) 1031
s an das Band an, was bedeutet, dass es nur 299831
s gibt. Das letzte Band sieht so aus:Und ein Finale
>>>[>]>.
, um den Wert auszudrucken.Einige andere bemerkenswerte Algorithmen:
quelle
81
Dieser bewegt sich 200-mal um 150 Zellen weiter.
Dies ist viel länger als ich es gerne hätte und es gibt ein ernstes Hindernis für das Golfen:
Ich weiß nicht mehr warum ich arbeite.
Dies ist übersät mit Kompensationen für Ausfälle bis zu dem Punkt, an dem einige von ihnen wahrscheinlich aufhören könnten. Ich habe so viele Segmente hinzugefügt und gelöscht, dass ich mich nicht mehr daran erinnere, warum ich bestimmte Dinge dort abgelegt habe, wo sie sich befinden (zum Beispiel, warum initialisiert der erste Teil die Bandzellen auf 199 und 151 anstatt auf 200 und 150?).
Hier ist sowieso meine kommentierte Version dieser Monstrosität, in der Hoffnung, dass ich (oder jemand anderes) sie nützlich finden könnte:
quelle
.
, würde es helfen?