In der Eröffnungsszene des Dark Knight kommt es zu einem eher unangenehmen Dialog zwischen einem CIA-Agenten und dem Bösewicht Bane.
CIA-Agent: "Wenn ich diese [Maske] abhebe, wirst du sterben?"
Bane: "Es wäre extrem schmerzhaft ..."
CIA-Agent: "Du bist ein großer Kerl."
Bane: "... für dich."
Es ist nicht sicher, ob Bane vorhat, "schmerzhaft für dich" oder "großer Kerl für dich" zu sagen. Lassen Sie uns dieses Problem ein für alle Mal durch Code-Golfen lösen!
Herausforderung
Ihre Aufgabe ist es, ein Programm zu schreiben, das den obigen Dialog in Abhängigkeit von einer als Eingabe angegebenen Ganzzahl neu anordnet.
CIA-Agentendialogwörter sind:
If
I
pull
that
off
will
you
die?
You're
a
big
guy.
Banes Dialogwörter sind:
It
would
be
extremely
painful...
for
you!
Bitte beachten Sie, dass die?
, You’re
, painful...
und you!
werden als einzelne Wörter betrachtet.
- Konvertieren Sie eine Ganzzahl n als Eingabe in eine Binärzahl
- Lesen Sie die Binärziffern von links nach rechts und geben Sie das nächste Wort aus dem CIA-Agentendialog aus, wenn es sich um die Ziffer handelt
1
, und das nächste Wort aus dem Bane-Dialog, wenn es sich um die Ziffer handelt0
. Die Wörter sollten durch ein Leerzeichen getrennt sein. Wenn sich der Lautsprecher ändert, fügen Sie einen Zeilenvorschub hinzu. Stellen Sie außerdem jeder Dialogzeile den Sprechernamen (BANE:
oderCIA:
) voran.
Sie können davon ausgehen, dass die Eingabe immer mit einer 1 in binärer Form beginnt und 12 Einsen und 7 Nullen hat.
Beispiel
522300
Umgerechnet in binär:
1111111100000111100
Die Zahl beginnt mit 8, daher geben wir die 8 ersten Wörter aus dem Agentendialog der CIA aus und stellen ihnen CIA voran:
CIA: If I pull that off will you die?
Dann haben wir 5 Nullen, also bekommen wir die 5 ersten Wörter aus Banes Dialog:
BANE: It would be extremely painful...
Dann gibt es 4, also geben wir die 4 nächsten CIA-Wörter aus:
CIA: You’re a big guy.
Dann 2 Nullen:
BANE: for you!
Endergebnis:
CIA: If I pull that off will you die?
BANE: It would be extremely painful...
CIA: You’re a big guy.
BANE: for you!
Weitere Testfälle:
494542
CIA: If I pull that
BANE: It would be
CIA: off
BANE: extremely
CIA: will you die? You're
BANE: painful... for
CIA: a big guy.
BANE: you!
326711
CIA: If
BANE: It would
CIA: I pull that off will you
BANE: be extremely painful... for
CIA: die? You're
BANE: you!
CIA: a big guy.
Antworten:
Pyth - 138 Bytes
Ich sollte mich mit dem Komprimieren des Filmskripts befassen.
Test Suite .
quelle
JavaScript (ES6),
203 bis201 ByteEdit: 2 Bytes gespart durch schamloses Ausleihen der
trim()
Idee von ETHproductions AntwortTestfälle
Code-Snippet anzeigen
quelle
JavaScript (ES6),
209202201 ByteAlter Ansatz:
Testschnipsel
quelle
trim()
Idee schamlos aus . Ich war mir sicher, dass es etwas Besseres gabslice(1)
, konnte es aber nicht herausfinden.C ++ 11 (GCC),
298293 BytesEine Lambda-Funktion, die eine Ganzzahl annimmt und den Dialog als zurückgibt
std::string
. Sie können es hier in Aktion sehen .Ungolfed Version (mit einer Erklärung):
quelle
JavaScript (ES6),
252 227226 ByteVerwendung
Anmerkungen
Ich denke, ich kann noch einige Bytes abschneiden, kann aber gerne Vorschläge in den Kommentaren hinterlassen.
quelle
Python 3.6, 232 Bytes
Äquivalent bearbeiten :
quelle
Japt, 121 Bytes
Enthält viele nicht druckbare Dateien, daher sollten Sie diese besser online testen .
quelle
Perl 6 , 211 Bytes
quelle
C #,
398390385396389 BytesStarten Sie mit der eingegebenen Nummer als Parameter.
Ungolfed:
Zurück zu 396 Bytes, weil ich die Regel "Keine Zeilenumbrüche am Anfang" nicht bemerkt habe.
quelle
s.Replace("1",c[k++]).Replace("0",b[l++])
leider nicht durch entsprechende Wörter. Es sieht so aus, als würde C # die Zeichenkette einmal ersetzen und sie stellenweise schlagen.Ruby, 204 + 1 = 205 Bytes
Benötigt die
-n
Flagge.quelle
PHP, 198 Bytes
quelle
Perl, 205 Bytes
Fügen Sie das in eine Datei mit dem Namen 494542 ein und führen Sie Folgendes aus:
Getestet auf Perl v5.22
quelle
Clojure, 401 Bytes
Aufruf:
Ungolfed
quelle