Ihre Aufgabe ist es, ein Programm zu schreiben, das die folgenden vier Verse aus den Texten des Beatles-Songs "Hey Jude" druckt (© Sony / ATV Music Publishing LLC):
Hey Jude, don't make it bad\n
Take a sad song and make it better\n
Remember to let her into your heart\n
Then you can start to make it better\n
\n
Hey Jude, don't be afraid\n
You were made to go out and get her\n
The minute you let her under your skin\n
Then you begin to make it better\n
\n
Hey Jude, don't let me down\n
You have found her, now go and get her\n
Remember to let her into your heart\n
Then you can start to make it better\n
\n
Hey Jude, don't make it bad\n
Take a sad song and make it better\n
Remember to let her under your skin\n
Then you'll begin to make it\n
\n
ABER
Die einzige Eingabe, die Sie zum Erstellen dieser vier Verse verwenden dürfen, ist die folgende Liste von Token:
"Hey Jude, don't"
" make it bad"
" be afraid"
" let me down"
"Take a sad song and make it better"
"You"
" were made to go out"
" and get her"
" have found her, now go"
"Remember to"
"The minute you"
" let her"
" into your heart"
" under your skin"
"Then"
" you"
" can start"
"'ll"
" begin"
" to make it"
" better"
Beachten Sie, dass einigen Token ein Leerzeichen vorangestellt ist und dass Anführungszeichen nicht Bestandteil der Token sind. Es steht Ihnen frei, ein beliebiges Format für die Liste zu verwenden und die Reihenfolge der Token zu ändern.
Ihre generierte Ausgabe muss genau den obigen vier Versen entsprechen. Beachten Sie, dass \n
für Zeilenumbrüche ein zusätzlicher Zeilenumbruch nach jedem Vers eingefügt wird. Mit dieser Datei (MD5 4551829c84a370fc5e6eb1d5c854cbec
:) können Sie Ihre Ausgabe überprüfen.
Sie können das folgende Eisenbahndiagramm verwenden, um die Struktur der Verse zu verstehen (jedes Element repräsentiert einen Token):
Kürzester Code in Bytes gewinnt. Viel Spaß beim Golfen.
quelle
Antworten:
Gelee , 42 Bytes
Probieren Sie es online!
Hardcoding-Version.
Eingang:
quelle
JavaScript (ES6), 108 Byte
Probieren Sie es online!
Alternative Version, 114 Bytes
Eine etwas bessere Komprimierung, die aber leider durch den größeren Dekomprimierungscode ruiniert wird.
Probieren Sie es online!
quelle
m
Flag für mehrzeilige Vorlagenliterale nicht erforderlich ist. Interessant.Ruby +
-p
,177136120118115109 Bytes (vollständiges Programm)Probieren Sie es online!
-41 Byte: Wechseln Sie von der Verwendung von Variablen zur Verwendung von Zeichen als Array-Indizes
-16 Bytes: Wechseln Sie zu einem bequemeren Eingabeformat
-1 Byte: Zwischen
puts
und wird kein Leerzeichen benötigt"abv...
-1 Byte: Verwenden Sie
$/
global anstelle von?\n
Literal-3 Bytes: Verwenden Sie
gsub(/./)
anstelle von.chars.map
-6 Bytes: Mit aufrufen
-p
und nutzen$_
. Vielen Dank Pavel !Jedes Zeichen in der magischen Zeichenfolge repräsentiert einen Index im Eingabearray.
Ich brauche die Variable,z
damit ich nur einmal aus STDIN lesen kann.Ich könnte einige Kosten von IO sparen, indem ich ein Lambda schreibe, das ein Array akzeptiert und eine Zeichenfolge zurückgibt. Dies erfordert
v
am Ende ein Extra , da es keinen kostenlosen Zeilenumbruch gibt-p
.Ruby ,
162110108105 Bytes (Funktion)Probieren Sie es online!
quelle
String#unpack
um kürzer als.chars
mit zu sein.ord-97
, aber es könnte einen geben.-p
und erfahren$_
Java 8,
241233141140138 BytesErläuterung:
Probieren Sie es online aus.
Er wandelt im wesentlichen die ASCII - Zeichen
0
(48) bisE
(69) auf den 0-indiziert Indizes0
durch21
mit demi-48
.quelle
Python 3,
162147144142138127 BytesProbieren Sie es online
Besonderer Dank geht an user202729 und Pavel .
quelle
05AB1E ,
142686665 BytesProbieren Sie es online!
-74 Bytes dank EriktheOutgolfer mit einer Base-255-komprimierten Zeichenfolge.
-2 Bytes durch Umkehren der komprimierten Zeichenfolge, um zu vermeiden, dass drei Nullen verkettet werden müssen
-1 Byte dank EriktheOutgolfer, indem zwei Elemente im Eingabearray umgeschaltet werden, um die führenden Nullen zu vermeiden, und damit der Befehl R umkehren entfernt wird.
quelle
Retina 0.8.2 , 115 Bytes
Probieren Sie es online! Übernimmt die Eingabe als durch Zeilenumbrüche getrennte Liste von Zeichenfolgen.
quelle
Stax ,
5958 BytesFühren Sie es aus und debuggen Sie es
Dies ist die entsprechende ASCII-Darstellung desselben Programms.
`ORIpY$T&z{m6Y=>mR)_ .VQ)eN70e[:0yO8j$^RN[ Bp{IN/$|"3^;G#^&lv!`
ist ein komprimiertes Literal mit einem Wert von"CDBGBLNOBQRSVWBBCEBHIJBMNPBQRUVWBBCFBHKJBLNOBQRSVWBBCDBGBLNPBQRTUVBB"
. Die Zeichen stehen für Indizes in der Tokentabelle. Dieses Programm fügt ein weiteres Token hinzu, um eine neue Zeile darzustellen. Es ist nicht in der Eingabe, sondern wird während der Ausführung hinzugefügt. Der Rest des Programms funktioniert so.quelle
C (gcc) -Funktion, 139 Bytes
Probieren Sie es online!
quelle
printf
infor
Rot , 133 Bytes
Probieren Sie es online!
Ungolfed
t
ist ein Block mit der Liste der Tokenquelle
D , 166 Bytes
Probieren Sie es online!
quelle
Mathematica, 102 Bytes
Funktion pur. Nimmt eine Liste von Zeichenfolgen als Eingabe und gibt eine Zeichenfolge als Ausgabe zurück. Codiert einfach alle Token-Indizes, ähnlich wie bei anderen Antworten.
quelle
Ruby , 97 Bytes
Probieren Sie es online!
Einige Bytes mit einem anderen Ansatz für die meisten anderen Antworten gespeichert.
Die Anzahl der möglichen Token in jeder Zeile ist wie folgt
Die magische Zeichenkette enthält ein Zeichen pro Zeile, was als Bitmap interpretiert wird, von der für jede der 16 Zeilen des Songs bis zu 7 verfügbare Token gedruckt werden sollen.
a[i%7-1+i%28/7*5]
Durchläuft die Token jeder Zeile, wird für jede neue Zeile um 5 verschoben und mit einem Versatz von 1, um die Tatsache zu berücksichtigen, dass die erste Zeile nur 4 Token enthält.Für die Zeilen 1-3 werden nur die Bits von 64 bis 4 verwendet. Wenn Sie nicht die Bits von 2 und 1 verwenden, werden keine Token aus der nächsten Zeile gedruckt. Für Leitung 4 werden alle 7 Bits von 64 bis 1 verwendet.
quelle