Weil Rickrolling das größte Mem der Welt ist, müssen Sie [die Regeln kennen und ich auch] den kürzesten Code schreiben, der den ahnungslosen Leser textuell rickrollieren kann. Lassen Sie [Sie unten] ein Eingabe Text sein , die Buchstaben, Satzzeichen und Leerzeichen enthält. Immer wenn eine Phrase aus den ersten beiden Strophen im Text erscheint ...
We're no strangers to love
You know the rules and so do I
A full commitment's what I'm thinking of
You wouldn't get this from any other guy
I just wanna tell you how I'm feeling
Gotta make you understand
Never gonna give you up
Never gonna let you down
Never gonna run around and desert you
Never gonna make you cry
Never gonna say goodbye
Never gonna tell a lie and hurt you
... setzen Sie danach den Rest der Zeile in eckige Klammern.
Eingang
Die Eingabe ist eine einzeilige Zeichenfolge, die nur druckbares ASCII mit optionalem Zeilenumbruch enthält.
Ausgabe
Die Ausgabe ist eine einzeilige Zeichenfolge. Jedes Mal, wenn eine Gruppe von Wörtern (definiert als die auf Leerzeichen aufgeteilte Eingabezeichenfolge) mit einer Gruppe von Wörtern in den Zeilen des obigen Textes übereinstimmt, fügen Sie die verbleibenden Wörter der Zeile in die Zeichenfolge ein, die in eckigen Klammern angegeben sind.
Zusätzliche Beschreibung:
Das ist Code-Golf , die wenigsten Bytes gewinnen. Sie können ein Programm oder eine Funktion schreiben .
- Bei Übereinstimmungen sollte die Groß- und Kleinschreibung nicht beachtet werden:
we're
wird konvertiert,we're [no strangers to love]
obwohlWe're
in den Texten Groß- und Kleinschreibung verwendet wird . - Matching sollte gierig sein.
Does he know the answer?
sollte konvertiert werden zuDoes he know the [rules and so do I] answer?
stattDoes he know [the rules and so do I] the [rules and so do I] answer?
- Wenn ein Wort in den angegebenen Texten mehrmals vorkommt, wählen Sie eines der Vorkommen aus, um die Zeile zu vervollständigen.
- Wenn ein Wort das letzte Wort in der Textzeile ist, fügen Sie nichts danach ein.
- Interpunktion wird als Teil eines "Wortes" eingefügt.
I'm
ist ein einzelnes Wort und kann nicht mit übereinstimmenI
. In ähnlicher Weiseyou.
passt es wegen der Periode nicht zu irgendeinem Text.
Einige Wörter wie I
erscheinen mehrmals im gesamten Text sowie am Ende einer Zeile. Da die Regel lautet, dass jedes Vorkommen in den obigen Texten verwendet werden kann und eines dieser Vorkommen am Ende einer Zeile steht, ist kein Abgleich von I
erforderlich. Die andere Option für I
ist [just wanna tell you how I'm feeling]
.
Wenn sich zwei Übereinstimmungen überschneiden, können Sie eine auswählen. Dies bedeutet, dass how I'm thinking
dies zu how I'm [feeling] thinking [of]
OR werden könnte, how [I'm feeling] I'm thinking [of]
da das I'm
Teil von entweder how I'm
oder sein könnte I'm thinking
. Wenn jedoch der Eingabetext einfach war I'm thinking
, dann sollte die Ausgabe sein I'm thinking [of]
.
Zusätzliche Testfälle:
I don't know what I'm doing with my life.
is converted to
I [just wanna tell you how I'm feeling] don't know [the rules and so do I] what I'm [thinking of] doing with my life.
Many additional solutions are possible, since words like `I` appear multiple times.
Will someone please save me from these memes?
is converted to
Will someone please save me from [any other guy] these memes?
Two strangers walked into a bar. One said "hello." The other said "goodbye."
is converted to
Two strangers [to love] walked into a [lie and hurt you] bar. One said "hello." The [rules and so do I] other [guy] said "goodbye."
Herausforderung von diesem Kerl inspiriert .
from
sollte werdenfrom [any other guy]
).Antworten:
Gawk, 316 + 377 = 693
Der erste Befehlszeilenparameter ist der Dateiname des Liedtextes (375 Byte + 2 für Aufruf = 377). Rickrolls alle anderen Dateien. Druckt nach
stdout
.Ungolfed
Testergebnisse
Eingang:
Ausgabe:
quelle
what
undI'm
, was "nicht gierig" ist). 2. Damit ist der dritte Testfall nicht erfolgreich (die beiden Leerzeichen werden zu einem). 3. Wenn Sie den Text in einer separaten Datei speichern, müssen Sie diese Datei (sowie +2, um sie in denawk
Befehl aufzunehmen) in Ihre Byteanzahl aufnehmen.awk
Quellcode.gonna run
(erwartete Ausgabegonna run [around and desert you]
, tatsächliche Ausgabegonna [tell a lie and hurt you] run [around and desert you]
) fehl . Es werden auch immer noch mehrere Leerzeichen in einer Reihe verarbeitet. Sie müssen die Lyrics-Datei in Ihrer Byteanzahl zählen, da dies ein nicht standardmäßiger Aufruf desawk
Programms ist.gawk
jetzt für die platzsparende Feldtrennung. Besteht jetzt alle Testfälle.