Diese Frage ist Teil einer Reihe von Brain-Flak-Geburtstagsherausforderungen, mit denen Brain-Flaks erster Geburtstag gefeiert werden soll. Weitere Informationen zu Brain-Flaks Geburtstag finden Sie hier .
Heute hat Brain-Flak seinen ersten Geburtstag! Also dachte ich, wir würden eine Überraschungs-Geburtstagsfeier veranstalten. Also in deiner Lieblingssprache drucken
Surprise!
Happy Birthday, Brain-Flak!
(Leerzeichen dürfen nachgestellt werden)
Wie immer sollte man Golf spielen. Da jedoch Brain-Flak-Programme aus eckigen Klammern bestehen, werden keine eckigen Klammern in Ihrer Quelle für Sie gezählt. (Die Zeichen ()[]<>{}
zählen nicht zu Ihrer Bytesumme), aber sie müssen ausgeglichen sein, um Brain-Flak nicht zu verärgern.
Regeln
Hier ist eine Aufschlüsselung der Regeln
Die Klammern in Ihrer Quelle müssen ausgeglichen sein. Das heißt, die Klammern Ihres Programms müssen folgende Grammatik umfassen:
S -> SS | (S) | [S] | <S> | {S} | E
Wo
E
ist die leere Zeichenfolge.Das heißt, eine ausgeglichene Zeichenfolge ist entweder die Verkettung zweier ausgeglichener Zeichenfolgen, Klammern um eine ausgeglichene Zeichenfolge oder die leere Zeichenfolge.
Die Punktzahl eines Programms ist die Anzahl der nicht in Klammern gesetzten Bytes.
Ihr Ziel sollte es sein, Ihre Punktzahl in der von Ihnen gewählten Sprache zu minimieren.
Es gelten Standardregeln, sodass Sie entweder ein vollständiges Programm oder eine Funktion schreiben können.
Im Falle eines Unentschieden wirkt die Anzahl der Rohbytes als Unentschieden
In bestimmten Sprachen ( Parenthesis Hell , Parenthetic , Glypho , Lenguage ) wird es sicherlich Null-Byte-Lösungen geben . Versuchen Sie, Wege zu finden, um in Sprachen, in denen dies keine triviale Aufgabe ist, gut Golf zu spielen.
quelle
><
als ausgeglichen angesehen, oder müssen die Zahnspangen in der richtigen Reihenfolge sein (<>
)?Antworten:
Python 2 ,
39373634 Bytes-1 danke an dzaima
-2 danke an Erik den Outgolfer
Probieren Sie es online!
Relevante Zeichen:
Erläuterung
Dieses Programm erstellt den String:
Dazu wird eine lange Folge von Klammern in Zeichencodes konvertiert. Sobald der String erstellt ist, führt er ihn aus.
Es baut die Zeichenfolge mit dem Skelett:
Dies teilt die Zeichenkette auf
{}
und ordnet jeden Abschnitt dem Zeichencode zu, der seiner Länge entspricht. Wir können dann die gesamte Zeichenfolge aus Parens für einen Wert von null Byte erstellen.quelle
()
dasx
um 2 zu sparen.Haskell (vor GHC 8.4), (
10119 7767 76267540 Bytes), Punktzahl15 1410Probieren Sie es online!
Die letzte Zeile definiert eine anonyme Funktion
(<>)'y'pred(:)
. Rufen Sie mit(<>)'y'pred(:)()
an, um die Zeichenfolge zu erhalten.Edit: Ein großes Dankeschön an @ Ørjan Johansen für den Vorschlag, die Hilfsfunktionen als Parameter zu übergeben, anstatt sie zu deklarieren, und dabei vier Bewertungsbytes zu sparen !
Die nicht in Klammern gesetzten Bytes sind
Wie funktioniert es?
Eine Zeichenkette
"wxy"
in Haskell ist syntaktischer Zucker für eine Liste von Zeichen['w','x','y']
, die wiederum syntaktischer Zucker für die nachfolgende Konstruktion mit dem cons Operator ist:
und die leere Liste:'w':'x':'y':[]
. Indem(<<>>)=(:)
wir definieren, erhalten wir den gleichen String durch Schreiben'w'<<>>('x'<<>>('y'<<>>[]))
.Da Zeichen geordnet sind, können wir den Vorgänger jedes Zeichens mit einer aufgerufenen Funktion berechnen
pred
. Wenn Sie nur die Zeichen'y'
und verwendenpred
, wird die Zeichenfolgepred(pred 'y')<<>>(pred 'y'<<>>('y'<<>>[]))
. Indem Sie(<>)=pred
und definieren(<><>)='y'
, können wir den String nur mit ausgeglichenen Klammern darstellen:(<>)((<>)(<><>))<<>>((<>)(<><>)<<>>((<><>)<<>>[]))
Am Ende wollen wir jedoch keine Zeichenfolge, sondern eine Funktion, die eine Zeichenfolge zurückgibt, und definieren
(<<>>) x xs ()=x:xs
stattdessen unseren cons-Operator als . (Natürlich mitx
undxs
ersetzt durch Bezeichner, die nur ausgeglichene Klammern verwenden:)(<<>>)(<>)(<><>)()=(<>):(<><>)
. Diesen Weg,((<>)((<>)(<><>))<<>>((<>)(<><>)<<>>((<><>)<<>>[])())())
ist eine Funktion vom Typ
() -> String
und das Anhängen eines Finales()
ergibt den Originalstring:((<>)((<>)(<><>))<<>>((<>)(<><>)<<>>((<><>)<<>>[])())())()
Mit Hilfe dieser Methode , die wir 15 jedoch eine Lösung mit Punktzahl erreichen, haben wir die drei Erklärungen in einer durch die Deklaration einer Funktion kondensieren kann , die vier Argumente verwendet :
'z'
,pred
,(:)
und()
für den Aufruf.Die folgende Funktion
encode
codiert einen String mit Zeichen, die kleiner oder gleich sind, wie folgt'y'
: (Warumy
? Weil es das größte Zeichen in"Surprise!\nHappy Birthday, Brain-Flak!"
und damit die kürzeste Darstellung ist. Nochmals vielen Dank an Ørjan Johansen für diesen Hinweis.)Probieren Sie es online!
quelle
'z'
es in der Zielzeichenfolge eigentlich nicht vorkommt, können Sie die Anzahl der Bytes verringern, indem Sie'y'
stattdessen verwenden.(<<<>>>)(<><>)(<>)(<<>>)()=...;(<<<>>>)'y'pred(:)
Retina , 59 - 24 = 35 Bytes
Probieren Sie es online! Zum Vergleich: Die langweilige Lösung benötigt 38 Byte.
quelle
Gelee ,
76 BytesIn das müssen
“”
Sie die Ausgabe dieses Jelly-Programms einfügen:-1 Byte dank Jonathan Allan (erlaubter abschließender Zeilenumbruch)
Es gibt 53127666317289661939246122975355844970973062889031671423309402549417051416384149 80886139013 (wir nennen dies
n
)()
s zwischen“”
.Erklärung :
quelle
Sprache , 0 Bytes
Nur 10024793746353848520175158940670214213802394805963081469362831141755126591573942436182287015467334956253918417576118983828148929806934751198148656645940502264502520032312455157880058174845907554602116807351044784410936407102892289953027884533102082518964744402664917253792543505897552998982122997648280947470217067174451441654554437678556775097996646071948 Bytes von symmetrischen Klammern gemacht.
Python 3-Programm, um meine Lieblingsversion zu generieren, wenn genügend Zeit und Speicher vorhanden sind:
quelle
Haskell , (
12006 -13485 Bytes), Punktzahl18 -17BEARBEITEN:
toEnum
Version auftoEnum
Kosten von a in die Hauptfunktion, damit sie ohne Erweiterungen funktioniert$
.Verwenden Sie als
putStrLn$(<<>>)()
.Probieren Sie es online!
wo
...
ist die Ergebniszeichenfolge des folgenden Ausdrucks:Die einzigen nicht ausgeglichenen Zeichen sind
Die folgende Variante (13484 Bytes) hat eine Punktzahl von 16, außer dass sie die
ExtendedDefaultRules
Erweiterung von GHC benötigt und daher standardmäßig nur in GHCi funktioniert. (Sofern Sie nicht jede Menge Warnungen mögen, möchten Sie dies auch-fdefer-type-errors
und-Wno-deferred-type-errors
aus irgendeinem Grund.)Probieren Sie es online!
Wie es funktioniert
<>
es sich um zulässige Operatorzeichen handelt. Darüber hinaus können diese in Klammern für jeden Wert verwendet werden, nicht nur für Funktionen mit zwei Argumenten.(<<>>)
In der zweiten Zeile befindet sich die Hauptfunktion. Sie verwendet ein einzelnes Dummy-Argument()
und gibt die letzte Zeichenfolge zurück.<>
nimmt zwei Listen und stellt die Länge der zweiten vor die erste (in der zweiten Version wird auch zuerst die Länge in ein Zeichen konvertiert.) Die Operatoren bleiben standardmäßig assoziativ, sodass diese leicht verkettet werden können.[]
mit erstellt werden<>
.()<>[]
Zeichen - und dann (in der Hauptversion)toEnum
über die resultierende Liste abgebildet werden .quelle
Japt ,
1914131098 Byteswo die Zeichenfolge am Anfang ist:
Die Gesamtbytezahl ist "nur"
669433943354, Sie können es also online ausprobieren!Erläuterung
Die tatsächlich verwendete Methode wird in anderen Antworten erläutert:
<>
Aufteilen, Zuordnen aller Parens zuchr(len(x))
und erneutes Verknüpfen der leeren Zeichenfolge. Hier macht das Golfen Spaß.Vor dem "Golfen" könnte der ursprüngliche Code so aussehen
Das ist eine ziemlich wörtliche Beschreibung:
"...".split("<>").map(Z => Z.length.toChar()).join("")
Jetzt müssen wir Zeichen, die keine Klammern sind, minimieren. Wie? Nun, zuerst können wir ein bisschen Golf spielen:Dies entspricht in etwa
"...".split("<>").map(Z => Z.length).map(Z => Z.toChar()).join()
.Jetzt können wir die verwirrende Art, wie Japt Klammern behandelt, missbrauchen.
(
stellt eine Ebene steigen, wie in den meisten Sprachen, aber)
nach unten darstellt gehen zwei (ein Raum geht eine Ebene tiefer) Ebenen, welche Mittel wir den Code optimieren:Dieser Code verhält sich genauso wie oben, verwendet jedoch zwei Zeichen weniger, die keine Klammern sind.
Wenn ein Operator die erste Eingabe für eine Funktion ist, wird sie in eine Zeichenfolge umgewandelt, damit die Funktion entscheiden kann, was damit geschehen soll. Dies bedeutet, dass wir die Anführungszeichen vermeiden können, wenn wir einfach jede Runde von Klammern um 1 Byte kürzer machen und
>
stattdessen aufteilen (mit einer geschickten Anordnung, um das Ergebnis>)
im Code zu löschen ):Dies erspart uns weitere zwei Bytes, da wir zwei der Anführungszeichen entfernt haben.
quelle
Haskell , (
1965 313118073 Bytes), Punktzahl31 2319Probieren Sie es online! Verwendung: Die letzte Zeile ist eine anonyme Funktion. Binde es an zB
f
und rufe mit anf()
.Die 19 nicht in Klammern gesetzten Bytes sind
plus eine abschließende Newline.
Kerbe 23 Version (3131 Bytes):
Probieren Sie es online! Die 23 nicht in Klammern gesetzten Bytes sind
Partitur 31 Version (1965 Bytes):
Probieren Sie es online!
Nachdem alle Klammern entfernt wurden, verbleiben diese 31 Bytes:
Wie funktioniert es?
['\n'..'~']
liefert die Liste aller Zeichen von Newline bis~
einschließlich aller druckbaren ASCII-Zeichen.(<<>>)
ist ein Bezeichner, der gemäß der angegebenen Bewertungsregel mit null Bytes belegt wird.(<<>>)=['\n'..'~']++(<<>>)
Somit ergibt sich eine unendliche Wiederholung der Liste der Zeichen.In der zweiten Zeile wird
zip"> ... "(<<>>)
eine lange Folge von Klammern mit der unendlichen Folge gezippt, wodurch sich eine Liste von Tupeln mit einem Klammerzeichen in der ersten Komponente und etwas ASCII-Zeichen in der zweiten ergibt. Für jedes Tupel in dieser Liste prüfen wir, ob es mit dem Muster übereinstimmt, dh('{'{-}-},(<>))
ob es eine{
Klammer als erste Komponente hat.{- ... -}
ist ein Inline-Kommentar in Haskell, also'{'{-}-}
eine ausgewogene Version von'{'
. Wenn die Übereinstimmung erfolgreich ist, wird die zweite Komponente des Tupels an den Bezeichner gebunden(<>)
und über das Listenverständnis zum Stringaufbau hinzugefügt. Zum Schluss wirdputStr
der String gedruckt.putStr[(<>)|('{'{-}-},(<>))<-zip"> ... "(<<>>)]
Das direkte Drucken der Zeichenfolge umfasst 46 Byte:
quelle
HTML, 37 Bytes
quelle
<br>
Tag wie diesen verwenden:Surprise!<br>Happy Birthday, Brain-Flak!
<br>
ist ein Byte länger, da<p>
ich es vor dem Posten ausprobiert habe. Es sieht ein bisschen schöner aus. Ich benutze kein schließendes Tag<p>
.05AB1E , 24 Byte
Verwendet die 05AB1E- Codierung . Probieren Sie es online!
quelle
Pyth,
4×3×2 BytesDurchgestrichene4 ist keine reguläre 4, wenn SiezalgoUnicode magic verwendenVielen Dank an Roman Gräf und Neil für das Speichern von 1 Byte.
Der Code ist
Cl(()()()
...()()())
wo die äußere Klammer41505989310382548390036033574496753883572705382055993299460470741732071419050117038172961
verkettete Kopien von enthält()
. (Stack Exchange erlaubte mir nicht, den vollständigen Code zu veröffentlichen.)Erstellt ein Tupel (
(
…)
) aus leeren Tupeln (()
), nimmt die Länge (l
) und konvertiert sie in eine Base-256-Zeichenfolge (C
).quelle
h
kippen Sie nur ein anderes Paar von Klammern hinzu?h
zwei Positionen nach rechts und es würde immer noch funktionieren perfekt ;-)Japt , 6687 Bytes, 5 Punkte
Probieren Sie es online!
Dies ähnelt meiner anderen Japt-Antwort , verwendet jedoch verschachtelte Arrays anstelle einer Zeichenfolge. Das Schöne an verschachtelten Arrays (abgesehen davon, dass das Definieren von Arrays keine Bytes erfordert) ist, dass sie vororganisiert sind, sodass Sie keine ausgefallenen Split-On-
<>
Magic -Aktionen ausführen oder aus großen Arrays dekodieren müssen Basis 256 Nummer oder so etwas. Die eigentliche Logik ist gerecht.map(X => X.length).map(X => String.fromCharCode(X)).join("")
.quelle
Chip , 553 + 3 = 556 Bytes, Punktzahl 127 + 3 = 130
+3 für arg
-w
. Probieren Sie es online!Die nicht in Klammern gesetzten Bytes sind
Ungolfed / unsymmetrisch:
Wie Sie sehen, werden im Originalcode nur Klammern auf der rechten Seite verwendet, sodass alle Klammern auf der linken Seite nur zum Ausgleichen dienen. Im Zuge der Entwicklung dieser Lösung habe ich in Chip eine viel dichtere Zeichenfolgendarstellung gefunden, die ich für meine vorherigen Antworten hatte, z. B. Hallo Welt , und deshalb habe ich diese auch aktualisiert.
Wie es funktioniert:
Das Stückchen, das links hängt, erzeugt einen Impuls von 1 Zyklus, um die Dinge in Gang zu bringen. Dieser Impuls bewegt sich
Z
mit einer Rate von 1 pro Zyklus entlang der 's, was die Zeitgabe liefert. Wenn jeder mitZ
Strom versorgt wird, erzeugt er die entsprechende Spalte der ASCII - Code des Zeichens an diesem Index, der dann am Ausgang der Elemente wirda
durchg
(eine pro Bit des Ausgangsbytes, mit Ausnahme der High - Bit ,h
die immer 0 ist ). Wenn dies abgeschlossen ist, wird diet
Ausführung abgebrochen.Die ASCII-Codierung ist unkompliziert:
)
bedeutet 1 undx
bedeutet 0. Die untersten 5 Zeilen sind jedoch meistensx
, also invertiere ich diese Bits in der endgültigen Lösung und vertausche effektiv die beiden Symbole.Ist das die bestmögliche Punktzahl?
Das bezweifle ich. Ich denke, wir brauchen mindestens Folgendes: 1
a
bisg
, da dies die aktiven Ausgangsbits sind, 1*
oder ähnliches, um ein Startsignal zu liefern, 1,t
um die Ausführung zu beenden, 36Z
s oderz
s, um jeden Buchstaben zu unterbrechen, und Befehl arg-w
. Dies alles ergibt eine Punktzahl von 48.Über diesem theoretischen Minimum verfügt meine Lösung über 7 Zeilenumbrüche, einen zweiten
*
, einen zusätzlichenZ
und 73 Sekundenx
.quelle
C, 9265 Bytes, Punktzahl 37
Sehen Sie , wie es online funktioniert .
C, 8589934626 Bytes, Ergebnis 34
Dabei
STRING
handelt es sich um dasselbe große Zeichenfolgenliteral wie im obigen Beispiel, mit der Ausnahme, dass es in der Mitte der Zeichenfolge, in der sich eine Teilzeichenfolge befindet, zwei Unterschiede gibt<>
. Kurz zuvor<
sind 4294962688 zusätzliche[
Zeichen und kurz danach>
sind 4294962688 zusätzliche]
Zeichen.Das Programm wird unter den folgenden Annahmen funktionieren:
INT_MAX ist 2 ^ 31-1 und INT_MIN ist -2 ^ 31.
Kompiliert mit Umbruchverhalten für vorzeichenbehaftete Arithmetik. (-fwrapv)
Die Funktion strspn kann jeweils 4294962689 Zeichen verarbeiten.
Der Compiler kann ein Zeichenfolgenliteral kompilieren, das aus 8589934592 Zeichen besteht.
Diese Annahmen sind auf modernen 64-Bit-Architekturen möglich, bei denen der Typ int 4 Byte und der Typ size_t 8 Byte beträgt. Die Funktion strspn gibt den Typ size_t zurück, und derselbe Typ bezieht sich auf das interne Limit für die maximale Objektgröße. Der Typ size_t mit 8 Bytes würde die letzten beiden Annahmen erfüllen.
Dieser Unterschied in dieser Version besteht darin, dass die Variable i nicht auf 0 zurückgesetzt werden muss, da sie nach dem Drucken des letzten Zeichens auf 0 zurückgesetzt wird.
quelle
Haskell , 9735 Bytes, 9 Punkte
Probieren Sie es online!
Die 9 Bewertungsbytes sind
Dies funktioniert in aktuellen Versionen von Haskell (GHC 8.4 oder neuer) , wo
(<>)
in istPrelude
. Vielen Dank an Ørjan Johansen, der darauf hingewiesen hat, dass dies meine vorherige Lösung verletzt, aber das Speichern eines weiteren Bewertungsbytes ermöglicht.Erläuterung
Da
(<>)
in zwei Listen dasselbe ist wie(++)
, können wir stattdessen eine Zeichenfolge"abc"
als darstellen"a"<>"b"<>"c"
. Zeichenfolgen sind Listen von Zeichen und['a']<>['b']<>['c']
bezeichnen dieselbe Zeichenfolge. Nun, wie in der vorherigen Antwort, wir wollen nur einen einzigen Zeichenliteral, so dass wir mit ihm höchste bleiben'c'
und die anderen als Vorgänger davon darstellen:[pred(pred 'c')]<>[pred 'c']<>['c']
. Schließlich wird durch Ersetzen'c'
mit(<><>)
denen ein gültiger Bezeichner undpred
mit(<<>>)
wir eine Codierung der Zeichenfolge erhalten ,"abc"
dass nur aus ausgewogenen Klammern:[(<<>>)((<<>>)(<><>))]<>[(<<>>)(<><>)]<>[(<><>)]
.Die folgende Funktion codiert eine beliebige Zeichenfolge auf diese Weise:
Probieren Sie es online!
quelle
(<<>>)
es so oft verwendet wird, denke ich, dass es viele Bytes einspart, wenn Sie seinen Namen mit dem von tauschen<>
(indem Sie letzteren als zusätzlichen Parameter übergeben).C # Interactive, 45 Bytes
Ich weiß, es ist etwas langweilig, aber wenn es in C # interaktiv ausgeführt wird, erzeugt es die gewünschte Ausgabe - und ich bezweifle, dass es einen kleineren Weg gibt, dies in C # zu lösen.
Es gibt jedoch einen stilvolleren Weg:
Aber das ist 145 Bytes groß.
Mit Zeilenumbrüchen sieht es so aus:
Dies interpretiert die Klammern als Boolesche Werte und dann als Zeichenfolge.
Eigentlich bin ich kein fortgeschrittener Code-Golfer, also sind alle Vorschläge willkommen!
quelle
.Select(s =>
Anforderungen zu erfüllenS -> <S>
. Sie können sie in.Select(/*<*/s =>
C# Interactive
, auch ich denke, es wird in C # interaktiv interpretiert, nicht kompiliert, aber es wird immer noch als Programm \ script betrachtetCJam , 6683 Bytes, Punktzahl 3
Ich habe den Code hier gekürzt, um die Seite nicht zu überladen. Den vollständigen Code können Sie dem TIO-Link entnehmen. Die einzigen nicht in Klammern gesetzten Zeichen sind
,c%
.Probieren Sie es online!
Erläuterung
Das Programm beginnt mit dem Verschieben eines Arrays aus leeren Arrays. Jedes Unterarray enthält eine Anzahl leerer Arrays, die einem ASCII-Wert eines Zeichens in der gewünschten Zeichenfolge entsprechen. Dann wird für jedes Subarray (
{...}%
) die Länge des Arrays (,
) ermittelt und diese Länge in ein Zeichen (c
) umgewandelt.Die resultierende Zeichenfolge wird implizit gedruckt.
quelle
C
6964 BytesVersuchen Sie es online
Wie ich es gemacht habe
*
mit{}
,>
mit<>
und<
mit ersetzt,[]
damit sie nicht zählen. Deshalb ist diese Codezahl jetzt 1, weil das Anfangszeichen verwendet wirdS
.<>
addiert, subtrahiert[]
, die aktuelle Summe ausgibt{}
und am Ende der Zeichenkette endet\0
.C, 49 Bytes Online testen
quelle
p
, um einige Bytes zu speichern?Lua 5.3, 108097107033101 Bytes, Ergebnis
2827Hier
REPLACE
wird durch eine 108097107033034 Zeichenfolge mit freier Länge ersetzt. Die Zeichenfolge codiert Daten, indem sie{}
an bestimmten Schlüsselpositionen platziert wird. Der erstegsub
ersetzt den String durch die Indizes des{}
s (über die leere Erfassungsgruppe()
). Der zweite Teilgsub
zerlegt diese resultierende Zeichenfolge in 3-stellige Blöcke und ersetzt jeden Block durch seine ASCII-Darstellung.Beachten Sie, dass die Syntax für rohe Zeichenfolgen in Lua (im Grunde genommen) ist
[[string contents]]
, was beim Reduzieren der Punktzahl sehr nützlich ist.Die (ungekapselte) Zeichenfolge, die ich generiere, ist
print"Surprise!\nHappy Birthday, Brain-Flak!"
. Das Ersetzen jedes Zeichens durch seinen 3-stelligen dezimalen ASCII-Code ergibt112114105110116034083117114112114105115101033092110072097112112121032066105114116104100097121044032066114097105110045070108097107033034
. Der von mir verwendete Code kann nur Sequenzen mit ansteigenden natürlichen Zahlen (mindestens 2 auseinander) erzeugen, die nicht mit anfänglichen Nullen beginnen. Diese Zahl wird also aufgeteilt in11, 2114, 105110, 1160340, 83117114, 112114105, 1151010330, 9211007209, 71121121210, 320661051141, 1610410009712, 10440320661140, 97105110045070, 108097107033034
. (Diese letzte Zahl ist genau die Länge desREPLACE
Wertes, da die letzte Übereinstimmung des Musters den Index des Finales ergibt}
, wobei darauf hingewiesen wird, dass Lua-Indizes bei 1 beginnen. Wenn die letzte Zahl ungerade wäre, hätten das Muster und die Zeichenfolge leicht zu modifizieren, obwohl es nicht schwer ist.)Ich habe dieses Programm nicht erstellt und ausgeführt, weil es zu groß ist (obwohl es theoretisch auf einem 64-Bit-Computer funktionieren könnte, würde es nicht auf meine Festplatte passen).
Als Proof-of-Concept gibt es hier ein kleines Programm, das
3
nach dem gleichen Prinzip druckt :Dies generiert die Code-Zeichenfolge
p"3"
über die Nummer112034051034
über den Split11, 203, 405, 1034
.quelle
Pip , 6681 Bytes, Punktzahl 3
(mit vielen Klammern und einigen eckigen Klammern). Probieren Sie es online!
Wir konstruieren eine Liste von Listen, von denen jede
()
(null) einige Male enthält.#*
ordnet den Längenoperator zu, was zu einer Liste von Zahlen führt.C
Nimmt jede Zahl als ASCII-Code und wandelt sie in ein Zeichen um. Die resultierende Liste von Zeichen wird dann automatisch zusammengefügt und gedruckt.Alles Gute zum verspäteten Geburtstag, Brain-Flak!
quelle
Mathematica, 40 Bytes
Anonyme Funktion. Nimmt keine Eingabe an und gibt eine Zeichenfolge als Ausgabe zurück.
quelle
Jelly ,
1921 BytesHier ist überhaupt nichts Schlaues dabei, nur ein Wörterbuch + eine Komprimierung des Texts in Zeichenfolgen plus eine abschließende neue Zeile, um eine nicht übereinstimmende zu entfernen
<
.Für eine wirklich golferische Herangehensweise siehe diese Antwort von Erik dem Outgolfer.
Probieren Sie es online!
quelle
PHP, 42 Bytes
Probieren Sie es online!
-5 Bytes die langweilige Lösung
PHP, 60 Bytes
Probieren Sie es online!
quelle
<?=""?>
Gestapelt , 23 Punkte
Wo
...
ist die weggelassene Zeichenfolge. (Dies kann mit erzeugt wird dies .)Probieren Sie es online!
Ja, nicht so kreativ. Ermittelt die Anzahl aller
<>
s und wandelt sie in Zeichencodes um.quelle
Perl 5 , 3304 Bytes, 16 Punkte
Probieren Sie es online!
Verwendet die Lauflängencodierung des Texts in der Python-Lösung von @ HeebyJeebyMan.
quelle
Java, 140 Bytes
Versuchen Sie es online
quelle
C, 52 Bytes, Punktzahl 46
Naive Version. Hier ist die optimierte Version .
quelle
Kohle , 37 Bytes
Probieren Sie es online!
Druckt einfach die Zeichenfolge.
quelle