Tulis program yang menggunakan string dan ucapkan kata itu menggunakan Alfabet Fonetik NATO.
Pemetaannya adalah sebagai berikut:
'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'
Contoh:
'Hello World' -> ['Hotel', 'Echo', 'Lima', 'Lima', 'Oscar', 'Whiskey', 'Oscar', 'Romeo', 'Lima', 'Delta']
Input dapat berupa string apa saja, tetapi akan selalu terdiri dari hanya huruf dan spasi. Kasus tidak relevan dalam output, tetapi input mungkin berisi huruf dalam huruf besar, huruf kecil, atau keduanya. Spasi harus diabaikan dalam output.
Anda dapat menampilkan dalam format apa pun yang masuk akal, tetapi harus berupa serangkaian tanda panggilan NATO yang dibatasi.
Alpha
danJuliet
sebagai gantinya.Whisky
dalam contoh tidak sama denganWhiskey
di pemetaan.Jawaban:
sfk ,
785957 byteCobalah online!
Cukup gunakan alat yang tepat.
Keluaran adalah fonetik yang dipisahkan oleh satu ruang atau lebih.
sumber
Perakitan IBM PC DOS 8088,
208204197194192 byteUnduh DOS NATO.COM yang dapat dieksekusi:
Cobalah offline! (dalam DOSBox, dll.)
Output tes:
Diperbarui untuk menghapus karakter pertama dari susunan daftar kata (meskipun hanya menyimpan 11 byte karena kode tambahan yang diperlukan).
sumber
$
pembatas dan memisahkan kata-kata dengan huruf besar huruf pertama sebagai gantinya (dan pertama yang saya maksud kedua, karena Anda sudah meninggalkan yang pertama). (Tingkat kompresi yang lebih tinggi mungkin dapat dicapai sebelum panjang kode yang diperlukan untuk mendekompresnya akan lebih besar daripada keuntungan dari kompresi, tetapi skema sederhana pembatas huruf kapital akan menjadi awal yang baik.)ML.EXE /?
keluaran mengatakanMicrosoft (R) Macro Assembler Version 9.00.30729.01
. Yap, 'LfaRavoHarlie' tepat seperti yang saya maksud. :) Saya akan melakukan "ATAU AL, 20 H" untuk membuatnya menjadi huruf kecil lagi di output, tapi terserah Anda..MODEL TINY
.CODE
ORG 100H
START:
di awal danEND START
di akhir. Apakah Anda tidak memerlukan ini untuk dikompilasi dengan MASM 5?05AB1E ,
1029695 byteOutput adalah daftar kata-kata NATO yang Dititrasi.
Cobalah online.
Penjelasan:
Lihat ini ujung 05AB1E saya (bagian Cara menggunakan kamus? ) Untuk memahami mengapa
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸtt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
adalah"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"
. Kredit dari string kamus terkompresi ini pergi ke @ErikTheGolfer dalam komentar ini (dengan tambahant
untukJuliett
bukanJuliet
).sumber
Jelly ,
8077 byteCobalah online! (Footer memformat daftar dengan bergabung dengan spasi untuk menghindari cetakan smashing saat dijalankan sebagai program lengkap)
sumber
JavaScript (ES6),
181189 byteKarena case output tidak masalah, kita dapat menyimpan byte dengan menjalankan kata-kata bersama:
Cobalah online!
sumber
Python 3 ,
250191 byte-47 byte terima kasih kepada @Jo King, -2 lebih banyak terima kasih kepada @Jonathan Allen
Ini melewati semua karakter non-spasi input, dan untuk masing-masing itu memilih frase yang relevan untuk huruf, yang dapat dikurangi sedikit karena huruf pertama dari setiap frase adalah karakter itu sendiri. Pisahkan string alih-alih menyimpan frasa sebagai array untuk menyimpan byte dari
'
s dan s yang tidak perlu,
.Cobalah online!
Solusi asli
Cobalah online!
sumber
if' '<c
Merah ,
210193 byteCobalah online!
Penjelasan:
foreach
beralih di atas string setelah semua spasi putih dihilangkan olehtrim/all
.prin
mencetak karakter (tidak ada baris baru).print
mencetak simbol,pick
ed dari daftar get-word! s (simbol) menggunakan karakter yang dipetakan ke kisaran 1..26 sebagai indeks.sumber
Bersihkan , 218 byte
Cobalah online!
sumber
C # (Visual C # Interactive Compiler) , 218 byte
Cobalah online!
Versi alternatif menggunakan Split (), 194 byte
Cobalah online!
sumber
C ++,
229228 byteCobalah online!
Tidak Disatukan:
Keluaran:
Versi kapitalisasi bersih ( 234 byte ):
Cobalah online!
Keluaran:
sumber
Bahasa mesin IBM PC DOS 8088, 165 byte
Ini secara langsung berdasarkan jawaban gwaugh , tetapi saya mencukur 26 byte dengan menghilangkan
dan karenanya akan diabaikan oleh program). Program berakhir dengan panjang yang sama persis untuk dapat memproses tabel dalam format ini (di mana kata-kata dibatasi hanya oleh karakter huruf besar, yang melayani tujuan ganda juga menjadi huruf kedua dari setiap kata), atau 2 byte lebih lama jika kapitalisasi output dijaga sama seperti sebelumnya. Tabel ini berukuran 26 byte lebih kecil.
$
pembatas dari tabel kata "NATO" dan tambahan 1 byte dengan tidak melewatkan karakter pertama dari string parameter baris perintah (yang akan selalu berupa/
atauDalam dump program berikut, concatenation by
:
digunakan untuk menunjukkan setiap urutan byte berturut-turut sesuai dengan instruksi:Unduh DOS NATO.COM yang dapat dieksekusi:
Dengan kapitalisasi tidak dikoreksi (165 byte)
Dengan kapitalisasi bersih (167 byte)
Versi bonus yang menggunakan huruf kapital dari setiap kata pertama sama dengan input (167 byte)
Belum dirakit:
Input sampel:
Output (versi 165 byte):
Versi kapitalisasi bersih (167 byte):
Versi kapitalisasi bersih dengan kapitalisasi sama dengan input (167 byte):
sumber
Arang , 99 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Output dalam kasus yang tepat. Penjelasan:
sumber
Perl 6 ,
176 170166 byteCobalah online!
Output dalam huruf besar dengan huruf pertama dalam kasus aslinya. Mengompresi string, yang hanya menyimpan 6 byte di atas teks biasa yang lebih sederhana:
Cobalah online!
Penjelasan:
sumber
Japt,
108106 byteCobalah
Backtick berisi string yang dikompresi:
sumber
PowerShell ,
187183 byteCobalah online!
Skrip uji:
Keluaran:
sumber
PHP ,
209205206 byteCobalah online!
Keluaran:
Atau 195 byte, dengan spasi tidak sepenuhnya dihapus:
Cobalah online!
Keluaran:
sumber
[31&ord($l)]
kembali ke[31&ord($l)-1]
, biaya dua byte, tetapi Anda juga dapat memperbaikinya hanya dalam satu byte dengan mengeja sepenuhnyaALfa
.TSQL, 313 byte
Golf:
Tidak Disatukan:
Cobalah
Output berakhir dengan titik koma
sumber
PowerShell,
228225 byte-3 byte terima kasih kepada @mazzy
Cobalah online!
Ini sangat mungkin potongan kode paling jelek yang pernah saya tulis. Selain itu, ini tentu bisa jauh lebih pendek. Dalam pembelaan saya, saya masih belum pulih dari ujian akhir.
sumber
-split'lfa ravo ...'
lebih pendek karena 's' adalah splitter secara default :)PHP, 212 byte
Jalankan sebagai pipa dengan
-nR
atau coba online .Menghasilkan peringatan di PHP 7.2; letakkan elemen array di tanda kutip untuk memperbaikinya.
Akan mencetak garis bawah untuk spasi.
sumber
C (dentang) , 309 byte
Cobalah online!
sumber
JavaScript, 179 byte
Cobalah online!
sumber