In dieser Herausforderung besteht dein Ziel darin, die Texte auf Daft Punks Harder, Better, Faster, Stronger auszugeben . Speziell diesen Text ausgeben:
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder, Make It
Do It Faster, Makes Us
More Than Ever, Hour
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster Makes Us Stronger
More Than Ever Hour
Our Work Is Never Over
Work It Harder
Do It Faster
More Than Ever
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster
Makes Us Stronger
More Than Ever
Hour After
Our Work Is Never Over
Ihre Ausgabe enthält möglicherweise einen nachgestellten Zeilenumbruch oder ein nachgestelltes Leerzeichen.
Eingebaute Komprimierungsmethoden sind nicht zulässig.
Das ist Codegolf, also gewinnt der kürzeste Code!
code-golf
kolmogorov-complexity
TreFox
quelle
quelle
HQ9+Daft-Punk
druckt ...Antworten:
Rubin,
308303Algorithmus
Song-Intro: Nimm 16 Token und drucke sie zweimal aus (letzterer trägt einen zusätzlichen Zeilenumbruch)
Verse: Riffle die Token in der folgenden Reihenfolge, um die Verse zu erstellen, 4 Token pro Zeile:
In einigen Zeilen wird das letzte Token weggelassen oder ausgetauscht
Af-
. Diese Zeilen sind mit einem 1-Bit in der magischen Nummer 0x744447 = 7619655 vermerkt.In drei Zeilen wird auch das vorletzte Token weggelassen, die wo
i%51/48==1
Die Interpunktion in der Mitte der Zeile kann eine der folgenden sein
' '
', '
'\n'
. Diese sind in der Nummer 02220010000200100010001110010001000100010001000100010 (Basis 3) = "l4yq62lhgnizb0kfu" (Basis 36) codiert.Mit Kommentaren
quelle
Perl,
316309308307 BytesDie Quelle muss als Latin-1 codiert sein.
Erläuterung
Wir beginnen mit den Originaltexten. Nehmen wir der Kürze halber an, dass dies der Fall ist
Jetzt finden wir kurze Teilzeichenfolgen (≥ 3 Zeichen), die häufig vorkommen. In diesem Fall
"Work "
tritt zweimal auf. Wir ersetzen jedes Vorkommen durch das Zeichen 0xE1. Wir erinnern uns auch an den ersetzten String in einem Array:Der nächste Teilstring
"Harder"
wird durch 0xE0 ersetzt. Dassubsts
Array wächst nach vorne:Dies dauert insgesamt 34 Iterationen, bis wir zum Zeichen 0xC0 gelangen.
Jetzt verketten wir
substs
das Zeichenb
(das im Text nicht vorkommt) als Trennzeichen. Im Perl-Code wird dassubsts
Array in gespeichert@c
(mit dem Barewordb
, umsplit
zu bestimmen , wo es aufgeteilt werden soll), die neuen durcheinandergebrachten Texte werden in$e
den Code eingefügt und die 34 Ersetzungen werden einfach umgekehrt.quelle
Korrigiert 302 Byte
Ich habe diese Sprache erst kürzlich gemacht und mich entschlossen, sie mit dieser Herausforderung zu testen. Es gibt
\n
s anstelle von neuen Zeilen aus, da es in HTML ausgegeben wird, aber der Interpreter ist in JavaScript geschrieben. Aus diesem Grund ist hier eine Version mit<br>
s anstelle von\n
s:quelle
er
einen einzigen Token machen?GolfScript (275 Bytes)
Dieser enthält nicht druckbare ASCII-Zeichen. Hier ist ein Hexdump:
quelle
Ruby - 643 Bytes
Bearbeiten: Golf von 899 bis 830.
Edit2: 830 -> 755.
Edit3: 755 -> 684.
Edit4: 684 -> 670.
Edit5: 670 -> 643.
Ich habe Rubin nicht wirklich benutzt, also bin ich mir sicher, dass dies heruntergolfen werden könnte. Dies ist nur ein Versuch:
quelle
JAVA 518/490 Bytes
Edit: nicht benötigte 7 Bytes und fügte eine Java 6 Version mit dem statischen {} Trick Edit2: Erklärung expand hinzu
java6:
Vielen Dank an @Chris Drost für den Hinweis mit den vielen "ER" s im Text. Der erste String ist eine Nachschlagetabelle, der zweite Teil verwendet die Kleinbuchstaben (die in ASCII ein sequentieller Block sind) als Index in der Tabelle, indem der magische Wert von a vom Wert subtrahiert wird.
Der zweite Teil besteht aus mehreren Saiten unterschiedlicher Länge (kurze sind gemeinsame Teile mehrerer Verse), die zu einer langen zusammengesetzt werden, bevor die Schleife durch die Zeichen erfolgt
quelle
l
und verwenden Sie die Zeichenfolge, die alle#
direkt in der for-each-Schleife enthält, und ändern Sie die Zeichenfolgechar
in der for-each-Schleife inint
:for(int o:r.toCharArray())System.out.print("\n#, #Work#Make#Do#Makes Us#Hard#Bett#Fast#Strong#More#Than#Hour#Our#Nev#Ev#Aft#Af-#Work Is#Ov# #er# It".split("#")[o-97]);
Was zu -5 führt Bytes / 513 Bytes .JavaScript ES6,
440 Bytes438 BytesDies ist eine Reihe einfacher Komprimierungsoptimierungen. Als Einzeiler:
Dies wurde geschrieben, um ein ausführbares Skript über zu sein
iojs --harmony_arrow_functions file.js
; Sie können denconsole.log()
Overhead abhängig von der Bedeutung von "Ausgabe der Texte" abschneiden .Erläuterung
Nach dem Ausführen des Outer lautet
.replace()
der zugeführte Codeeval
:Ein dickes Lob
.repeat
Funktion für Strings hat, die 2 Bytes spart.quelle
b.repeat(7)
anstelle vonb+b+b+b+b+b+b
PowerShell, 659 Bytes
Erstellt eine Reihe von Schlüsselwörtern
$a
und codiert dann den Text mit einer Reihe von numerischen Zeichenfolgen, die in einerfor
Schleife gesendet werden . Die Schleife nimmt zweistellige Teilzeichenfolgen, zieht das entsprechende Schlüsselwort aus dem$a
Array und-join''
verkettet es schließlich alle zusammen.Ich denke, das ist ungefähr so gut, wie diese Methode gemacht werden kann, da ich jedes Mal versucht habe, weiter Golf zu spielen (z. B. Ersetzen)
040008
eine neue Variable ), es sich herausstellte, dass es ein paar Bytes länger war, weil die Länge der Teilzeichenfolge nicht ausreichte Konto für alle zusätzlichen Anführungszeichen benötigt. Obwohl einige neue Antworten veröffentlicht wurden, die sich von den in PowerShell verwendeten Methoden unterscheiden und möglicherweise kürzer sind (z. B. Verwenden von ASCII-Zeichen zum Codieren anstelle von zweistelligen Zeichen?), Bleibe ich dabei dieses.Bearbeiten - habe die von mir verwendete Ersatzkodierung vergessen:
quelle
GolfScript , 251 Bytes Golf
Probieren Sie es online!
Unnötigen
[]
und vereinfachten Code entsprechend eliminiert . Geänderti
undj
zu@
und^
, um das Entfernen von Leerzeichen zu ermöglichen. Zugewiesenes erstes Auftreten von' '
zu Variable|
, um zu vermeiden, dass dieselben drei Zeichen wiederholt werden.GolfScript , Erste Arbeitsversion 262 Bytes
Probieren Sie es online!
Dies ist eine Portierung meiner Ruby-Antwort in golfscript unter Verwendung desselben grundlegenden Algorithmus: Gib die Liste der Token zweimal aus, riffle sie dann in die Verse und baue die Verse Zeile für Zeile auf, wobei die jeweiligen Besonderheiten berücksichtigt werden.
Es gibt einige Unterschiede. Die Nummer für die korrekte Interpunktion in der Mitte befindet sich in der Basis 81 (günstigerweise macht dies ein druckbares ASCII-Zeichen pro Vers); und die Zahl, die codiert, ob das letzte Token gedruckt werden soll oder nicht, wird geändert, weil der Index
55-i
anstelle von stehti-28
.Kommentiert
quelle
" "
) in einer Variablen. Pop auch nicht nach dem Zuweisen zu einer Variablen aus Gewohnheit.51
, das ich jedoch verpasst habe. Ich werde es später beheben und möglicherweise nach anderen Möglichkeiten suchen, es zu verkürzen. Dies ist mein erstes Golfscript-Programm, und ich finde es sehr schwer zu lesen, wenn Symbole als Variablen verwendet werden. Daher habe ich zumindest vorerst meine erste 262-Byte-Arbeitsversion offen gelassen.Python - 1056 Charaters
Noch Verbesserungsbedarf bei Variablennamen, aber es ist ein Anfang.
quelle
Ruby, 486 Bytes
quelle
Ruby, 483 Bytes
Codiert jedes im Song verwendete Wort zu einem Buchstaben, multipliziert einige Strophen und ersetzt die codierten Buchstaben durch den eigentlichen Text. Kommas, Leerzeichen bleiben wie sie sind.
u
ist ein Zeilenumbruch.quelle
fuc b gud
PHP, 434 Bytes
Probieren Sie es online!
quelle