Père fondateur du rock and roll Chuck Berry malheureusement décédé aujourd'hui.
Pensez au refrain de sa célèbre chanson " Johnny B. Goode ":
Go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Johnny B. Goode
(Il a été ponctué d’ autres manières, mais ce qui précède servira aux fins du défi.)
Défi
Avec une chaîne de lettres z non vide et minuscule, indiquez le refrain de "Johnny B. Goode" avec toutes les instances de Go
ougo
remplacé par la chaîne d'entrée, avec une majuscule de la même manière.
Un retour à la ligne peut éventuellement suivre. Rien d'autre dans le choeur ne devrait changer.
Par exemple , si l’entrée est
code
la sortie doit être exactementCode, code Code Johnny code, code Code Johnny code, code Code Johnny code, code Code Johnny code, code Johnny B. Codeode
éventuellement suivi d'une nouvelle ligne.
Notez que la mise en majuscule de tous les mots correspond au refrain d'origine, et (malgré le manque de rythme), le Go
dans Goode
est remplacé ainsi que les mots individuels Go
et go
.
Le code le plus court en octets gagne.
Cas de test
"input"
output
"go"
Go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Go Johnny go, go
Johnny B. Goode
"code"
Code, code
Code Johnny code, code
Code Johnny code, code
Code Johnny code, code
Code Johnny code, code
Johnny B. Codeode
"a"
A, a
A Johnny a, a
A Johnny a, a
A Johnny a, a
A Johnny a, a
Johnny B. Aode
"johnny"
Johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny Johnny johnny, johnny
Johnny B. Johnnyode
"fantastic"
Fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Fantastic Johnny fantastic, fantastic
Johnny B. Fantasticode
an
,c
,cath
Réponses:
Go, 123 octets
Allez Johnny, allez !
Essayez-le en ligne!
la source
90
octets.VIM,
5449 séquences de touches (1 sauvegarde enregistrée de Kritixi Lithos )Commencez avec le mot sur une ligne d'un fichier avec le curseur sur le premier caractère, puis tout sera remplacé par le texte Explication
Essayez-le en ligne! (Merci, DJMcMayhem !)
la source
Y
au lieuyy
et peut - être mêmeG
au lieu de2j
<CR>
au lieu de<esc>o
hD
diw
Pure Bash,
69 à76 octetsEssayez-le en ligne!
la source
code
utilisez des minuscules, vous n'obtenez pas la capitalisation requise.05AB1E , 37 octets
Essayez-le en ligne!
Explication
la source
Lot, 207 octets
la source
JavaScript, 98
Abuse de la sérialisation de chaîne en chaîne pour créer des virgules. Construit un tableau de la forme:
Et le concatène à la chaîne de la forme
", go\nJohnny B. Goode"
:la source
JavaScript (ES6),
10410199 octetsLa version précédente:
Comment ça fonctionne:
C'est une fonction anonyme qui prend l'entrée comme paramètre
i
Définit une variable
u
comme entréei
avec la première lettre en majuscule (notez que cela suppose que l'entrée est non vide, ce qui est OK)Il suffit de construire directement la chaîne à renvoyer à partir de ces deux variables.
Répéter la chaîne
"go, \nGo Johnny go"
quatre fois au lieu de répéter"Go Johnny go, go"
enregistre un octet.Edit 1: Oublié de jouer au point-virgule, haha !! Également mal compté les octets, il était à l'origine 102, pas 104. Merci apsillers .
Edit 2: Au lieu de
.repeat(4)
, mettre cette chaîne dans une variablex
et le fairex+x+x+x
permet de sauvegarder deux octets.Extrait de test
Afficher l'extrait de code
la source
V ,
41, 38 octetsEssayez-le en ligne!
Le défi parfait pour V!
Explication:
la source
Pyth - 52 octets
Suite de test .
la source
C,
156151 octetsla source
main()
Python 3, 88 octets
Une chaîne de format simple, avec des arguments de position.
la source
len("\n".__repr__()[1:-2])
est 2. J'ai oublié le__repr__()
lors de la mesure de la longueur du programme."""
marques au lieu de"
marques.Retina , 65 octets
Le nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne!
la source
Gelée , 41 octets
Essayez-le en ligne!
la source
Python, 94 octets
la source
C #,
219211212146122 octetsImplémentation de multiples suggestions à partir de commentaires avec optimisation supplémentaire. Voici le résultat final:
Essayez-le en ligne!
Explantation:
Sortie pour les cas de test:
Edit: Merci à Weston d’avoir suggéré l’utilisation d’une fonction
la source
^32
. C'est plus court que celui que&~32
j'utilisais. En outre, un port de ma réponse Java 7 semble être plus court:string x(string a){string x=(char)(a[0]^32)+a.Remove(0,1),n=a+"\n",c=", ",r=n+x+" Johnny "+a+c;return x+c+r+r+r+r+n+"Johnny B. "+x+"ode";}}
( 139 octets ) Essayez-le ici.string x(string a)
->(a)=>
, -13 octets), avec seulement 1 octet derrière moi;)Func<string, string>
vous ne pouvez tout simplementa=>
pas avoir besoin du()
.MATLAB / Octave ,
133111 octetsC'est un début. Espérons pouvoir être réduit davantage.
En gros, il s’agit d’une fonction anonyme qui prend une entrée de chaîne puis utilise regex pour créer la sortie requise.
Un exemple:
Vous pouvez en quelque sorte l' essayer en ligne! . Le code ne fonctionne pas tout à fait avec Octave car toutes les lettres majuscules deviennent${upper($0)}
, alors que dans MATLAB, il est converti en lettre majuscule réelle.Étant donné que la saisie est garantie
a-z
(alphabet minuscule), je peux économiser 22 octets en utilisant une simple soustraction de 32 pour convertir la première lettre de la chaîne en majuscule, plutôt qu'en utilisant regex avec laupper()
fonction.En conséquence, le code fonctionne également avec Octave, vous pouvez donc l' essayer en ligne!
la source
Ruby,
89888679 octetsMa première soumission de golf:
Merci beaucoup à @manatwork pour son commentaire génial: 7 octets de moins!
la source
?
notation; les parenthèses autour des derniers.gsub
paramètres ne sont pas nécessaires. pastebin.com/6C6np5DfNova , 105 octets
Comme Nova ( http://nova-lang.org ) est une version bêta (et un buggy) extrêmement précoce, il existe des handicaps évidents qui l'empêchent d'utiliser encore moins d'octets.
Par exemple, vous auriez pu enregistrer un appel de fonction en majuscule (appelé 3 fois) dans une variable locale comme celle-ci:
qui aurait pris le compte d'octets à 89 octets . La raison pour laquelle cela ne fonctionne pas maintenant peut être imputée à l'ordre d'évaluation des arguments en langage C, car Nova est compilé en C. (L'ordre d'évaluation des arguments sera corrigé dans une prochaine mise à jour)
Encore plus, j'aurais pu introduire une propriété "title" dans la classe String (et je ferai cela après lol) pour réduire le nombre de l'appel de fonction de capitalisation:
et cela libérerait 7 octets pour un nouveau total de 82 octets .
De plus (et plus loin), une fois que l'inférence de type de variable lambda est ajoutée, ceci serait valide:
Le nombre pourrait être réduit à 72 octets .
En passant, il s’agit de mon premier code de golf, j’ai probablement manqué encore plus d’optimisations qui auraient pu être faites. Et comme il s'agit d'un langage généraliste , non centré sur le golf , je pense que c'est assez impressionnant.
Le premier code de 105 octets fonctionne dans la version actuelle de Nova Beta v0.3.8 disponible sur http://nova-lang.org
les sorties:
Merci d'avoir écouté ma publicité sans vergogne pour le langage généraliste Nova (disponible sur http://nova-lang.org ... obtenez-le maintenant !!)
la source
Brainfuck, 352 octets
Essayez-le en ligne!
J'aime toujours les défis dans Brainfuck, donc c'était amusant. On peut probablement jouer plus au golf, mais jouer au Brainfuck est plutôt long.
la source
PHP, 86 octets
la source
Java 8,
151147146130 octetsExplication:
Essayez ici.
la source
Empilés , 64 octets
Essayez-le en ligne!
la source
C # ,
159130128 octetsGolfé
Ungolfed
Ungolfed lisible
Code complet
Communiqués
- 2 bytes
- Permuté(i)=>
pouri=>
, grâce au commentaire de TheLetalCoder .-29 bytes
- Merci à Sir Bitesalot de la dernière mise à jour, qui m'a rappelé que je pouvais éditer la chaîne avant le formatage.159 bytes
- Solution initiale.Remarques
Le titre contient un lien vers une page avec le code et les cas de test. Appuyez simplement sur Go et le résultat sera imprimé sous le code.
la source
()
argumenter pour leFunc
juste fairei=>
. Vous pouvez probablement aussi utiliser des chaînes interpolées de C # 6 et perdre lestring.Format
même si je n'ai pas trop regardé le code pour voir comment (cela devrait être trivial).()
, mais je doute que je puisse utiliser des chaînes interpolées sans augmenter la taille du code, en raison du remplacement qui écrase la répétition.Javascript -
72106 octetsEdit: Oups !! Je n'ai pas fait attention aux règles de capitalisation! Ça va être plus long après un momentEdit 2: Devrait suivre les règles maintenant!
Pourrait probablement être joué au golf plus
Utilisé comme:
la source
Excel VBA,
137121112898784 octetsFonction de fenêtre immédiate VBE anonyme qui prend en entrée le type
Variant/String
de la cellule[A1]
et la sort en imprimant la fenêtre immédiate VBE-16 octets pour la conversion en fonction de fenêtre immédiate
-9 octets pour utiliser
[PROPER(A1)]
-23 octets pour laisser tomber la
For ...
boucle et abuser de la?
déclaration-2 octets à remplacer
" Johnny "&[A1]&", "&[A1]
par[" Johnny "&A1&", "&A1]
-3 octets pour utiliser
+
plus&
de concaténation String et en laissant la séquence terminale non ferméeExemple de cas
la source
Debug.?s
efficacementDebug.Print
? Comment ça marche??
,i=1To
et&c
sont assimilés à des termes plus explicites mais lisibles tels quePrint
,i = 1 To
et& c
. La communauté a décidé que la version compressée du code en langues était acceptable pour les réponses (voir codegolf.meta.stackexchange.com/questions/10258/… )?
, je crois qu'il s'agit d'un vestige de l'ancienne version d'Excel (4.0 et versions antérieures ) dans laquelle Macro Sheets était utilisé à la place de VBA via VBE, où il était utilisé comme mot clé pour l'impression d'une chaîne fournie après celle-ci. fichier texte indiqué. Le?
mot-clé lui-même est toujours très utile pour le code de golf car ilPrint
est utilisé pour écrire des chaînes dans un fichier texte dans les versions actuelles de VBA. Notez que je perds la mémoire avec un, alors prenez cela avec un grain de sel.CJam , 50 octets
Essayez-le en ligne!
Explication:
la source
Pyke , 43 octets
Essayez-le en ligne!
Construit et imprime la première ligne puis insère
Johnny go
avant la virgule et duplique 4 fois. Enfin construit la dernière partie.la source
johnny
. tio.run/nexus/…Python, 258 octets
la source
t
car elle n'est appelée qu'une fois.Java 6,
258242 octetsLa partie la plus longue est le format pour printf. Il y a des problèmes avec l'entrée différente de string from
a
toz
(oui, je sais que je n'ai pas besoin de supporter quoi que ce soit d'autre).Ungolfed avec des commentaires:
EDIT: Golfé 16 octets grâce à weston
la source
"Johnny"
est toujours suivi d'un espace.b[0]^=32;
sera également en majuscule sans avoir besoin de la(char)
distribution.Mathematica, 83 octets
Fonction anonyme. Prend une chaîne en entrée et retourne une chaîne en sortie. Pourrait probablement être joué au golf plus loin.
la source