Tujuan dari Rosetta Stone Challenge adalah menulis solusi dalam bahasa sebanyak mungkin. Pamerkan multibahasa Anda dalam pemrograman!
Tantangan
Kami telah melakukan run-length encoding menjadi kedepan tetapi hanya dianggap berjalan dari satu karakter. Tentu saja, kadang-kadang kita dapat membuat penghematan lebih besar jika kita mempertimbangkan beberapa karakter.
Ambil aaaxyzxyzxyzdddd
contoh. Ini dapat dikompresi ke 3a3{xyz}4d
. Tugas Anda adalah menulis sebuah program fungsi yang, mengingat serangkaian huruf dan spasi peka huruf besar-kecil, kompres secara optimal menggunakan pengkodean run-length untuk menjalankan multi-karakter.
Anda dapat mengambil input melalui argumen fungsi, STDIN atau ARGV dan mengembalikan hasilnya atau mencetaknya ke STDOUT.
Berjalan tidak harus disarangkan, jadi aaabbbaaabbb
harus 3a3b3a3b
, tidak 2{3a3b}
. Yaitu string harus dikodekan (atau didekodekan) dalam satu pass tunggal.
Konsekuensi Kompresi Optimal
Beberapa contoh di mana aplikasi naif pengkodean run-length dapat menyebabkan hasil yang kurang optimal:
abab
tidak boleh "dikompresi" ke2{ab}
aaaabcdeabcde
tidak harus dikompresi4abcdeabcde
tetapi3a2{abcde}
sebaliknya.
Jika ada dua versi optimal (misalnya aa
dan 2a
atau abcabc
dan 2{abc}
) hasilnya baik-baik saja.
Contohnya
Input Output
aa aa -or- 2a
aaaaaAAAAA 5a5A
ababa ababa
abababa a3{ba} -or- 3{ab}a
foo foo bar 2{foo }bar
aaaabcdeabcde 3a2{abcde}
xYzxYz xYzxYz -or- 2{xYz}
abcabcdefcdef abcab2{cdef}
pppqqqpppqqq 3p3q3p3q
pppqqqpppqqqpppqqq 3{pppqqq}
Mencetak gol
Setiap bahasa adalah kompetisi terpisah untuk siapa yang dapat menulis entri terpendek, tetapi pemenang keseluruhan adalah orang yang memenangkan sebagian besar sub-kompetisi ini. Ini berarti bahwa seseorang yang menjawab dalam banyak bahasa yang tidak biasa dapat memperoleh keuntungan. Code golf sebagian besar tiebreak ketika ada lebih dari satu solusi dalam bahasa: orang dengan program terpendek mendapat pujian untuk bahasa itu.
Jika ada seri, pemenangnya adalah orang dengan kiriman tempat kedua (dan seterusnya).
Aturan, Batasan, dan Catatan
Harap simpan semua kiriman berbeda Anda yang terkandung dalam satu jawaban.
Juga, tidak ada shenanigans dengan jawaban yang pada dasarnya sama dalam dialek bahasa yang sedikit berbeda. Saya akan menjadi juri untuk pengajuan apa yang cukup berbeda.
Papan Peringkat Saat Ini
Bagian ini akan diperbarui secara berkala untuk menunjukkan jumlah bahasa dan siapa yang memimpin di masing-masing bahasa.
- C # (265) - edc65
- JavaScript (206) - edc65
- Python (214) - Will
- VB.NET (346) - edc65
Peringkat Pengguna Saat Ini
- edc65 (3)
- Will (1)
sumber
Python 214
(indentasi tingkat kedua adalah tab)
Karena ini adalah kode-golf , ini adalah pendekatan rekursif yang naif tanpa keluar awal, jadi ini sangat lambat.
sumber