Schreiben Sie ein Programm, das für die Nummern 1 bis 255 einen BF-Code ausgibt, der die angegebene Nummer in einem Byte des Arrays plus einer neuen Zeile erzeugt.
Die ersten vier Zeilen der Ausgabe könnten (und werden höchstwahrscheinlich) sein:
+
++
+++
++++
Der Gewinner ist der kleinste: source code + output
(in Bytes).
Erläuterungen und Überarbeitungen :
BF-Programme verwenden Umbruchzellen.
Das Ausgabe-BF-Programm muss mit der einzigen Nicht-Null-Zelle enden, die die Nummer enthält.
Programme müssen in aufsteigender Reihenfolge ausgegeben werden.
Die Ausgabe eines Programms für 0 ist optional.
Negative Datenzeiger sind nicht zulässig.
<
beim ersten zeiger geht nichts. (Hinterlasse einen Kommentar, wenn es angemessener wäre, ihn werfen zu lassen)
+>++++++++++.
das ein gültiges Programm für die Eingabe1
?Antworten:
Perl 6 , 224 + 3964 =
58344188 BytesProbieren Sie es online! (Möglicherweise tritt eine Zeitüberschreitung auf. Ändern Sie den Schalter
^27-13
auf,^25-12
um die Geschwindigkeit auf Kosten einer zusätzlichen Ausgabe etwas zu erhöhen.)Gibt den kürzesten Code im Formular aus
*>[*>*<]>*
, wobei jeder*
eine bestimmte Anzahl von+
s oder-
s enthält. Es gibt einige zusätzliche Verbesserungen, wie das Entfernen der Schleife, wenn sie nicht benötigt wird, sowie das Nachziehen von>
s.Soweit ich das beurteilen kann, ist die Ausgabe für dieses spezielle Format am besten geeignet.
Erläuterung:
quelle
Malbolge , 28 743 Bytes + 7 166 der Ausgabe
Nicht zu kreativ, oder? Ich werde daran arbeiten, diesen bösen Jungen zu golfen.
Probieren Sie es online!
quelle
Brainfuck,
777573 + 32894 = 329673296932971BytesProbieren Sie es online!
Die Ausgabe ist so einfach wie möglich
Erläuterung:
quelle
Stax , Score
47514783 (812 Bytes + 3971)Führen Sie es aus und debuggen Sie es
Ich habe mit den optimal veröffentlichten Programmen begonnen .
Ich habe etwas Regex-Fu verwendet, um es auf die kürzesten Programme zu beschränken, die höchstens 2 Zellen verwenden. Dann habe ich alle nachfolgenden Zeichen
<
oder>
Zeichen abgeschnitten . Ich denke, dies ist ein möglicherweise konservativer Weg, um sicherzustellen, dass es bei Programmbeendigung keine fremden Zellen ungleich Null gibt. Dann habe ich ein experimentelles Stax-Programm durchgearbeitet, das ich geschrieben habe, um Stax-Programme für eine feste Ausgabe vom Kolmogorov-Typ zu generieren.Dieses Programm funktioniert durch wiederholtes Anwenden von Zeichenfolgenersetzungen. Bei jedem Schritt wird nach einer Teilzeichenfolge mit einer Länge von> 1 gesucht, die am häufigsten vorkommt, und durch ein nicht verwendetes Zeichen ersetzt.
quelle
Charcoal ,
707698410 + 3627 =433443254037 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Deaktivieren Sie die Leerzeichenauffüllung.
Weisen Sie eine große komprimierte Zeichenfolge zu, die aus @ JonathanAllens Antworten für
-128
.. besteht,-15
aber mit+
und-
vertauschten Zeichen.Zeichnen Sie ein Dreieck von
+
s auf Seite 14, das die korrekten Ergebnisse für 1 bis 14 erzeugt. Der Cursor befindet sich in der unteren Ecke, obwohl der abschließende Return in der komprimierten Zeichenfolge die nächste Ausgabe in die nächste Zeile verschiebt.Teilen Sie die große Zeichenfolge bei den Rückgabezeichen auf und drucken Sie die einzelnen Teilzeichenfolgen in umgekehrter Reihenfolge aus. Auf diese Weise werden die Ergebnisse von 15 bis 128 generiert.
Verschieben Sie eine Zeile nach oben, sodass das Ergebnis für 128 durch das negierte Ergebnis für 128 überschrieben wird.
Durchlaufen Sie die transponierende Saite
+
und-
wiederholen Sie den Vorgang, damit die richtigen Ergebnisse für 128 bis 241 generiert werden.Zeichnen Sie ein Dreieck aus
-
s von Seite 14, wodurch die korrekten Ergebnisse für 242 bis 255 generiert werden.quelle
Jelly , 1224 + 3716 = 4940 Bytes
Ein volles Programm.
Probieren Sie es online!
Wie?
Nahezu vollständige Komprimierung der aktuellen Bestwerte bei Esolangs, bei denen nur eine einzige von Null abweicht, wobei die nachfolgenden Bandbewegungen entfernt werden. Es gibt wahrscheinlich eine Möglichkeit, eine Teilmenge von BF-Programmen so zu bewerten, dass sie beendet werden und die kürzesten Lösungen ergeben, die dieses naive Programm schlagen würden. Möglicherweise gibt es auch eine Möglichkeit, dies durch ein intelligenteres musterbasiertes oder faktorisierendes Programm zu übertreffen.
quelle
SuperMarioLang , 231 + 32894 Bytes
Probieren Sie es online!
Hier kann man sicher mehr Golf spielen, da die Ausgabe die grundlegendste für Brainfuck ist, aber ich habe den ganzen Tag gebraucht, um diese Antwort zu schreiben (meine drei Kinder lassen mir wenig Zeit), und ich bin stolz darauf, dass ich es zumindest geschafft habe Dies.
quelle
Python 2, 70 + 8428 = 8498
-2 Bytes Danke an A__!
-20 Bytes Danke an Jonathan Allan!
-229 Bytes durch Setzen der Zahl in die zweite Zelle
-1000ish Bytes durch Umschalten von 16 auf 9
Probieren Sie es online!
Ausgabe
quelle
Ruby 271 + 5363 = 5634
Probieren Sie es online!
Konvertiert jeden Wert in die kleinste Basis, die an keiner anderen Stelle
eine Nullenthält , und konvertiert dann von dieser Basis. Werte größer als 127 werden als Umkehrwerte berechnet.Non-Wrapping, 221 + 5888 = 6109
Verwenden des gleichen Ansatzes wie oben mit nicht umhüllenden Zellen.
Probieren Sie es online!
quelle
JavaScript (Node.js) , 691 + 3627 = 4318
Verwenden des gleichen Ansatzes wie die @ Neil's Charcoal-Antwort und daher auch die @ JonathanAllan's Jelly-Antwort .
Probieren Sie es online!
quelle
Unofficial Keg 16 + 32895 = 32911 Bytes
Eine Basislösung für eine Golfsprache. Dies ist das einfachste, was ich mir vorstellen kann.
Probieren Sie es online!
quelle
Ruby 23 + 32895 = 32918 Bytes
Als Grundlinie. Dies ist die einfachste Lösung, die ich mir vorstellen kann.
quelle
0
sollte wahrscheinlich sein1
(obwohl ich gefragt habe, ob wir auch für null ausgeben dürfen)256.times{|n|puts ?+*n}
nicht, dass es zu vielRetina 0,8,2 , 28 + 16640 = 16668 Bytes
Probieren Sie es online! Enthält die Ausgabe für
0
. Ausgabe nur mit+
s bis 127 und-
s bis 255.quelle
Scala , 95 + 16639 = 16734 Bytes
Probieren Sie es online!
Eine einfache Antwort, die offensichtlich nicht gewinnen wird. Verwendet nur die Tatsache, dass der
-
Operator (ein Byte verkleinert) auf 255 zurückgeht.quelle
05AB1E , Score: 4848 (1219 Byte Quellcode + 3629 Byte Ausgabe)
Output ist eine Portierung von @Neils Charcoal-Antwort , also stelle sicher, dass du ihn auch positiv bewertest!
Probieren Sie es online aus.
Erläuterung:
Sehen Sie sich meinen Tipp 05AB1E an (Abschnitt So komprimieren Sie große ganze Zahlen ), um zu verstehen, warum dies so
•тôm...ò´Θ•
ist183...875
.quelle