Votre tâche consiste à écrire un programme qui imprime à la suite de quatre versets extraits des paroles de la chanson des Beatles "Hey Jude" (© 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
MAIS
La seule entrée que vous êtes autorisé à utiliser pour construire ces quatre versets est cette liste de jetons:
"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"
Notez que certains jetons ont un espace précédé et que les guillemets qui les entourent ne font pas partie des jetons. Vous êtes libre d'utiliser n'importe quel format pour la liste et de réorganiser l'ordre des jetons.
Votre sortie générée doit correspondre exactement aux quatre versets ci-dessus. Notez qu'il \n
est utilisé pour les retours à la ligne et un retour à la ligne supplémentaire est ajouté après chaque verset. Vous pouvez utiliser ce fichier (MD5:) 4551829c84a370fc5e6eb1d5c854cbec
pour comparer votre sortie.
Vous pouvez utiliser le diagramme de chemin de fer suivant pour comprendre la structure des versets (chaque élément représente un jeton):
Le code le plus court en octets gagne. Bon golf.
Réponses:
Gelée , 42 octets
Essayez-le en ligne!
Version codée en dur.
Contribution:
la source
JavaScript (ES6), 108 octets
Essayez-le en ligne!
Version alternative, 114 octets
Une compression légèrement meilleure, mais malheureusement ruinée par le code de décompression plus important.
Essayez-le en ligne!
la source
m
indicateur n'est pas requis pour les littéraux de modèle multiligne. Intéressant.Ruby +
-p
,177136120118115 115109 octets (programme complet)Essayez-le en ligne!
-41 octets: passer de l'utilisation de variables à l'utilisation de caractères comme index de tableau
-16 octets: passez à un format d'entrée plus pratique
-1 octet: aucun espace nécessaire entre
puts
et"abv...
-1 octet: utilisez
$/
global au lieu de?\n
littéral-3 octets: utiliser
gsub(/./)
au lieu de.chars.map
-6 octets: appelez avec
-p
et utilisez$_
. Merci Pavel !Chaque caractère de la chaîne magique représente un index dans le tableau d'entrée.
J'ai besoin de la variablez
pour ne lire qu'une fois dans STDIN.Je pourrais économiser des coûts d'IO en écrivant un lambda acceptant un tableau et en renvoyant une chaîne. Cela nécessite un supplément
v
à la fin, car il ne reçoit pas de nouvelle ligne gratuite-p
.Ruby ,
162110108105 octets (fonction)Essayez-le en ligne!
la source
String#unpack
pour être plus court.chars
qu'avec.ord-97
, mais il pourrait y en avoir un.-p
et$_
Java 8,
241233141140138 octetsExplication:
Essayez-le en ligne.
Il convertit essentiellement les caractères ASCII
0
(48) àE
(69) en index indexés0
par21
le biais dei-48
.la source
Python 3,
162147144142138 138127 octetsEssayez-le en ligne
Un merci spécial à user202729 et Pavel .
la source
05AB1E ,
142686665 octetsEssayez-le en ligne!
-74 octets grâce à EriktheOutgolfer, utilisant une chaîne compressée en base 255.
-2 octets en inversant la chaîne compressée pour éviter d'avoir à concaténer trois 0
-1 octet grâce à EriktheOutgolfer, en commutant deux éléments dans le tableau d'entrée afin d'éviter les 0 de tête, et donc de supprimer la commande Reverse R
la source
Retina 0.8.2 , 115 octets
Essayez-le en ligne! Prend l'entrée comme une liste de chaînes délimitées par des sauts de ligne.
la source
Stax ,
5958 octetsExécuter et déboguer
La représentation ascii correspondante du même programme est la suivante.
`ORIpY$T&z{m6Y=>mR)_ .VQ)eN70e[:0yO8j$^RN[ Bp{IN/$|"3^;G#^&lv!`
est un littéral compressé avec une valeur de"CDBGBLNOBQRSVWBBCEBHIJBMNPBQRUVWBBCFBHKJBLNOBQRSVWBBCDBGBLNPBQRTUVBB"
. Les caractères représentent des index dans la table des jetons. Ce programme ajoute un autre jeton pour représenter une nouvelle ligne. Ce n'est pas dans l'entrée, mais ajouté pendant l'exécution. Le reste du programme fonctionne comme ceci.la source
Fonction C (gcc), 139 octets
Essayez-le en ligne!
la source
printf
infor
Rouge , 133 octets
Essayez-le en ligne!
Non golfé
t
est un bloc avec la liste des jetonsla source
D , 166 octets
Essayez-le en ligne!
la source
Mathematica, 102 octets
Fonction pure. Prend une liste de chaînes en entrée et renvoie une chaîne en sortie. Encode simplement tous les indices de jeton, de la même manière que les autres réponses.
la source
Rubis , 97 octets
Essayez-le en ligne!
Enregistré quelques octets avec une approche différente de la plupart des autres réponses.
Le nombre de jetons possibles dans chaque ligne est le suivant
La chaîne magique contient un caractère par ligne, ce qui est interprété comme une image bitmap parmi laquelle jusqu'à 7 jetons disponibles doivent être imprimés pour chacune des 16 lignes du morceau.
a[i%7-1+i%28/7*5]
itère à travers les jetons de chaque ligne, se décalant de 5 pour chaque nouvelle ligne, et avec un décalage de 1 pour tenir compte du fait que la première ligne n'a que 4 jetons.Pour les lignes 1 à 3, seuls les bits de 64 à 4 sont utilisés - ne pas utiliser les bits de 2 et 1 évite d'imprimer les jetons de la ligne suivante. pour la ligne 4, tous les 7 bits de 64 à 1 sont utilisés.
la source