Tugas Anda adalah menulis sebuah program, yang diberi daftar pesan obrolan, menghitung berapa kali setiap orang di-ping, jadi saya bisa tahu seberapa populer semua orang. Tapi, karena saya harus melakukannya secara sembunyi-sembunyi, saya perlu sekecil mungkin agar saya bisa menyembunyikan kode.
Spesifikasi
- Masukan datang dalam daftar 2-tupel, dengan masing-masing item berbentuk
("username", "message")
. - Ping ke pengguna lain didefinisikan sebagai
@
diikuti oleh 3 atau lebih huruf yang jelas merujuk ke pengguna itu. - Namun, Anda juga harus mempertimbangkan balasan, yang harus dimulai dengan
:messageid
diikuti oleh spasi. - Anggap pesan pertama memiliki id
0
dan lanjutkan secara berurutan. - Keluarkan setiap pengguna dan katakan berapa kali setiap ping.
- Outputnya bisa dalam format urutan apa pun / wajar.
- Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
Uji Kasus
[["AlexA.", "I am wrong"], ["Quartatoes", "@Alex you are very wrong"], ["AlexA.", ":1 I am only slightly wrong"]]
AlexA.: 1
Quartatoes: 1
[["Doorknob", "I have never eaten an avocad."], ["AquaTart", ":0 I will ship you an avocad"], ["AlexA.", ":0 this is shocking"]]
Doorknob: 2
AquaTart: 0
AlexA.: 0
[["Geobits", "I like causing sadness through downvotes."], ["Flawr", "I want to put random message ids in my chat messages :0 askjdaskdj"]]
Geobits: 0
Flawr: 0
[["Downgoat", "goatigfs.com/goatgif"], ["Downotherthing", "@Downgoat cool gifs"], ["Dennis", "@Down cool gifs this is an ambiguous ping"]]
Downgoat: 1
Downotherthing: 0
Dennis: 0
:0
berfungsi ganda sebagai emoticon yang terkejut.:3
) atau ping tidak memuaskan pengguna di ruangan (mis.@zzz
)?[["Doorknob","@Alex is wrong"],["Alex","I am only slightly wrong"]]
input yang valid?Jawaban:
JavaScript (ES6),
245210 byteMenggunakan objek untuk membuat daftar nama unik di samping ping. Kemudian mencari pesan-pesan yang cocok dengan kondisi ping. Jika sebuah nama, ia melihat daftar nama untuk menemukan apakah hanya ada satu kecocokan, dan kemudian peningkatan. Jika ada balasan, itu hanya merujuk indeks itu di larik pesan dan menarik nama yang akan ditambahkan. Akhirnya, ia mengembalikan objek.
sumber
Map
lebih menyenangkan bukan? Na, saya awalnya memperkirakan terlalu banyak berapa banyak yang diperlukan untuk referensi objek, berpikir saya harus array yang terpisah untuk nama, tetapi Anda benar bahwa itu jauh lebih pendek dengan cara ini.PHP, 227 Bytes
sumber