Semua orang tahu apa itu pengkodean run-length. Sudah menjadi subjek dari banyak tantangan kode-golf. Kami akan melihat variasi tertentu.
Contoh
Normal: 11222222222222222222233333111111111112333322
Run-length: 112(19)3(5)1(11)2333322
Angka dalam tanda kurung menentukan berapa kali simbol sebelumnya terjadi. Dalam contoh, hanya menjalankan 5 karakter atau lebih yang dikodekan. Ini karena proses pengkodean berjalan 4 atau kurang tidak meningkatkan jumlah karakter.
Tantangan
Tulis fungsi / program yang mengimplementasikan variasi pengkodean run-length ini, tetapi juga dapat menyandikan run dari dua simbol. Lari dua simbol juga harus tertutup dalam tanda kurung. Grup juga akan dilampirkan dalam tanda kurung. Program Anda harus menerima string sebagai input, dan mengeluarkan string yang dimodifikasi dengan modifikasi yang mempersingkat string.
Contoh
Normal: 111244411144411144411167676767222222277777222222277777123123123123
Double run-length: 1112((444111)(3))67676767((2(7)7(5))(2))123123123123
Catatan
111
tidak disandikan karena penyandiannya (1(3)
) tidak lebih pendek.- String
444111
muncul 3 kali sehingga dikodekan. 676767
tidak disandikan karena((67)(4))
lebih panjang dari sebelumnya.222222277777222222277777
tidak dikodekan sebagai((222222277777)(2))
. Mengapa? Karena222222277777
itu sendiri dapat dikurangi menjadi2(7)7(5)
.123123123123
tidak disandikan karena program Anda seharusnya menangani dua simbol, bukan tiga.
Ini adalah kode-golf sehingga kode terpendek menang. Tie-breaker adalah pengiriman awal.
Jika saya melewatkan sesuatu, atau jika Anda tidak yakin akan apa pun, beri tahu saya di komentar.
67
s.441444144414
->((4414)(3))
?4414
secara teknis serangkaian 4. Kata-kata saya hanya buruk.111111111
dikodekan sebagai(1)(9)
?Jawaban:
Retina, 162 byte
Cobalah online!
sumber
10101010100100100100100
, outputnya adalah((10)(5))0((100)(4))
, namun((10)(4))((100)(5))
akan menjadi satu karakter lebih pendek.