Sebagian besar komunikasi radio adalah NATO Phonetic Alphabet , yang menyandikan huruf sebagai kata-kata untuk membuatnya lebih mudah dipahami daripada comms. Pekerjaan Anda, jika Anda ingin menerimanya, adalah mencetaknya satu per satu.
Anda harus mencetak string ini ke 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
Aturan:
- Program Anda tidak menerima input
- Celah standar dilarang .
- Jika ada bawaan dalam bahasa Anda yang mengubah huruf menjadi equivelants NATO mereka, Anda tidak dapat menggunakannya (Saya melihat Anda Mathematica).
- Anda mungkin memiliki spasi tambahan dan satu baris tambahan.
code-golf
kolmogorov-complexity
alphabet
sagiksp
sumber
sumber
A: Alpha
?Juliett
, bukanJuliet
danX-ray
bukannyaXray
.Jawaban:
Python 2 ,
189186 byteCobalah online!
Sebelumnya: (ini keren, tapi saya menyadari bahwa versi yang lebih sederhana dapat dibuat lebih pendek dengan satu byte)
sumber
Jelly , 76 byte
Cobalah online!
Bagaimana?
Cukup banyak nilai kamus dan kompresi. Kode antara
“
dan»
hanya nilai terkompresi yang akan membentuk 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"
dengan mencari semua kata (dengan awalan spasi tunggal, kecuali untuk"Alfa"
) dalam kamus Jelly (kecuali" Xray"
yang tidak ada dalam kamus, jadi nilai string langsung" X"
dan kamus entri"ray"
digunakan sebagai gantinya).Sisa kode melakukan sisanya:
sumber
Retina , 156 byte
Hitungan byte mengasumsikan penyandian ISO 8859-1.
Cobalah online!
sumber
05AB1E ,
10298 byteDisimpan 4 byte berkat Erik the Outgolfer
Cobalah online!
Penjelasan
Menggunakan kompresi kamus untuk kata-kata dalam kamus 05AB1E.
Gunakan kompresi kamus sebagian jika memungkinkan untuk kata lain.
Kata teks biasa di mana keduanya tidak mungkin.
sumber
”AlfaІvo¼¯¤œ®È¨›trotŠˆƒ‹Š™ÈŸt Kilo´àma—……ÍЗŽêpa¼°«Äoµ†Çâgo¸šÉµ Whiskey Xrayµ‹nkeeâ¸lu”
.pa
danli
dalam kamus tetapi saya pasti merindukan mereka. Saya tidak mempertimbangkanya
danzu
sebagai kata-kata :)Ruby, 169 karakter
(Berat berdasarkan Jonathan Allan 's Python 2 solusi. Jika Anda menyukai ide itu, silakan upvote jawaban asli.)
Contoh dijalankan:
sumber
Java 7,
242225222217 bytePenjelasan:
Kode uji:
Coba di sini.
sumber
Oktaf,
215210209 byteDisimpan 5 byte berkat Luis Mendo.Saya menyimpan 4 byte berkat Luis Mendo, tetapi mengubah pendekatan membantu saya menghemat satu lagiCobalah online!
Jika saya menghilangkan spasi, saya akan menghemat 25 byte, tetapi kemudiansaya harus menggunakan regex. Regex itu sendiri akan membutuhkan biaya beberapa byte, dan itu juga akan menghapus huruf kapital dari semua kata, meninggalkan saya dengan kata-katalfa, ravo
dll. Oleh karena itu saya harus menggabungkan string baru dengan karakter utama. Semua ini membutuhkan byte.Penjelasan lama:
sumber
'split'
akan lebih lama di sini'split'
lebih pendek: 209 :)PHP,
202227196187 byteTerima kasih kepada Dewi Morgan untuk menghemat 9 byte
https://repl.it/GMkH/1
Versi yang lebih lama
Terima kasih untuk manatwork dan masukkan nama pengguna di sini untuk menghemat 31 byte!
https://eval.in/749541
Terima kasih untuk menyisipkan nama pengguna di sini karena memperhatikan output salah dengan versi sebelumnya.
https://repl.it/GKS8/3
https://repl.it/GKS8/2
sumber
$a
? Pindahkan saja seluruh parameterpreg_split()
panggilanforeach
. Maka tidak ada ruang di sekitaras
akan diperlukan lagi.PREG_SPLIT_NO_EMPTY
, lebih baik menggunakan nilainya:1
. Tapi secara pribadi saya akan men-tweak ekspresi reguler sebagai gantinya:/\B(?=[A-Z])/
.:D
Masih terbiasa dengan codegolfingpreg_split
.echo preg_replace('/([A-Z])[a-z]+/',"$1 = $0\n",Alfa...Zulu);
Brachylog , 178 byte
Cobalah online!
Penjelasan
sumber
PHP,
188186180174 bytetidak ada spasi tambahan, satu baris baru
cukup mengganti semua huruf besar dalam string terkompresi dengan
<newline><letter><colon><space><letter>
sumber
gzinflate
-ing hasilgzdeflate(Alfa...Zulu)
.and for your other question, yes, but just one.
x86 Assembly, 512 byte
Dikompilasi dengan NASM dan diuji dengan QEMU. Untuk mem-boot Anda harus meletakkan tanda tangan boot 2 byte di ujung bootsector (510 byte ke dalam file) jadi saya kehilangan 317 byte mengisi kode yang dikompilasi dengan nol. Ini golf pertama saya, jadi saya harus minta maaf atas kesalahan raksasa.
Keluaran
Inilah yang dihasilkan oleh kode di atas. Seperti yang Anda lihat A: Alfa hilang dan itu karena prompt adalah 25 baris ...
Untuk membuktikan saya mencetak A: Alfa saya diganti
0,"ulu"
dengan32,"Z: Zulu"
sehingga Zulu adalah satu di baris yang sama seperti Yankee.Saya akan sangat menghargai jika seseorang mengatakan kepada saya jika saya dapat mengurangi 317 byte zerofill dari kode saya sehingga akan menjadi 195 byte. Juga jika ini bahkan valid karena output tidak muat di layar.
sumber
Python 2 ,
186182 byteCobalah online!
sumber
C (MinGW, Dentang), 218 byte
Terima kasih kepada @gastropner!
Cobalah online!
C,
259236 byteCobalah online!
sumber
gcc src.c
atauclang src.c
. Berikut ini contoh proses dengan fungsi utama yang ditambahkan sehingga kode tersebut akan terhubung dan dijalankan: ideone.com/4Eowlhf
boleh diganti denganmain
kode yang valid, atau saya kehilangan beberapa konvensi 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,":"));}
Tidak jelas jika itu bekerja di mana-mana: TIO segfault tetapi setidaknya bekerja di MinGW. Tidak bisa melihat banyak alasan mengapa itu tidak berhasil.Gema, 168 karakter
Contoh dijalankan:
sumber
Bash ,
224205188180 byteTerima kasih kepada Digital Trauma karena menghapus 17 byte, dan manatwork selama 8 byte.
Cobalah online!
sumber
a
terlalu panjang.set {A..Z};for i in lfa … ulu;{ echo $1: $1$i;shift;}
Python 2 , 198 byte
Cobalah online!
Tidak mengasyikkan atau pintar. Putar saja daftar dan cetak huruf pertama lalu ':' lalu seluruh kata.
sumber
PHP,
184 byte179 byte178menyimpan satu byte dengan menggunakan preg_filter alih-alih preg_replace.
Jawaban asli
184 byte179 bytemenggunakan fakta bahwa itu diurutkan untuk menghasilkan char pertama dengan cepat.
5 byte disimpan oleh @Titus.
sumber
for($c=A;$s=[lfa,...,ulu][+$i++];$c++)echo"$c: $c$s\n";
. Regex yang bagus.SOGL , 91 byte
Penjelasan:
sumber
GNU sed , 165 byte
Skrip ini didasarkan pada jawaban Retina oleh Martin Ender.
Cobalah online!
Penjelasan:
sumber
Bash , 184 byte
Cobalah online!
sumber
{,}
trick dalam ekspansi brace adalah cara yang sangat cerdas untuk ganda setiap anggota daftar!Lua,
278byteTerima kasih lagi untuk Manatwork karena telah menghemat 18 byte!
Cobalah online
Versi yang lebih lama
https://repl.it/GK8J
Pertama kali melakukan Lua, lakukan mungkin bisa golf lebih banyak, tetapi saya pikir saya akan menambahkannya sebagai jawaban.
sumber
a
? ;) Anda dapat memindahkan seluruh deklarasi array di dalamfor
. Danfor
..in
sintaks membantu untuk menghindari penulisan indeks array panjang itu: pastebin.com/rxck79md Weird Lua thing: jika Anda mendeklarasikan suatu fungsi dan menyebutnya 26 kali "secara manual" (maksud saya, bukan dalam satu lingkaran) lebih pendek: pastebin. com / FMF9GmLJ¯\_(ツ)_/¯
untuk alasan sederhana bahwa saya tidak pernah menggunakan Lua sebelumnya, jadi saya hanya mengikuti manual untuk mencoba membuatnya bekerja, aha. Terima kasih @manatwork untuk informasinya, saya tidak tahu tentang itu.Lua , 177 byte
Cobalah online!
Tanpa membuntuti baris baru, 180 byte:
Penjelasan
Ini menggunakan fungsi substitusi string.gs Lua untuk mencocokkan pola huruf besar. Surat-surat itu kemudian diganti dengan format yang diminta (ditambah huruf-huruf itu sendiri). Baris baru juga ditambahkan pada pass yang sama.
Subfungsi pada akhirnya hanya memotong baris baru dari awal dan juga berfungsi dengan baik untuk menyembunyikan nilai pengembalian kedua gsub, yang akan menjadi jumlah penggantian.
sumber
PowerShell ,
187185 byteCobalah online!
Loop dari
0
ke25
, setiap iterasi membentuk$a
ibukota yang sesuaichar
. Kemudian string-digabungkan dengan: $a
(yaitu, ruang-ruang-huruf). Kemudian string itu digabungkan dengan string yang dibentuk oleh pengindeksan ke dalam array yang dibuat oleh-split
ting string fonetik pada spasi. Masing-masing dari 26 string ditinggalkan di pipa, dan tersiratWrite-Output
terjadi pada penyelesaian program, memasukkan baris baru antar elemen.Disimpan dua byte berkat @Matt.
sumber
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 byteCobalah online!
Versi program yang terperinci, mudah dibaca, dikomentari dengan baik, dan benar-benar valid (tidak ada peringatan kompiler) dapat ditemukan di bawah:
sumber
char*s
tetapi jugaprintf
bisa masuk ke sana. Dengan demikian menghemat 3 byte lagi - titik koma dan 2 kurung kurawal karena kita tidak lagi membutuhkannya karena hanya ada satu instruksi dalam tubuh itu -for
loop lainnya .JavaScript ES6,
216 187 184 180174 bytesMenyimpan satu byte berkat Neil. Disimpan 5 byte berkat produk ETH.
Japt , 127 byte
Cobalah online!
Disimpan 2 byte berkat obarakon.
sumber
A: A
pada string. Tetapi Anda masih dapat menyimpan byte lain dengan menggunakan karakter baris baru literal alih-alih\n
.$&
di dalamnya dengan kecocokan, sehingga Anda dapat melakukan mis"\n$&: $&"
untuk kedua langs alih-alih menggunakan fungsi.@"\n{X}: {X}"}
dalam Japt menjadi hanya"\n$&: $&"
:-)" x
dan memasukkan-x
bendera ke input. Perhatikan bahwa flag menambahkan 1 byte ke total byte.PHP,
175171164162 byteCatatan: tidak lagi memerlukan file terkompresi, menggunakan pengkodean IBM-850.
Jalankan seperti ini:
Penjelasan
Mencetak setiap karakter secara individual (lebih kecil dari OR dengan spasi). Jika karakter huruf besar ditemukan, pertama-tama mencetak string dari bentuk "\ nA: A".
Tweaks
$l
dengan param meledak), dan tidak mencegah baris baru terkemukasumber
Japt,
216214 bytePenjelasan: Kemungkinan besar ada cara yang lebih baik untuk melakukannya, tetapi karena saya baru saya tidak mengetahuinya. Saya pada dasarnya mengompresi string dengan Oc "dan meletakkan string itu untuk didekompresi menggunakan Od"
Jika seseorang ingin membantu saya menghemat byte dengan menggunakan sesuatu yang berbeda dari jeda baris, saya akan senang belajar!
sunting: Disimpan 2 byte menggunakan `bukannya Od"
sumber
:/
Pyke, 89 byte
sumber
Qbasic, 383 byte
Tidak mengesankan, tetapi untuk apa nilainya:
sumber
data
pernyataanread
di dalamfor
..next
loop??"A: Alfa"
dan seterusnya hanya 360 byte?/// , 220 byte
Cobalah online!
-20 byte terima kasih kepada @ETHproductions.
sumber