Parce que le rickrolling est le plus grand mème sur Terre, vous [connaissez les règles et moi aussi] devez écrire le code le plus court qui puisse rickroller textuellement le lecteur sans méfiance. Laissez [vous descendre] un texte d'entrée contenant des lettres, des signes de ponctuation et des espaces. Chaque fois qu'une phrase [vous mentir et vous blesser] des deux premières strophes apparaît dans le texte ...
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
... insérez ensuite le reste de la ligne entre parenthèses.
Contribution
L'entrée est une chaîne d'une seule ligne contenant uniquement de l'ASCII imprimable avec une nouvelle ligne de fin facultative.
Production
La sortie est une chaîne à ligne unique. Chaque fois qu'un groupe de mots (défini comme la chaîne d'entrée divisée en espaces) correspond à un groupe de mots dans les lignes des paroles ci-dessus, insérez les mots restants de la ligne dans la chaîne, regroupés entre crochets.
Description supplémentaire:
C'est le code-golf , le moins d'octets gagne. Vous pouvez écrire un programme ou une fonction.
- la correspondance doit être insensible à la casse:
we're
est convertie enwe're [no strangers to love]
même si elleWe're
est en majuscule dans les paroles. - l'appariement doit être gourmand.
Does he know the answer?
devrait être converti en auDoes he know the [rules and so do I] answer?
lieu deDoes he know [the rules and so do I] the [rules and so do I] answer?
- Si un mot apparaît plus d'une fois dans les paroles fournies, choisissez l'une des occurrences pour terminer la ligne.
- Si un mot est le dernier mot de la ligne de paroles, n'insérez rien après.
- La ponctuation fait partie d'un «mot».
I'm
est un seul mot et ne peut pas correspondre avecI
. De même,you.
ne correspond à aucune chanson en raison de la période.
Certains mots comme I
apparaissent plusieurs fois dans les paroles ainsi qu'à la fin d'une ligne. Étant donné que la règle est que toute occurrence dans les paroles ci-dessus peut être utilisée et qu'une de ces occurrences se trouve à la fin d'une ligne, aucune correspondance de I
n'est nécessaire. L'autre option pour I
est [just wanna tell you how I'm feeling]
.
Si deux correspondances se chevauchent, vous pouvez en choisir une. Cela signifie que how I'm thinking
pourrait devenir how I'm [feeling] thinking [of]
OU how [I'm feeling] I'm thinking [of]
puisque le I'm
pourrait faire partie de how I'm
ou I'm thinking
. Si, cependant, le texte d'entrée était simplement I'm thinking
, alors la sortie devrait l'être I'm thinking [of]
.
Cas de test supplémentaires:
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."
Défi inspiré par ce mec .
from
devrait devenirfrom [any other guy]
).Réponses:
gawk, 316 + 377 = 693
Le premier paramètre de ligne de commande est le nom de fichier des paroles (375 octets + 2 pour l'invocation = 377). Rickrolls tous les autres fichiers. Imprime vers
stdout
.Non golfé
Résultats de test
Contribution:
Production:
la source
what
etI'm
, qui est une correspondance "non gourmande"). 2. Cela échoue au troisième cas de test (il transforme les deux espaces en un). 3. Si vous stockez les paroles dans un fichier séparé, vous devez compter ce fichier (ainsi que +2 pour l'inclure dans laawk
commande) dans votre nombre d'octets.awk
le code source de.gonna run
(sortie attendue, sortiegonna run [around and desert you]
réellegonna [tell a lie and hurt you] run [around and desert you]
). Il réduit également plusieurs espaces d'affilée. Vous devez compter le fichier de paroles dans votre nombre d'octets, car il s'agit d'une invocation non standard duawk
programme.gawk
maintenant une séparation des champs préservant l'espace. Passe tous les cas de test maintenant.