Dalam teori informasi, "kode awalan" adalah kamus di mana tidak ada kunci yang merupakan awalan dari yang lain. Dengan kata lain, ini berarti bahwa tidak ada string yang dimulai dengan yang lain.
Misalnya, {"9", "55"}
adalah kode awalan, tetapi {"5", "9", "55"}
tidak.
Keuntungan terbesar dari ini, adalah bahwa teks yang dikodekan dapat ditulis tanpa pemisah di antara mereka, dan itu masih akan dapat diuraikan secara unik. Ini muncul dalam algoritma kompresi seperti pengkodean Huffman , yang selalu menghasilkan kode awalan yang optimal.
Tugas Anda sederhana: Diberikan daftar string, tentukan apakah itu kode awalan yang valid atau tidak.
Masukan Anda:
Akan ada daftar string dalam format apa pun yang masuk akal .
Hanya akan berisi string ASCII yang dapat dicetak.
Tidak akan mengandung string kosong.
Output Anda akan menjadi nilai truey / falsey : Sejujurnya jika itu kode awalan yang valid, dan falsey jika bukan.
Berikut ini beberapa kasus uji yang benar:
["Hello", "World"]
["Code", "Golf", "Is", "Cool"]
["1", "2", "3", "4", "5"]
["This", "test", "case", "is", "true"]
["111", "010", "000", "1101", "1010", "1000", "0111", "0010", "1011",
"0110", "11001", "00110", "10011", "11000", "00111", "10010"]
Berikut adalah beberapa kasus pengujian yang salah:
["4", "42"]
["1", "2", "3", "34"]
["This", "test", "case", "is", "false", "t"]
["He", "said", "Hello"]
["0", "00", "00001"]
["Duplicate", "Duplicate", "Keys", "Keys"]
Ini adalah kode-golf, sehingga celah standar berlaku, dan jawaban tersingkat dalam byte menang.
001
bisa diuraikan secara unik? Bisa jadi 00, 1
atau 0, 11
.
0, 00, 1, 11
semua sebagai kunci, ini bukan kode awalan karena 0 adalah awalan 00, dan 1 adalah awalan 11. Kode awalan adalah di mana tidak ada kunci yang dimulai dengan kunci lain. Jadi misalnya, jika kunci Anda 0, 10, 11
adalah kode awalan dan dapat diuraikan secara unik. 001
bukan pesan yang valid, tetapi 0011
atau 0010
dapat diuraikan secara unik.