Escriba un programa que tome una cadena y deletree esa palabra usando el alfabeto fonético de la OTAN.
El mapeo es el siguiente:
'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'
Ejemplo:
'Hello World' -> ['Hotel', 'Echo', 'Lima', 'Lima', 'Oscar', 'Whiskey', 'Oscar', 'Romeo', 'Lima', 'Delta']
La entrada puede ser cualquier cadena, pero siempre estará compuesta solo por letras y espacios. El caso es irrelevante en la salida, pero la entrada puede contener letras en mayúsculas, minúsculas o ambas. Los espacios deben ignorarse en la salida.
Puede imprimir en cualquier formato razonable, pero debe ser un conjunto delimitado de indicativos de la OTAN.
Alpha
y en suJuliet
lugar.Whisky
en el ejemplo no es igual aWhiskey
en el mapeo.Respuestas:
sfk ,
785957 bytesPruébalo en línea!
Solo usa la herramienta correcta.
La salida es la fonética separada por uno o más espacios.
fuente
Ensamblaje IBM PC DOS 8088,
208204 204197194192 bytesDescargue el ejecutable DOS NATO.COM:
¡Pruébalo sin conexión! (en DOSBox, etc.)
Prueba de salida:
Actualizado para eliminar el primer carácter de la matriz de la lista de palabras (aunque solo guarda 11 bytes debido al código adicional requerido).
fuente
$
delimitadores y separando las palabras al poner en mayúscula su primera letra (y por primera vez me refiero a la segunda, porque ya omitió la primera). (Un mayor nivel de compresión probablemente podría ser alcanzado antes de la longitud del código necesario para descomprimirlo superaría la ventaja de la compresión, pero el esquema simple del capital-LETTER-delimitadores sería un comienzo bueno.)ML.EXE /?
salida diceMicrosoft (R) Macro Assembler Version 9.00.30729.01
. Sí, 'LfaRavoHarlie' es exactamente lo que quise decir. :) Haría "OR AL, 20H" para que vuelva a minúsculas en la salida, pero depende de usted..MODEL TINY
.CODE
ORG 100H
START:
al principio yEND START
al final. ¿No necesitabas esto para compilarlo con MASM 5?05AB1E ,
1029695 bytesLa salida es una lista de palabras de la OTAN con título.
Pruébalo en línea.
Explicación:
Ver este consejo 05AB1E mío (sección Cómo usar el diccionario? ) Para entender por qué
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸtt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
es"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"
. El crédito de esta cadena de diccionario comprimido va a @ErikTheGolfer en este comentario (con un agregadot
para enJuliett
lugar deJuliet
).fuente
Jalea ,
8077 bytesPruébalo en línea! (El pie de página formatea la lista uniéndose con espacios para evitar la impresión aplastante implícita cuando se ejecuta como un programa completo)
fuente
JavaScript (ES6),
181189 bytesComo el caso de salida no importa, podemos guardar bytes ejecutando palabras juntas:
Pruébalo en línea!
fuente
Python 3 ,
250191 bytes-47 bytes gracias a @Jo King, -2 más gracias a @Jonathan Allen
Pasa por todos los caracteres que no son espacios de la entrada, y para cada uno de ellos selecciona la frase relevante para la letra, que puede reducirse un poco porque la primera letra de cada frase es el propio carácter. Divide una cadena en lugar de almacenar las frases como una matriz para guardar los bytes desde innecesarios
'
s y,
s.Pruébalo en línea!
Solución original
Pruébalo en línea!
fuente
if' '<c
Rojas ,
210193 bytesPruébalo en línea!
Explicación:
foreach
itera sobre la cadena después de eliminar todos los espacios en blancotrim/all
.prin
imprime el carácter (sin nueva línea).print
imprime un símbolo,pick
editado de la lista de get-word! s (símbolos) usando el carácter asignado al rango 1..26 como índice.fuente
Limpio , 218 bytes
Pruébalo en línea!
fuente
C # (compilador interactivo de Visual C #) , 218 bytes
Pruébalo en línea!
Versión alternativa con Split (), 194 bytes.
Pruébalo en línea!
fuente
C ++,
229228 bytesPruébalo en línea!
Sin golf:
Salida:
Versión de capitalización limpia ( 234 bytes ):
Pruébalo en línea!
Salida:
fuente
Lenguaje de máquina IBM PC DOS 8088, 165 bytes
Esto se basa directamente en la respuesta de gwaugh , pero me afeitó 26 bytes al omitir los
y así será ignorado por el programa de todos modos). El programa terminó teniendo exactamente la misma longitud para poder procesar la tabla en este formato (en el que las palabras están delimitadas solo por mayúsculas, que tienen el doble propósito de ser también la segunda letra de cada palabra), o 2 bytes más tiempo si la capitalización de salida se mantiene igual que antes. La tabla es 26 bytes más pequeña.
$
delimitadores de la "OTAN" tabla de palabras y un 1 byte adicional por no saltarse el primer carácter de la cadena de parámetros de línea de comandos (que será siempre bien/
oEn el siguiente volcado de programa, la concatenación por
:
se usa para mostrar cada secuencia de bytes consecutivos correspondientes a una instrucción:Descargue el ejecutable DOS NATO.COM:
Con mayúsculas sin corregir (165 bytes)
Con mayúsculas limpias (167 bytes)
Versión de bonificación que escribe en mayúscula la primera letra de cada palabra igual que la entrada (167 bytes)
Desmontado:
Entrada de muestra:
Salida (versión de 165 bytes):
Versión de capitalización limpia (167 bytes):
Versión de mayúsculas limpias con las mismas mayúsculas que la entrada (167 bytes):
fuente
Carbón de leña , 99 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Salidas en caso apropiado. Explicación:
fuente
Perl 6 ,
176 170166 bytesPruébalo en línea!
Salidas en mayúsculas con la primera letra en la caja original. Comprime la cadena, que solo guarda 6 bytes sobre el texto plano más simple:
Pruébalo en línea!
Explicación:
fuente
Japt,
108106 bytesIntentalo
Los backticks contienen la cadena comprimida:
fuente
PowerShell ,
187183 bytesPruébalo en línea!
Script de prueba:
Salida:
fuente
PHP ,
209205206 bytesPruébalo en línea!
Salida:
O 195 bytes, con espacios no completamente eliminados:
Pruébalo en línea!
Salida:
fuente
[31&ord($l)]
volver a cambiar[31&ord($l)-1]
, con un costo de dos bytes, pero también puede solucionarlo en un solo byte deletreando completamenteALfa
.TSQL, 313 bytes
Golfizado:
Sin golf:
Pruébalo
La salida termina con punto y coma
fuente
PowerShell,
228225 bytes-3 bytes gracias a @mazzy
Pruébalo en línea!
Este es posiblemente el código más feo que he escrito. Además, esto ciertamente puede ser mucho más corto. En mi defensa, todavía me estoy recuperando de los exámenes finales.
fuente
-split'lfa ravo ...'
es más corto porque '\ s' es divisor por defecto :)PHP, 212 bytes
Ejecutar como tubería con
-nR
o probarlo en línea .Produce advertencias en PHP 7.2; poner elementos de matriz entre comillas para arreglar.
Imprimirá un guión bajo para espacios.
fuente
C (clang) , 309 bytes
Pruébalo en línea!
fuente
JavaScript, 179 bytes
Pruébalo en línea!
fuente