Uma grande parte da comunicação via rádio é o Alfabeto Fonético da OTAN , que codifica letras como palavras para torná-las mais fáceis de entender através de comunicações. Seu trabalho, se você deseja aceitá-lo, é imprimi-los um por um.
Você deve imprimir esta sequência exata no 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
Regras:
- Seu programa não recebe nenhuma entrada
- As brechas padrão não são permitidas .
- Se houver algum componente interno no seu idioma que gire letras para os equivalentes da OTAN, você não poderá usá-los (estou olhando para você, Mathematica).
- Você pode ter espaços à direita e uma nova linha à direita.
code-golf
kolmogorov-complexity
alphabet
sagiksp
fonte
fonte
A: Alpha
?Juliett
, nãoJuliet
e emX-ray
vez deXray
.Respostas:
Python 2 ,
189186 bytesExperimente online!
Anterior: (isso foi legal, mas percebi que a versão mais simples poderia ser reduzida por um byte)
fonte
Geléia , 76 bytes
Experimente online!
Quão?
Praticamente apenas valores e compactação de dicionário. O código entre
“
e»
é apenas um valor compactado que formará a string"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"
pesquisando todas as palavras (com prefixos de espaço único, exceto"Alfa"
) no dicionário Jelly (exceto o" Xray"
que não está no dicionário), portanto, o valor direto da string" X"
e o dicionário entrada"ray"
é usada).O restante do código faz o resto:
fonte
Retina , 156 bytes
A contagem de bytes assume a codificação ISO 8859-1.
Experimente online!
fonte
05AB1E ,
10298 bytesEconomizou 4 bytes graças a Erik the Outgolfer
Experimente online!
Explicação
Usa a compactação de dicionário para as palavras no dicionário 05AB1E.
Usa compactação parcial do dicionário sempre que possível para outras palavras.
Palavras em texto sem formatação onde isso não é possível.
fonte
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
.pa
eli
no dicionário, mas devo ter sentido falta deles. Eu não considerarya
ezu
como palavras embora :)Ruby, 169 caracteres
(Fortemente baseada em Jonathan Allan do Python 2 solução. Se você gosta da idéia, por favor upvote a resposta original.)
Exemplo de execução:
fonte
Java 7,
242225222217 bytesExplicação:
Código do teste:
Experimente aqui.
fonte
Oitava,
215210209 bytesGuardado 5 bytes graças a Luis Mendo.Salvei 4 bytes graças a Luis Mendo, mas alterar a abordagem me ajuda a salvar mais umaExperimente online!
Se eu me livrasse dos espaços, economizaria 25 bytes, masprecisaria usar uma regex. O regex em si custaria alguns bytes e também removeria a letra maiúscula de todas as palavras, deixando-me com as palavraslfa, ravo
etc. Por isso, teria que concatenar as novas strings com os caracteres principais. Tudo isso custa bytes.Antiga explicação:
fonte
'split'
seria mais por aqui'split'
foi menor: 209 :)PHP,
202227196187 bytesAgradecimentos a Dewi Morgan por salvar 9 bytes
https://repl.it/GMkH/1
versões mais antigas
Obrigado ao manatwork e insertusernamehere por salvar 31 bytes!
https://eval.in/749541
Obrigado a insertusernamehere por perceber que a saída estava errada com a versão anterior.
https://repl.it/GKS8/3
https://repl.it/GKS8/2
fonte
$a
? Apenas mova apreg_split()
chamada inteira noforeach
parâmetro. Então, nenhum dos espaços ao redoras
será mais necessário.PREG_SPLIT_NO_EMPTY
, melhor usar o seu valor:1
. Mas pessoalmente eu iria ajustar a expressão regular em vez disso:/\B(?=[A-Z])/
.:D
Ainda se acostumando com codegolfingpreg_split
.echo preg_replace('/([A-Z])[a-z]+/',"$1 = $0\n",Alfa...Zulu);
Braquilog , 178 bytes
Experimente online!
Explicação
fonte
PHP,
188186180174 bytessem espaços à direita, uma nova linha principal
simplesmente substitui todas as letras maiúsculas na string compactada por
<newline><letter><colon><space><letter>
fonte
gzinflate
-ing o resultado degzdeflate(Alfa...Zulu)
.and for your other question, yes, but just one.
Montagem x86, 512 bytes
Compilado com NASM e testado com QEMU. Para inicializar, você precisa colocar uma assinatura de inicialização de 2 bytes no final do setor de inicialização (510 bytes no arquivo), então eu perdi 317 bytes preenchendo o código compilado com zeros. Este é o meu primeiro golfe, por isso tenho que me desculpar por qualquer erro gigantesco.
Saída
É isso que o código acima gera. Como você pode ver A: Alfa está ausente e isso ocorre porque o prompt tem 25 linhas de altura ...
Para provar que imprimi A: Alfa , substitui
0,"ulu"
por,32,"Z: Zulu"
para que o Zulu seja o mesmo da Yankee.Eu apreciaria se alguém me dissesse se eu seria capaz de subtrair os 317 bytes de zerofill do meu código, de forma que seriam 195 bytes. Além disso, se isso for válido, porque a saída não caberá na tela.
fonte
Python 2 ,
186182 bytesExperimente online!
fonte
C (MinGW, Clang), 218 bytes
Graças a @gastropner!
Experimente online!
C,
259236 bytesExperimente online!
fonte
gcc src.c
ouclang src.c
. Aqui está um exemplo de execução com uma função principal adicionado para que o código vai realmente link e executar: ideone.com/4Eowlhf
ser substituído por,main
para que o código seja válido, ou estou perdendo alguma convenção de golfe.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,":"));}
Não está claro se funciona em qualquer lugar: o TIO segfaults, mas funciona no MinGW pelo menos. Não vejo muita razão para não funcionar.Gema, 168 caracteres
Exemplo de execução:
fonte
Bash ,
224205188180 bytesAgradecemos ao Digital Trauma pela remoção de 17 bytes e ao trabalho manual por 8 bytes.
Experimente online!
fonte
a
é muito longa.set {A..Z};for i in lfa … ulu;{ echo $1: $1$i;shift;}
Python 2 , 198 bytes
Experimente online!
Não é emocionante ou inteligente. Basta percorrer a lista e imprimir a primeira letra e depois ':' depois a palavra inteira.
fonte
PHP,
184 bytes179 bytes178salvou um único byte usando preg_filter em vez de preg_replace.
Resposta original
184 bytes179 bytesusa o fato de que é classificado para gerar o primeiro caractere em tempo real.
5 bytes salvos por @Titus.
fonte
for($c=A;$s=[lfa,...,ulu][+$i++];$c++)echo"$c: $c$s\n";
. Regex agradável embora.SOGL , 91 bytes
Explicação:
fonte
GNU sed , 165 bytes
Esse script é baseado na resposta da Retina de Martin Ender.
Experimente online!
Explicação:
fonte
Bash , 184 bytes
Experimente online!
fonte
{,}
truque na expansão de chaves é uma maneira muito inteligente de dobrar cada membro da lista!Lua,
278260 bytesAgradecemos novamente ao Manatwork por salvar 18 bytes!
Experimente online
versões mais antigas
https://repl.it/GK8J
Na primeira vez em que Lua, provavelmente você pode jogar mais, mas achei que eu a adicionaria como resposta.
fonte
a
? ;) Você pode mover toda a declaração da matriz dentro dofor
. E a sintaxefor
..in
ajuda a evitar escrever esses índices longos de array: pastebin.com/rxck79md Coisa estranha de Lua: se você declarar uma função e chamá-la 26 vezes "manualmente" (quero dizer, não em um loop) é mais curta: pastebin. com / FMF9GmLJ¯\_(ツ)_/¯
pela simples razão de nunca ter usado Lua antes, estava apenas seguindo o manual para tentar fazê-lo funcionar, aha. Obrigado @manatwork pela informação, eu não sabia disso.Lua , 177 bytes
Experimente online!
Sem nova linha à direita, 180 bytes:
Explicação
Ele usa a função de substituição string.gsub de Lua para corresponder às letras maiúsculas. As letras são substituídas pelo formato solicitado (mais as próprias letras). Novas linhas também são adicionadas no mesmo passe.
A subfunção no final apara a nova linha desde o início e também funciona muito bem para ocultar o segundo valor de retorno do gsub, que teria sido a quantidade de substituições.
fonte
PowerShell ,
187185 bytesExperimente online!
Loops de
0
para25
, cada iteração que forma$a
o capital correspondentechar
. Em seguida, concatenado com uma string: $a
(ou seja, a letra do espaço de dois pontos). Em seguida, essa sequência é concatenada com uma sequência formada pela indexação em uma matriz criada pela-split
marcação da sequência fonética em espaços. Cada uma dessas 26 strings é deixada no pipeline e um implícitoWrite-Output
acontece na conclusão do programa, inserindo uma nova linha entre os elementos.Economizou dois bytes graças a @Matt.
fonte
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 bytesExperimente online!
Uma versão detalhada, legível por humanos, bem comentada e perfeitamente válida (sem avisos do compilador) do programa pode ser encontrada abaixo:
fonte
char*s
mas oprintf
poderia ir lá também. Assim, economizamos mais 3 bytes - um ponto-e-vírgula e 2 chaves, pois não precisamos mais deles, pois existe apenas uma instrução em seu corpo - o outrofor
loop.JavaScript ES6,
216 187 184 180174 bytesGuardou um byte graças a Neil. Economizou 5 bytes graças ao ETHproductions.
Japonês , 127 bytes
Experimente online!
Guardado 2 bytes graças a obarakon.
fonte
A: A
à string. Mas você ainda pode salvar outro byte usando um caractere literal de nova linha em vez de\n
.$&
s nela pela correspondência, para que você possa fazer, por exemplo,"\n$&: $&"
para os dois idiomas em vez de usar funções.@"\n{X}: {X}"}
em Japt para apenas"\n$&: $&"
:-) #" x
e inserindo um-x
sinalizador na entrada. Observe que o sinalizador adiciona 1 byte ao total de bytes.PHP,
175171164162 bytesNota: não requer mais arquivo compactado, usa a codificação IBM-850.
Execute assim:
Explicação
Imprime todos os caracteres individualmente (em minúsculas por OR com um espaço). Se um caractere maiúsculo for encontrado, ele primeiro imprime uma sequência no formato "\ nA: A".
Tweaks
$l
com o parâmetro explodir) e não impedindo uma nova linha principalfonte
Japonês,
216214 bytesExplicação: Provavelmente existe uma maneira muito melhor de fazê-lo, mas como sou novo, não o conheço. Eu basicamente comprimi a string com Oc "e coloquei essa string para ser descompactada usando Od"
Se alguém quiser me ajudar a salvar bytes usando algo diferente de quebras de linha, ficaria feliz em aprender!
editar: salvou 2 bytes usando `em vez de Od"
fonte
:/
Pyke, 89 bytes
fonte
Qbasic, 383 bytes
Não é impressionante, mas pelo que vale a pena:
fonte
data
instrução e depoisread
dentro do loopfor
..next
??"A: Alfa"
seria apenas 360 bytes?/// , 220 bytes
Experimente online!
-20 bytes graças a @ETHproductions.
fonte