Une grande partie de la communication radio est l' alphabet phonétique de l' OTAN , qui encode les lettres comme des mots pour les rendre plus faciles à comprendre sur les communications. Votre travail, si vous souhaitez l'accepter, consiste à les imprimer un par un.
Vous devez imprimer cette chaîne exacte sur stdout:
A: Alfa
B: Bravo
C: Charlie
D: Delta
E: Echo
F: Foxtrot
G: Golf
H: Hotel
I: India
J: Juliet
K: Kilo
L: Lima
M: Mike
N: November
O: Oscar
P: Papa
Q: Quebec
R: Romeo
S: Sierra
T: Tango
U: Uniform
V: Victor
W: Whiskey
X: Xray
Y: Yankee
Z: Zulu
Règles:
- Votre programme ne prend aucune entrée
- Les failles standard sont interdites .
- S'il y a des éléments intégrés dans votre langue qui transforment les lettres en leurs équivalents OTAN, vous ne pouvez pas les utiliser (je vous regarde Mathematica).
- Vous pouvez avoir des espaces de fin et une nouvelle ligne de fin.
A: Alpha
?Juliett
, pasJuliet
etX-ray
au lieu deXray
.Réponses:
Python 2 ,
189186 octetsEssayez-le en ligne!
Précédent: (c'était cool, mais j'ai réalisé que la version plus simple pouvait être raccourcie d'un octet)
la source
Gelée , 76 octets
Essayez-le en ligne!
Comment?
À peu près juste les valeurs du dictionnaire et la compression. Le code entre
“
et»
est juste une valeur compressée qui formera la chaîne"Alfa Bravo Charlie Delta Echo Foxtrot Golf Hotel India Juliet Kilo Lima Mike November Oscar Papa Quebec Romeo Sierra Tango Uniform Victor Whiskey Xray Yankee Zulu"
en recherchant tous les mots (avec des préfixes d'espace unique, à l'exception de"Alfa"
) dans le dictionnaire de Jelly (sauf pour" Xray"
ce qui n'est pas dans le dictionnaire, donc la valeur de chaîne directe" X"
et le dictionnaire entrée"ray"
sont utilisés à la place).Le reste du code fait le reste:
la source
Rétine , 156 octets
Le nombre d'octets suppose un codage ISO 8859-1.
Essayez-le en ligne!
la source
05AB1E ,
10298 octets4 octets enregistrés grâce à Erik l'Outgolfer
Essayez-le en ligne!
Explication
Utilise la compression du dictionnaire pour les mots du dictionnaire 05AB1E.
Utilise la compression partielle du dictionnaire chaque fois que possible pour d'autres mots.
Mots en texte brut où aucun des deux n'est possible.
la source
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
.pa
etli
dans le dictionnaire mais j'ai dû les manquer. Je n'ai pas considéréya
etzu
comme des mots :)Ruby, 169 caractères
(Très basé sur Jonathan Allan de Python 2 solution. Si vous aimez l'idée, s'il vous plaît Upvote la réponse originale.)
Exemple d'exécution:
la source
Java 7,
242225222217 octetsExplication:
Code de test:
Essayez-le ici.
la source
Octave,
215210209 octetsEnregistré 5 octets grâce à Luis Mendo.J'ai sauvé 4 octets grâce à Luis Mendo, mais changer l'approche m'aide à en sauver un de plusEssayez-le en ligne!
Si je me débarrassais des espaces, j'économiserais 25 octets, maisje devrais alors utiliser une expression régulière. Le regex lui-même coûterait pas mal d'octets, et il supprimerait également la majuscule de tous les mots, me laissant avec les motslfa, ravo
etc. Je devrais donc concaténer les nouvelles chaînes avec les caractères principaux. Tout cela coûte des octets.Ancienne explication:
la source
'split'
serait plus long ici'split'
était plus courte: 209 :)PHP,
202227196187 octetsMerci à Dewi Morgan d' avoir économisé 9 octets
https://repl.it/GMkH/1
Versions plus anciennes
Merci à manatwork et à insertusernamehere d' avoir économisé 31 octets!
https://eval.in/749541
Merci à insertusernamehere d' avoir remarqué que la sortie était incorrecte avec la version précédente.
https://repl.it/GKS8/3
https://repl.it/GKS8/2
la source
$a
? Déplacez simplement l'preg_split()
appel entier dansforeach
le paramètre de. Ensuite, aucun des espaces autouras
ne sera plus nécessaire.PREG_SPLIT_NO_EMPTY
, mieux utiliser sa valeur:1
. Mais personnellement , je tweak plutôt l'expression régulière:/\B(?=[A-Z])/
.:D
Je m'habitue toujours au codegolfpreg_split
.echo preg_replace('/([A-Z])[a-z]+/',"$1 = $0\n",Alfa...Zulu);
Brachylog , 178 octets
Essayez-le en ligne!
Explication
la source
PHP,
188186180174 octetspas d'espaces de fuite, une nouvelle ligne de tête
remplace simplement toutes les lettres majuscules de la chaîne compressée par
<newline><letter><colon><space><letter>
la source
gzinflate
-ing le résultat degzdeflate(Alfa...Zulu)
.and for your other question, yes, but just one.
Assemblage x86, 512 octets
Compilé avec NASM et testé avec QEMU. Pour démarrer, vous devez mettre une signature de démarrage de 2 octets à la fin du secteur de démarrage (510 octets dans le fichier), j'ai donc perdu 317 octets en remplissant le code compilé avec des zéros. Ceci est mon premier golf, je dois donc m'excuser pour toute erreur gigantesque.
Sortie
C'est ce que le code ci-dessus produit. Comme vous pouvez le voir A: Alfa est manquant et c'est parce que l'invite fait 25 lignes de haut ...
Pour prouver que j'ai imprimé A: Alfa j'ai remplacé
0,"ulu"
par32,"Z: Zulu"
pour que Zulu soit un sur la même ligne que Yankee.J'apprécierais que quelqu'un me dise si je serais en mesure de soustraire les 317 octets de zerofill de mon code, ce serait donc 195 octets. De plus, si cela est même valable car la sortie ne tient pas sur l'écran.
la source
Python 2 ,
186182 octetsEssayez-le en ligne!
la source
C (MinGW, Clang), 218 octets
Merci à @gastropner!
Essayez-le en ligne!
C,
259236 octetsEssayez-le en ligne!
la source
gcc src.c
ouclang src.c
. Voici un exemple d'exécution avec une fonction principale ajoutée afin que le code soit effectivement lié et exécuté: ideone.com/4Eowlhf
être remplacé parmain
donc le code est valide, ou ai-je raté une convention de golf.i;f(){char s[]="lfa:ravo:harlie:elta:cho:oxtrot:olf:otel:ndia:uliet:ilo:ima:ike:ovember:scar:apa:uebec:omeo:ierra:ango:niform:ictor:hiskey:ray:ankee:ulu";for(i=64;++i<91;)printf("%c: %c%s\n",i,i,strtok(i^65?0:s,":"));}
sait pas si cela fonctionne partout: TIO segfaults mais fonctionne au moins dans MinGW. Je ne vois pas beaucoup de raisons pour lesquelles cela ne fonctionnerait pas .Gema, 168 caractères
Exemple d'exécution:
la source
Bash ,
224205188180 180 octetsMerci à Digital Trauma pour avoir supprimé 17 octets et à Manatwork pour 8 octets.
Essayez-le en ligne!
la source
a
est trop long.set {A..Z};for i in lfa … ulu;{ echo $1: $1$i;shift;}
Python 2 , 198 octets
Essayez-le en ligne!
Pas excitant ou intelligent. Il suffit de parcourir la liste et d'imprimer la première lettre puis «:» puis le mot entier.
la source
PHP,
184 octets179 octets178enregistré un seul octet en utilisant preg_filter au lieu de preg_replace.
Réponse originale
184 octets179 octetsutilise le fait qu'il est trié pour générer le premier caractère à la volée.
5 octets enregistrés par @Titus.
la source
for($c=A;$s=[lfa,...,ulu][+$i++];$c++)echo"$c: $c$s\n";
. Nice regex cependant.SOGL , 91 octets
Explication:
la source
GNU sed , 165 octets
Ce script est basé sur la réponse Retina de Martin Ender.
Essayez-le en ligne!
Explication:
la source
Bash , 184 octets
Essayez-le en ligne!
la source
{,}
astuce dans l'extension de l'accolade est un moyen très intelligent de doubler chaque membre de la liste!Lua,
278260 octetsMerci encore à Manatwork pour avoir économisé 18 octets!
Essayez-le en ligne
Versions plus anciennes
https://repl.it/GK8J
La première fois que je fais Lua, je peux probablement jouer plus au golf, mais j'ai pensé que je l'ajouterais quand même.
la source
a
? ;) Vous pouvez déplacer la déclaration de tableau entière à l'intérieur dufor
. Et la syntaxefor
..in
aide à éviter d'écrire ces index de tableau long: pastebin.com/rxck79md Chose bizarre Lua: si vous déclarez une fonction et l'appelez 26 fois «manuellement» (je veux dire, pas dans une boucle) est plus courte: pastebin. com / FMF9GmLJ¯\_(ツ)_/¯
pour la simple raison que je n'ai jamais utilisé Lua auparavant, je suivais simplement le manuel pour essayer de le faire fonctionner, aha. Merci @manatwork pour l'info, je n'en savais rien.Lua , 177 octets
Essayez-le en ligne!
Sans retour à la ligne, 180 octets:
Explication
Il utilise la fonction de substitution string.gsub de Lua pour faire correspondre les motifs aux lettres majuscules. Les lettres sont ensuite remplacées par le format demandé (plus les lettres elles-mêmes). Des sauts de ligne sont également ajoutés sur la même passe.
La sous-fonction à la fin supprime simplement la nouvelle ligne depuis le début et fonctionne également bien pour masquer la deuxième valeur de retour de gsub, qui aurait été le nombre de remplacements.
la source
PowerShell ,
187185octetsEssayez-le en ligne!
Boucles de
0
à25
, chaque itération formant$a
le capital correspondantchar
. Ensuite, la chaîne est concaténée avec: $a
(c'est-à-dire la lettre espace-deux-points). Ensuite, cette chaîne est concaténée avec une chaîne qui est formée par indexation dans un tableau créé en-split
tant la chaîne phonétique sur les espaces. Chacune de ces 26 chaînes est laissée sur le pipeline, et unWrite-Output
se produit à la fin du programme, insérant une nouvelle ligne entre les éléments.Enregistré deux octets grâce à @Matt.
la source
0..25|%{($a=[char]($_+65))+": $a"+(-split'lfa ravo harlie elta cho oxtrot olf otel ndia uliet ilo ima ike ovember scar apa uebec omeo ierra ango niform ictor hiskey ray ankee ulu')[$_]}
C,
216215212 octetsEssayez-le en ligne!
Une version détaillée, lisible par l'homme, bien commentée et parfaitement valide (aucun avertissement du compilateur) du programme peut être trouvée ci-dessous:
la source
char*s
mais aussiprintf
pourrait y entrer. Ainsi, vous économisez encore 3 octets - un point-virgule et 2 accolades car nous n'en avons plus besoin car il n'y a qu'une seule instruction dans son corps - l'autrefor
boucle.JavaScript ES6,
216 187 184 184 180174 octetsEnregistré un octet grâce à Neil. 5 octets enregistrés grâce à ETHproductions.
Japt , 127 octets
Essayez-le en ligne!
Enregistré 2 octets grâce à obarakon.
la source
A: A
à la chaîne. Mais vous pouvez toujours enregistrer un autre octet en utilisant un caractère de nouvelle ligne au lieu de\n
.$&
s qu'il contient par la correspondance, vous pouvez donc faire par exemple"\n$&: $&"
pour les deux langages au lieu d'utiliser des fonctions.@"\n{X}: {X}"}
dans Japt pour"\n$&: $&"
:-)" x
et en insérant un-x
indicateur dans l'entrée. Notez que l'indicateur ajoute 1 octet au total d'octets.PHP,
175171164162 octetsRemarque: ne nécessite plus de fichier compressé, utilise le codage IBM-850.
Courez comme ceci:
Explication
Imprime chaque caractère individuellement (en minuscule par OU avec un espace). Si un caractère majuscule est rencontré, il imprime d'abord une chaîne de la forme "\ nA: A".
Tweaks
$l
avec le paramètre exploser) et sans empêcher une nouvelle lignela source
Japt,
216214 octetsExplication: Il y a très probablement une bien meilleure façon de le faire, mais comme je suis nouveau, je ne le sais pas. J'ai essentiellement compressé la chaîne avec Oc "et mis cette chaîne à décompresser en utilisant Od"
Si quelqu'un veut m'aider à économiser des octets en utilisant quelque chose de différent des sauts de ligne, je serais heureux d'apprendre!
edit: Sauvegardé 2 octets en utilisant `au lieu de Od"
la source
:/
Pyke, 89 octets
la source
Qbasic, 383 octets
Pas impressionnant, mais pour ce que ça vaut:
la source
data
instruction, puisread
dans la bouclefor
..next
??"A: Alfa"
et ainsi de suite que 360 octets?/// , 220 octets
Essayez-le en ligne!
-20 octets grâce à @ETHproductions.
la source