Escreva um programa que use uma sequência e soletre essa palavra usando o Alfabeto Fonético da OTAN.
O mapeamento é o seguinte:
'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'
Exemplo:
'Hello World' -> ['Hotel', 'Echo', 'Lima', 'Lima', 'Oscar', 'Whiskey', 'Oscar', 'Romeo', 'Lima', 'Delta']
A entrada pode ser qualquer sequência, mas sempre será composta apenas de letras e espaços. Letras maiúsculas e minúsculas são irrelevantes na saída, mas a entrada pode conter letras maiúsculas, minúsculas ou ambas. Os espaços devem ser ignorados na saída.
Você pode produzir em qualquer formato razoável, mas deve ser um conjunto delimitado de indicativos de chamada da OTAN.
Alpha
e emJuliet
vez disso.Whisky
no exemplo não é igual aWhiskey
no mapeamento.Respostas:
sfk ,
785957 bytesExperimente online!
Basta usar a ferramenta certa.
Saída é a fonética separada por um ou mais espaços.
fonte
Montagem IBM PC DOS 8088,
208204197194192 bytesFaça o download do executável DOS NATO.COM:
Experimente offline! (no DOSBox, etc.)
Saída de teste:
Atualizado para remover o primeiro caractere da matriz da lista de palavras (embora apenas salve 11 bytes devido ao código adicional necessário).
fonte
$
delimitadores e separando as palavras, colocando em maiúscula a primeira letra (e primeiro quero dizer o segundo, porque você já deixou a primeira). (Um maior nível de compressão provavelmente poderia ser alcançado antes do comprimento do código necessário para descomprimir seria superam a vantagem da compressão, mas o esquema simples de capitais letras-delimitadores seria um bom começo.)ML.EXE /?
saída dizMicrosoft (R) Macro Assembler Version 9.00.30729.01
. Sim, 'LfaRavoHarlie' é exatamente o que eu quis dizer. :) Eu faria o "OR AL, 20H" para torná-lo em minúsculas novamente na saída, mas depende de você..MODEL TINY
.CODE
ORG 100H
START:
no começo eEND START
no fim. Você não precisava disso para compilá-lo com o MASM 5?05AB1E ,
1029695 bytesO resultado é uma lista de palavras da OTAN denominadas em titulo.
Experimente online.
Explicação:
Veja esta dica 05AB1E meu (seção Como usar o dicionário? ) Para entender por que
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸtt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
é"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"
. O crédito dessa string de dicionário compactada vai para @ErikTheGolfer neste comentário (com um acréscimot
para emJuliett
vez deJuliet
).fonte
Geléia ,
8077 bytesExperimente online! (O rodapé formata a lista juntando-se a espaços para evitar impressões de esmagamento implícitas quando executado como um programa completo)
fonte
JavaScript (ES6),
181189 bytesComo o caso de saída não importa, podemos salvar bytes executando palavras juntas:
Experimente online!
fonte
Python 3 ,
250191 bytes-47 bytes graças a @Jo King, -2 mais graças a @ Jonathan Allen
Ele percorre todos os caracteres não espaciais da entrada e, para cada um deles, seleciona a frase relevante para a letra, que pode ser reduzida um pouco porque a primeira letra de cada frase é o próprio caractere. Divide uma corda, em vez de armazenar as frases como uma matriz para salvar os bytes de desnecessários
'
s e,
s.Experimente online!
Solução original
Experimente online!
fonte
if' '<c
Vermelho ,
210193 bytesExperimente online!
Explicação:
foreach
itera sobre a sequência depois que todos os espaços em branco são removidos portrim/all
.prin
imprime o caractere (sem nova linha).print
imprime um símbolo,pick
ed a partir da lista de get-word! s (símbolos), usando o caractere mapeado para o intervalo de 1 a 26 como um índice.fonte
Limpo , 218 bytes
Experimente online!
fonte
C # (compilador interativo do Visual C #) , 218 bytes
Experimente online!
Versão alternativa usando Split (), 194 bytes
Experimente online!
fonte
C ++,
229228 bytesExperimente online!
Ungolfed:
Resultado:
Versão em maiúsculas limpas ( 234 bytes ):
Experimente online!
Resultado:
fonte
Linguagem de máquina IBM PC DOS 8088, 165 bytes
Isso é diretamente baseado na resposta de gwaugh , mas reduzi 26 bytes ao omitir os
e assim será ignorado pelo programa de qualquer maneira). O programa acabou sendo exatamente do mesmo tamanho para poder processar a tabela nesse formato (no qual as palavras são delimitadas apenas por caracteres maiúsculos, que servem ao duplo objetivo de também ser a segunda letra de cada palavra) ou 2 bytes mais se a capitalização do produto for mantida igual a antes. A tabela é 26 bytes menor.
$
delimitadores da tabela de palavras "NATO" e um byte extra por não ignorar o primeiro caractere da cadeia de parâmetros da linha de comando (que sempre será/
ouNo despejo de programa a seguir, a concatenação de
:
é usada para mostrar cada sequência de bytes consecutivos correspondentes a uma instrução:Faça o download do executável DOS NATO.COM:
Com letras maiúsculas não corrigidas (165 bytes)
Com
letras maiúsculas limpas (167 bytes) Versão bônus que coloca em maiúscula a primeira letra de cada palavra igual à entrada (167 bytes)
Desmontado:
Entrada de amostra:
Saída (versão de 165 bytes):
Versão em maiúsculas limpas (167 bytes):
Versão de capitalização limpa com a mesma capitalização que a entrada (167 bytes):
fonte
Carvão , 99 bytes
Experimente online! Link é a versão detalhada do código. Saídas no caso apropriado. Explicação:
fonte
Perl 6 ,
176 170166 bytesExperimente online!
Saídas em maiúsculas com a primeira letra no estojo original. Compacta a string, que salva apenas 6 bytes sobre o texto simples:
Experimente online!
Explicação:
fonte
Japonês,
108106 bytesTente
Os backticks contêm a cadeia compactada:
fonte
PowerShell ,
187183 bytesExperimente online!
Script de teste:
Resultado:
fonte
PHP ,
209205206 bytesExperimente online!
Resultado:
Ou 195 bytes, com espaços não totalmente removidos:
Experimente online!
Resultado:
fonte
[31&ord($l)]
voltar a[31&ord($l)-1]
custar dois bytes, mas você também pode corrigi-lo em apenas um byte, digitando-o completamenteALfa
.TSQL, 313 bytes
Golfe:
Ungolfed:
Experimente
A saída termina com ponto e vírgula
fonte
PowerShell,
228225 bytes-3 bytes graças a @mazzy
Experimente online!
É possivelmente o código mais feio que eu já escrevi. Além disso, isso certamente pode ficar muito mais curto. Em minha defesa, ainda estou me recuperando dos exames finais.
fonte
-split'lfa ravo ...'
é mais curto porque '\ s' é divisor por padrão :)PHP, 212 bytes
Execute como pipe
-nR
ou experimente online .Gera avisos no PHP 7.2; coloque elementos de matriz entre aspas para corrigir.
Irá imprimir um sublinhado para espaços.
fonte
C (clang) , 309 bytes
Experimente online!
fonte
JavaScript, 179 bytes
Experimente online!
fonte