Écrivez un programme qui prend une chaîne et épelle ce mot en utilisant l'alphabet phonétique de l'OTAN.
Le mappage est le suivant:
'A' -> 'Alfa'
'B' -> 'Bravo'
'C' -> 'Charlie'
'D' -> 'Delta'
'E' -> 'Echo'
'F' -> 'Foxtrot'
'G' -> 'Golf'
'H' -> 'Hotel'
'I' -> 'India'
'J' -> 'Juliett'
'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'
Exemple:
'Hello World' -> ['Hotel', 'Echo', 'Lima', 'Lima', 'Oscar', 'Whiskey', 'Oscar', 'Romeo', 'Lima', 'Delta']
L'entrée peut être n'importe quelle chaîne, mais sera toujours composée uniquement de lettres et d'espaces. La casse n'est pas pertinente dans la sortie, mais l'entrée peut contenir des lettres en majuscules, en minuscules ou les deux. Les espaces doivent être ignorés dans la sortie.
Vous pouvez émettre dans n'importe quel format raisonnable, mais il doit s'agir d'un ensemble délimité d'indicatifs d'appel OTAN.
Alpha
et à laJuliet
place.Whisky
dans l'exemple n'est pas égal àWhiskey
dans le mappage.Réponses:
sfk ,
785957 octetsEssayez-le en ligne!
Utilisez simplement le bon outil.
La sortie est la phonétique séparée par un ou plusieurs espaces.
la source
Assemblage IBM PC DOS 8088,
208204197194192 octetsTéléchargez l'exécutable DOS NATO.COM:
Essayez-le hors ligne! (dans DOSBox, etc.)
Sortie de test:
Mis à jour pour supprimer le premier caractère du tableau de la liste de mots (bien qu'il n'économise que 11 octets en raison du code supplémentaire requis).
la source
$
délimiteurs et en séparant les mots en mettant à la place leur première lettre en majuscule (et en premier je veux dire en second, car vous avez déjà omis la première). (Un niveau de compression plus élevé pourrait probablement être atteint avant que la longueur de code nécessaire pour le décompresser ne l'emporte sur l'avantage de la compression, mais le schéma simple de délimiteurs de majuscules serait un bon début.)ML.EXE /?
sortie ditMicrosoft (R) Macro Assembler Version 9.00.30729.01
. Oui, «LfaRavoHarlie» est exactement ce que je voulais dire. :) Je ferais le "OR AL, 20H" pour le rendre à nouveau en minuscules dans la sortie, mais c'est à vous..MODEL TINY
.CODE
ORG 100H
START:
au début etEND START
à la fin. N'en aviez-vous pas besoin pour le compiler avec MASM 5?05AB1E ,
1029695 octetsLa sortie est une liste de mots OTAN titrés.
Essayez-le en ligne.
Explication:
Voir cette astuce de la mine de 05AB1E (section Comment utiliser le dictionnaire? ) Pour comprendre pourquoi
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸtt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
est"Alfa Bravo Charlie Delta Echo Foxtrot Golf Hotel India Juliett Kilo Lima Mike November Oscar Papa Quebec Romeo Sierra Tango Uniform Victor Whiskey Xray Yankee Zulu"
. Le crédit de cette chaîne de dictionnaire compressée va à @ErikTheGolfer dans ce commentaire (avec un ajoutt
pourJuliett
au lieu deJuliet
).la source
Gelée ,
8077 octetsEssayez-le en ligne! (Le pied de page formate la liste en se joignant à des espaces pour éviter de briser l'impression implicite lorsqu'il est exécuté en tant que programme complet)
la source
JavaScript (ES6),
181189 octetsÉtant donné que le cas de sortie n'a pas d'importance, nous pouvons économiser des octets en exécutant des mots ensemble:
Essayez-le en ligne!
la source
Python 3 ,
250191 octets-47 octets grâce à @Jo King, -2 de plus grâce à @Jonathan Allen
Il passe en revue tous les caractères non spatiaux de l'entrée, et pour chacun d'eux, il sélectionne la phrase appropriée pour la lettre, qui peut être réduite un peu car la première lettre de chaque phrase est le caractère lui-même. Divise une chaîne au lieu de stocker les phrases sous forme de tableau pour enregistrer les octets des
'
s et,
s inutiles .Essayez-le en ligne!
Solution originale
Essayez-le en ligne!
la source
if' '<c
Rouge ,
210193 octetsEssayez-le en ligne!
Explication:
foreach
itère sur la chaîne une fois que tous les espaces sont supprimés partrim/all
.prin
imprime le caractère (pas de nouvelle ligne).print
imprime un symbole,pick
éd à partir de la liste des get-word! s (symboles) en utilisant le caractère mappé à la plage 1..26 comme index.la source
Nettoyer , 218 octets
Essayez-le en ligne!
la source
C # (compilateur interactif Visual C #) , 218 octets
Essayez-le en ligne!
Version alternative utilisant Split (), 194 octets
Essayez-le en ligne!
la source
C ++,
229228 octetsEssayez-le en ligne!
Non golfé:
Production:
Version à capitalisation propre ( 234 octets ):
Essayez-le en ligne!
Production:
la source
Langage machine IBM PC DOS 8088, 165 octets
Ceci est directement basé sur la réponse de gwaugh , mais j'ai rasé 26 octets en omettant le
et sera donc ignoré par le programme de toute façon). Le programme a fini par avoir exactement la même longueur pour pouvoir traiter la table dans ce format (dans lequel les mots ne sont délimités que par des caractères majuscules, qui servent le double but d'être également la deuxième lettre de chaque mot), ou 2 octets plus longtemps si la capitalisation de sortie est maintenue la même qu'auparavant. Le tableau est 26 octets plus petit.
$
délimiteurs de la table de mots "OTAN" et 1 octet supplémentaire en ne sautant pas le premier caractère de la chaîne de paramètres de ligne de commande (qui sera toujours soit/
ouDans le vidage de programme suivant, la concaténation par
:
est utilisée pour afficher chaque séquence d'octets consécutifs correspondant à une instruction:Téléchargez l'exécutable DOS NATO.COM:
Avec une capitalisation non corrigée (165 octets)
Avec une capitalisation propre (167 octets)
Version bonus qui met en majuscule la première lettre de chaque mot de la même manière que l'entrée (167 octets)
Non assemblé:
Exemple d'entrée:
Sortie (version 165 octets):
Version à capitalisation propre (167 octets):
Version à capitalisation propre avec la même capitalisation en entrée (167 octets):
la source
Charbon de bois , 99 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Sorties dans le cas approprié. Explication:
la source
Perl 6 ,
176 170 170166 octetsEssayez-le en ligne!
Sorties en majuscules avec la première lettre dans le cas d'origine. Compresse la chaîne, qui enregistre seulement 6 octets sur le texte brut plus simple:
Essayez-le en ligne!
Explication:
la source
Japt,
108106 octetsEssayez-le
Les backticks contiennent la chaîne compressée:
la source
PowerShell ,
187183 octetsEssayez-le en ligne!
Script de test:
Production:
la source
PHP ,
209205206 octetsEssayez-le en ligne!
Production:
Ou 195 octets, avec des espaces pas complètement supprimés:
Essayez-le en ligne!
Production:
la source
[31&ord($l)]
revenir à[31&ord($l)-1]
, ce qui coûte deux octets, mais vous pouvez également le corriger en un seul octet en l'épelant complètementALfa
.TSQL, 313 octets
Golfé:
Non golfé:
Essaye le
La sortie se termine par un point-virgule
la source
PowerShell,
228225 octets-3 octets grâce à @mazzy
Essayez-le en ligne!
C'est probablement le morceau de code le plus laid que j'aie jamais écrit. De plus, cela peut certainement être beaucoup plus court. Pour ma défense, je me remets encore des examens finaux.
la source
-split'lfa ravo ...'
est plus court car '\ s' est splitter par défaut :)PHP, 212 octets
Exécuter en tant que pipe avec
-nR
ou l' essayer en ligne .Génère des avertissements en PHP 7.2; mettre les éléments du tableau entre guillemets à corriger.
Imprime un trait de soulignement pour les espaces.
la source
C (clang) , 309 octets
Essayez-le en ligne!
la source
JavaScript, 179 octets
Essayez-le en ligne!
la source