Напишите программу, которая принимает строку и записывает это слово, используя фонетический алфавит НАТО.
Отображение выглядит следующим образом:
'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'
Пример:
'Hello World' -> ['Hotel', 'Echo', 'Lima', 'Lima', 'Oscar', 'Whiskey', 'Oscar', 'Romeo', 'Lima', 'Delta']
Ввод может быть любой строкой, но всегда будет состоять только из букв и пробелов. Регистр не имеет значения в выводе, но ввод может содержать буквы в верхнем, нижнем регистре или оба. Пробелы должны игнорироваться в выходных данных.
Вы можете выводить данные в любом приемлемом формате, но это должен быть ограниченный набор позывных НАТО.
Alpha
иJuliet
вместо.Whisky
в примере не равноWhiskey
в сопоставлении.Ответы:
сфк ,
785957 байтПопробуйте онлайн!
Просто используйте правильный инструмент.
Вывод - это фонетика, разделенная одним или несколькими пробелами.
источник
Сборка IBM PC DOS 8088,
208204197194192 байтаЗагрузите исполняемый файл DOS NATO.COM:
Попробуйте это в автономном режиме! (в DOSBox и т. д.)
Тестовый вывод:
Обновлен для удаления первого символа из массива списка слов (хотя экономит только 11 байтов из-за дополнительного необходимого кода).
источник
$
разделители и разделив слова, заглавными вместо них первая буква (и под первым я имею в виду второе, потому что вы уже пропустили первое). (Возможно, более высокий уровень сжатия может быть достигнут до того, как длина кода, необходимого для его распаковки, перевесит преимущество сжатия, но простая схема разделителей заглавных букв будет хорошим началом.)ML.EXE /?
Говорит выходMicrosoft (R) Macro Assembler Version 9.00.30729.01
. Да, «LfaRavoHarlie» - именно то, что я имел в виду. :) Я бы сделал "ИЛИ AL, 20H", чтобы снова сделать его строчным в выводе, но решать вам..MODEL TINY
.CODE
ORG 100H
START:
в начале иEND START
в конце. Разве вам не нужно это для компиляции с MASM 5?05AB1E ,
1029695 байтовВыходные данные - это список названий НАТО.
Попробуйте онлайн.
Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как пользоваться словарем? ), Чтобы понять, почему
”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"
. Кредит этого сжатого словаря строки идет в @ErikTheGolfer в этом комментарии (с добавленнымt
дляJuliett
вместоJuliet
).источник
Желе ,
8077 байтПопробуйте онлайн! (Нижний колонтитул форматирует список, объединяя его с пробелами, чтобы избежать неявного разрушения печати при запуске в качестве полной программы)
источник
JavaScript (ES6),
181189 байтПоскольку регистр вывода не имеет значения, мы можем сохранить байты, запустив слова вместе:
Попробуйте онлайн!
источник
Python 3 ,
250191 байт-47 байтов благодаря @Jo King, еще -2 благодаря @Jonathan Allen
Он проходит через все непробельные символы ввода и для каждого из них выбирает соответствующую фразу для буквы, которую можно немного уменьшить, поскольку первая буква каждой фразы - это сам символ. Разделяет строку вместо сохранения фраз в виде массива, чтобы сохранить байты от ненужных
'
s и,
s.Попробуйте онлайн!
Оригинальное решение
Попробуйте онлайн!
источник
if' '<c
Красный ,
210193 байтаПопробуйте онлайн!
Объяснение:
foreach
перебирает строку после того, как все пробелы удаленыtrim/all
.prin
печатает символ (без новой строки).print
печатает символ,pick
редактируемый из списка get-word! s (символов), используя символ, сопоставленный с диапазоном 1..26 в качестве индекса.источник
Чисто , 218 байт
Попробуйте онлайн!
источник
C # (интерактивный компилятор Visual C #) , 218 байт
Попробуйте онлайн!
Альтернативная версия с использованием Split (), 194 байта
Попробуйте онлайн!
источник
C ++,
229228 байтПопробуйте онлайн!
Ungolfed:
Выход:
Версия с чистой прописной буквой ( 234 байта ):
Попробуйте онлайн!
Выход:
источник
IBM PC DOS 8088 машинный язык, 165 байт
Это напрямую основано на ответе Гуах , но я сбрил 26 байт, опуская
и, таким образом, все равно будет игнорироваться программой). Программа получилась точно такой же длины, чтобы иметь возможность обрабатывать таблицу в этом формате (в котором слова ограничиваются только заглавными буквами, которые служат двойной цели, так как они являются второй буквой каждого слова), или 2 байта дольше, если выходная капитализация остается такой же, как и раньше. Таблица на 26 байтов меньше.
$
разделители из слов таблицы «НАТО» и дополнительных 1 байт, не пропуская первый символ строки параметров командной строки (которая всегда будет либо/
илиВ следующем дампе программы, конкатенация
:
используется для отображения каждой последовательности последовательных байтов, соответствующих инструкции:Загрузите исполняемый файл DOS NATO.COM:
с некорректированной заглавной буквой (165 байт)
с чистой заглавной буквой (167 байт)
буквой Бонусная версия, в которой первая буква каждого слова с заглавной буквы совпадает с вводом (167 байт)
разобранное:
Пример ввода:
Выход (версия 165 байт):
Версия с чистой прописной буквой (167 байт):
Версия с чистой капитализацией с той же капитализацией, что и для ввода (167 байт):
источник
Древесный уголь , 99 байт
Попробуйте онлайн! Ссылка на подробную версию кода. Выходы в правильном случае. Объяснение:
источник
Perl 6 ,
176 170166 байтПопробуйте онлайн!
Вывод в верхнем регистре с первой буквой в оригинальном регистре. Сжимает строку, которая экономит всего 6 байт по сравнению с простым текстом:
Попробуйте онлайн!
Объяснение:
источник
Japt,
108106 байтПопытайся
Бэктикс содержит сжатую строку:
источник
PowerShell ,
187183 байтаПопробуйте онлайн!
Тестовый скрипт:
Выход:
источник
PHP ,
209205206 байтПопробуйте онлайн!
Выход:
Или 195 байтов, с пробелами, не полностью удаленными:
Попробуйте онлайн!
Выход:
источник
[31&ord($l)]
вернуться обратно[31&ord($l)-1]
, стоит два байта, но вы также можете исправить это только одним байтом, полностью расшифровавALfa
.TSQL, 313 байта
Golfed:
Ungolfed:
Попробуйте это
Выход заканчивается точкой с запятой
источник
PowerShell,
228225 байт-3 байта благодаря @mazzy
Попробуйте онлайн!
Это, пожалуй, самый уродливый кусок кода, который я когда-либо писал. Кроме того, это, безусловно, может стать намного короче. В свою защиту я все еще оправляюсь от выпускных экзаменов.
источник
-split'lfa ravo ...'
короче, потому что '\ s' по умолчанию является сплиттером :)PHP, 212 байт
Запустите как трубу с
-nR
или попробуйте онлайн .Выдает предупреждения в PHP 7.2; положить элементы массива в кавычки, чтобы исправить.
Напечатает подчеркивание для пробелов.
источник
C (лязг) , 309 байтов
Попробуйте онлайн!
источник
JavaScript, 179 байт
Попробуйте онлайн!
источник