Una gran parte de la comunicación por radio es el alfabeto fonético de la OTAN , que codifica las letras como palabras para que sean más fáciles de entender a través de las comunicaciones. Su trabajo, si desea aceptarlo, es imprimirlos uno por uno.
Debe imprimir esta cadena exacta para 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
Reglas:
- Su programa no tiene entrada
- Las lagunas estándar no están permitidas .
- Si hay algún texto incorporado en su idioma que convierte las letras en sus equivalentes de la OTAN, no puede usarlos (lo estoy mirando a usted, Mathematica).
- Puede tener espacios finales y una nueva línea final.
code-golf
kolmogorov-complexity
alphabet
sagiksp
fuente
fuente
A: Alpha
?Juliett
, noJuliet
y enX-ray
lugar deXray
.Respuestas:
Python 2 ,
189186 bytesPruébalo en línea!
Anterior: (esto fue genial, pero me di cuenta de que la versión más simple podría acortarse por un byte)
fuente
Jalea , 76 bytes
Pruébalo en línea!
¿Cómo?
Prácticamente solo valores de diccionario y compresión. El código entre
“
y»
es solo un valor comprimido que formará la cadena"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"
al buscar todas las palabras (con prefijos de espacio único, excepto"Alfa"
) en el diccionario de Jelly (excepto" Xray"
que no está en el diccionario, por lo que el valor de cadena directa" X"
y el diccionario la entrada"ray"
se usa en su lugar).El resto del código hace el resto:
fuente
Retina , 156 bytes
El recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
fuente
05AB1E ,
10298 bytesGuardado 4 bytes gracias a Erik the Outgolfer
Pruébalo en línea!
Explicación
Utiliza la compresión del diccionario para las palabras del diccionario 05AB1E.
Utiliza la compresión parcial del diccionario siempre que sea posible para otras palabras.
Palabras de texto sin formato donde ninguna de las dos es posible.
fuente
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
.pa
yli
en el diccionario, pero debo haberlos extrañado. No lo consideréya
yzu
, sin embargo, como palabras :)Ruby, 169 caracteres
(Fuertemente basada en Jonathan Allan 's Python 2 solución. Si te gusta la idea, por favor Upvote la respuesta original).
Ejecución de muestra:
fuente
Java 7,
242225222217 bytesExplicación:
Código de prueba:
Pruébalo aquí.
fuente
Octava,
215210209 bytesGuardado 5 bytes gracias a Luis Mendo.Ahorré 4 bytes gracias a Luis Mendo, pero cambiar el enfoque me ayudó a guardar uno másPruébalo en línea!
Si me deshago de los espacios, ahorraría 25 bytes, pero luegotendría que usar una expresión regular. La expresión regular en sí misma costaría unos pocos bytes, y también eliminaría la letra mayúscula de todas las palabras, dejándome con las palabras,lfa, ravo
etc. Por lo tanto, tendría que concatenar las nuevas cadenas con los caracteres principales. Todo esto cuesta bytes.Vieja explicación:
fuente
'split'
estaría más tiempo aquí'split'
fue más corto: 209 :)PHP,
202227196187 bytesGracias a Dewi Morgan por guardar 9 bytes
https://repl.it/GMkH/1
versiones anteriores
¡Gracias a manatwork e insertusernamehere por guardar 31 bytes!
https://eval.in/749541
Gracias a insertusernamehere por notar que la salida era incorrecta con la versión anterior.
https://repl.it/GKS8/3
https://repl.it/GKS8/2
fuente
$a
? Simplemente mueva toda lapreg_split()
llamada enforeach
el parámetro de. Entonces ya noas
será necesario ninguno de los espacios alrededor .PREG_SPLIT_NO_EMPTY
, utilizar mejor su valor:1
. Pero personalmente me gustaría modificar la expresión regular en su lugar:/\B(?=[A-Z])/
.:D
Todavía me estoy acostumbrando a codegolfingpreg_split
.echo preg_replace('/([A-Z])[a-z]+/',"$1 = $0\n",Alfa...Zulu);
Brachylog , 178 bytes
Pruébalo en línea!
Explicación
fuente
PHP,
188186180174 bytessin espacios finales, una nueva línea principal
simplemente reemplaza todas las letras mayúsculas en la cadena comprimida con
<newline><letter><colon><space><letter>
fuente
gzinflate
-ing el resultado degzdeflate(Alfa...Zulu)
.and for your other question, yes, but just one.
Asamblea x86, 512 bytes
Compilado con NASM y probado con QEMU. Para arrancar, debe poner una firma de arranque de 2 bytes al final del sector de arranque (510 bytes en el archivo), por lo que perdí 317 bytes llenando el código compilado con ceros. Este es mi primer golf, así que tengo que disculparme por cualquier error gigantesco.
Salida
Esto es lo que genera el código anterior. Como puede ver A: falta Alfa y eso se debe a que el indicador tiene 25 líneas de alto ...
Para demostrar que imprimí A: Alfa I reemplazó
0,"ulu"
con el32,"Z: Zulu"
fin de que Zulu es una en la misma línea que el Yankee.Agradecería que alguien me dijera si podría restar los 317 bytes de zerofill de mi código para que sean 195 bytes. Además, si esto es válido porque la salida no cabe en la pantalla.
fuente
Python 2 ,
186182 bytesPruébalo en línea!
fuente
C (MinGW, Clang), 218 bytes
Gracias a @gastropner!
Pruébalo en línea!
C,
259236 bytesPruébalo en línea!
fuente
gcc src.c
oclang src.c
. Aquí hay una muestra de ejecución con una función principal agregada para que el código realmente se vincule y ejecute: ideone.com/4Eowlhf
debería reemplazarse pormain
lo que el código es válido, o me estoy perdiendo alguna convención 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,":"));}
No está claro si funciona en todas partes: TIO segfaults pero funciona en MinGW al menos. No puedo ver muchas razones por las que no funcionaría.Gema, 168 caracteres
Ejecución de muestra:
fuente
Bash ,
224205188180 bytesGracias a Digital Trauma por eliminar 17 bytes, y manatwork por 8 bytes.
Pruébalo en línea!
fuente
a
es demasiado larga.set {A..Z};for i in lfa … ulu;{ echo $1: $1$i;shift;}
Python 2 , 198 bytes
Pruébalo en línea!
No es emocionante ni inteligente. Simplemente recorre la lista e imprime la primera letra, luego ':' y luego la palabra completa.
fuente
PHP,
184 bytes179 bytes178guardó un solo byte usando preg_filter en lugar de preg_replace.
Respuesta original
184 bytes179 bytesutiliza el hecho de que está ordenado para generar el primer personaje sobre la marcha.
5 bytes guardados por @Titus.
fuente
for($c=A;$s=[lfa,...,ulu][+$i++];$c++)echo"$c: $c$s\n";
. Bonita expresión regular sin embargo.SOGL , 91 bytes
Explicación:
fuente
GNU sed , 165 bytes
Este guión se basa en la respuesta Retina de Martin Ender.
Pruébalo en línea!
Explicación:
fuente
Bash , 184 bytes
Pruébalo en línea!
fuente
{,}
truco en la expansión de llaves es una forma muy inteligente de duplicar cada miembro de la lista!Lua,
278260 bytes¡Gracias de nuevo a Manatwork por guardar 18 bytes!
Pruébalo en línea
versiones anteriores
https://repl.it/GK8J
La primera vez que hago Lua, probablemente pueda jugar más al golf, pero de todos modos pensé en agregarlo como respuesta.
fuente
a
? ;) Puede mover toda la declaración de matriz dentro defor
. Y elfor
..in
sintaxis ayuda a evitar escribir esas largas índices de matriz: pastebin.com/rxck79md cosa extraña Lua: si se declara una función y llamar 26 veces “manualmente” (quiero decir, no en un bucle) es más corto: Pastebin. com / FMF9GmLJ¯\_(ツ)_/¯
por la sencilla razón de que nunca había usado Lua antes, así que solo estaba siguiendo el manual para intentar que funcionara, jaja. Gracias @manatwork por la información, no lo sabía.Lua , 177 bytes
Pruébalo en línea!
Sin nueva línea final, 180 bytes:
Explicación
Utiliza la función de sustitución string.gsub de Lua para que el patrón coincida con las letras mayúsculas. Las letras se reemplazan con el formato solicitado (más las letras en sí). Las nuevas líneas también se agregan en el mismo pase.
La subfunción al final solo recorta la nueva línea desde el principio y también funciona muy bien para ocultar el segundo valor de retorno de gsub, que habría sido la cantidad de reemplazos.
fuente
PowerShell ,
187185 bytesPruébalo en línea!
Bucles desde
0
hasta25
, cada iteración formando$a
el capital correspondientechar
. Luego concatenado con cadenas: $a
(es decir, la letra del espacio de dos puntos). Luego, esa cadena se concatena con una cadena que se forma indexando en una matriz creada al-split
vincular la cadena fonética en los espacios. Cada una de esas 26 cadenas se deja en la tubería, yWrite-Output
sucede implícitamente al finalizar el programa, insertando una nueva línea entre los elementos.Ahorró dos bytes gracias a @Matt.
fuente
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 bytesPruébalo en línea!
A continuación se puede encontrar una versión detallada, legible para los humanos, bien comentada y perfectamente válida (sin advertencias del compilador):
fuente
char*s
sino que tambiénprintf
podría entrar allí. Por lo tanto, guarda otros 3 bytes: un punto y coma y 2 llaves, ya que ya no los necesitamos, ya que solo hay una instrucción en su cuerpo: el otrofor
bucle.JavaScript ES6,
216 187 184 180174 bytesSalvó un byte gracias a Neil. Guardado 5 bytes gracias a ETHproductions.
Japt , 127 bytes
Pruébalo en línea!
Guardado 2 bytes gracias a obarakon.
fuente
A: A
la cadena. Pero aún puede guardar otro byte utilizando un carácter literal de nueva línea en lugar de\n
.$&
s en ella con la coincidencia, por lo que puede hacer, por ejemplo,"\n$&: $&"
para ambos langs en lugar de usar funciones.@"\n{X}: {X}"}
en Japt a solo"\n$&: $&"
:-)" x
e insertando una-x
bandera en la entrada. Tenga en cuenta que la bandera agrega 1 byte al total de bytes.PHP,
175171164162 bytesNota: ya no requiere un archivo comprimido, utiliza la codificación IBM-850.
Corre así:
Explicación
Imprime cada carácter individualmente (en minúscula por OR con un espacio). Si se encuentra un carácter en mayúscula, primero imprime una cadena de la forma "\ nA: A".
Ajustes
$l
con el parámetro de explosión), y no evitando una nueva línea inicialfuente
Japt,
216214 bytesExplicación: Lo más probable es que haya una forma mucho mejor de hacerlo, pero como soy nuevo, no lo sé. Básicamente comprimí la cadena con Oc "y puse esa cadena para descomprimir usando Od"
Si alguien quiere ayudarme a guardar bytes usando algo diferente a los saltos de línea, ¡me encantaría saberlo!
editar: Guardado 2 bytes usando `en lugar de Od"
fuente
:/
Pyke, 89 bytes
fuente
Qbasic, 383 bytes
No es impresionante, pero por lo que vale:
fuente
data
declaración y luegoread
dentro delfor
...next
bucle??"A: Alfa"
y así sucesivamente, solo 360 bytes?/// , 220 bytes
Pruébalo en línea!
-20 bytes gracias a @ETHproductions.
fuente