Misi Anda hari ini adalah menciptakan kompresor teks.
Tugas
Anda akan menulis dua fungsi:
The packer adalah fungsi yang menerima sebuah string karakter ASCII (U + 0000 untuk U + 007F) dan output string Unicode (U + 0000 untuk U + 10FFFF), yang berisi karakter yang mungkin paling sedikit.
The unpacker adalah fungsi yang menerima sebuah Unicode string disandikan dan output persis ASCII string asli.
Memasukkan
Satu-satunya input yang diotorisasi adalah string ASCII (untuk pengemas) dan string Unicode yang dikemas (untuk pengurai). Tidak ada input pengguna, tidak ada koneksi internet, tidak ada penggunaan sistem file.
Fungsi Anda dapat memiliki akses ke daftar kata-kata bahasa Inggris ini . Anda dapat menggunakan daftar ini sebagai file txt lokal, atau menyalin kontennya dalam kode sumber Anda sebagai string atau array string .
Anda tidak dapat menyalin kode snippet di bawah ini di fungsi Anda.
Keluaran
Satu-satunya keluaran resmi untuk kedua fungsi adalah string.
Output dari unpacker harus mengandung karakter yang persis sama dengan input dari packer.
Input dan output Anda dapat menggunakan pengkodean karakter apa pun yang mendukung semua Unicode (UTF-8/16/32, GB18030, ...), karena skor Anda hanya akan bergantung pada jumlah karakter Unicode dalam output. Harap pastikan pengkodean mana yang Anda gunakan.
Untuk menghitung jumlah karakter Unicode dalam output Anda, Anda dapat menggunakan alat ini: http://mothereff.in/byte-counter
Mencetak gol
Entri Anda harus dapat mengemas dan membongkar 10 cuplikan teks berikut (yang saya ambil di forum ini).
Skor Anda akan menjadi jumlah dari ukuran 10 string Anda (dalam karakter Unicode) + ukuran dua fungsi Anda (dalam karakter Unicode juga)
Jangan hitung ukuran kamus jika Anda menggunakannya.
Harap sertakan di dalam entri Anda "skor" dari setiap cuplikan dan versi dikemasnya.
Skor terendah menang.
Data
Berikut ini cuplikan untuk disandikan untuk menghitung skor Anda:
1: Lirik Rick Roll (1870b): Kami tidak asing dengan kode golf, Anda tahu aturannya, dan saya juga
Kami bukan orang asing untuk dicintai Anda tahu aturannya dan saya juga Komitmen penuh adalah apa yang saya pikirkan Anda tidak akan mendapatkan ini dari pria lain Aku hanya ingin memberitahumu bagaimana perasaanku Harus membuatmu mengerti Tak akan menyerahkanmu Tidak akan pernah mengecewakan Anda Tidak akan pernah berlari dan meninggalkanmu Tidak akan pernah membuatmu menangis Tidak akan pernah pamit Tidak akan pernah berbohong dan menyakitimu Kami sudah saling kenal begitu lama Hatimu sakit tapi Kamu terlalu malu untuk mengatakannya Di dalam kita berdua tahu apa yang sedang terjadi Kami tahu permainannya dan kami akan memainkannya Dan jika Anda bertanya bagaimana perasaan saya Jangan bilang kamu terlalu buta untuk melihat Tak akan menyerahkanmu Tidak akan pernah mengecewakan Anda Tidak akan pernah berlari dan meninggalkanmu Tidak akan pernah membuatmu menangis Tidak akan pernah pamit Tidak akan pernah berbohong dan menyakitimu Tak akan menyerahkanmu Tidak akan pernah mengecewakan Anda Tidak akan pernah berlari dan meninggalkanmu Tidak akan pernah membuatmu menangis Tidak akan pernah pamit Tidak akan pernah berbohong dan menyakitimu (Ooh, menyerahlah) (Ooh, menyerahlah) (Ooh) Tidak akan pernah memberi, tidak akan pernah memberi (Menyerah) (Ooh) Tidak akan pernah memberi, tidak akan pernah memberi (Menyerah) Kami sudah saling kenal begitu lama Hatimu sakit tapi Kamu terlalu malu untuk mengatakannya Di dalam kita berdua tahu apa yang sedang terjadi Kami tahu permainannya dan kami akan memainkannya Aku hanya ingin memberitahumu bagaimana perasaanku Harus membuatmu mengerti Tak akan menyerahkanmu Tidak akan pernah mengecewakan Anda Tidak akan pernah berlari dan meninggalkanmu Tidak akan pernah membuatmu menangis Tidak akan pernah pamit Tidak akan pernah berbohong dan menyakitimu Tak akan menyerahkanmu Tidak akan pernah mengecewakan Anda Tidak akan pernah berlari dan meninggalkanmu Tidak akan pernah membuatmu menangis Tidak akan pernah pamit Tidak akan pernah berbohong dan menyakitimu Tak akan menyerahkanmu Tidak akan pernah mengecewakan Anda Tidak akan pernah berlari dan meninggalkanmu Tidak akan pernah membuatmu menangis Tidak akan pernah pamit Tidak akan pernah berbohong dan menyakitimu
2: Golfer (412b): Golf-ASCII-art
'\. . |> 18 >> \. ' | O >>. 'o | \. | / \. | / /. ' | jgs ^^^^^^ `^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^
3: the number diamond (233b): Cetak berlian ini
1 121 12321 1234321 123454321 12345654321 1234567654321 123456787654321 12345678987654321 123456787654321 1234567654321 12345654321 123454321 1234321 12321 121 1
4: alfabet empat kali (107b): Cetak alfabet empat kali
abcdefghijklmnopqrstuvwxyz qwertyuiopasdfghjklzxcvbnm pyfgcrlaoeuidhtnsqjkxbmwvz zyxwvutsrqponmlkjihgfedcba
5: Lirik Old McDonald's (203b): Fungsi Old MacDonald
Old MacDonald memiliki sebuah peternakan, EIEIO, Dan di peternakan itu dia punya seekor sapi, EIEIO, Dengan moo moo di sini dan moo moo di sana, Di sini moo, ada moo, di mana-mana moo moo, Old MacDonald punya pertanian, EIEIO!
6: Lirik Rock around the clock (144b): Rock Around the Clock
1, 2, 3 jam, 4 jam rock, Jam 5, 6, 7, jam 8, Jam 9, 10, 11, jam 12 siang, Kami akan nge-rock sepanjang waktu malam ini.
7: Hello World (296b): Katakan "Halo" kepada dunia dalam seni ASCII
_ _ _ _ _ _ _ | | | | ___ | | | ___ __ _____ _ __ | | __ | | | | | _ | | / _ \ | | / _ \ \ \ / \ / / _ \ | '__ | | / _` | | | _ | __ / | | (_) | \ VV / (_) | | | | (_ | | _ | | _ | | _ | \ ___ | _ | _ | \ ___ () \ _ / \ _ / \ ___ / | _ | | _ | \ __, _ (_) | /
8: Berkat Irlandia (210b): An Old Irish Blessing
Semoga kita menemukan jalan untuk bertemu Semoga angin selalu ada di belakang Anda Semoga matahari menyinari wajah Anda Hujan turun lembut di ladang Anda Dan sampai kita bertemu lagi Semoga Tuhan memegang Anda di lekukan tangan-Nya
9: Ada lirik wanita tua (1208b): Ada Wanita Tua
Ada seorang wanita tua yang menelan lalat. Saya tidak tahu mengapa dia menelan lalat itu, Mungkin dia akan mati. Ada seorang wanita tua yang menelan laba-laba, Itu menggeliat dan bergoyang-goyang dan berguncang di dalam dirinya. Dia menelan laba-laba untuk menangkap lalat, Saya tidak tahu mengapa dia menelan lalat itu, Mungkin dia akan mati. Ada seorang wanita tua yang menelan seekor burung, Betapa absurdnya menelan burung. Dia menelan burung itu untuk menangkap laba-laba, Dia menelan laba-laba untuk menangkap lalat, Saya tidak tahu mengapa dia menelan lalat itu, Mungkin dia akan mati. Ada seorang wanita tua yang menelan seekor kucing, Bayangkan itu menelan seekor kucing. Dia menelan kucing itu untuk menangkap burung itu, Dia menelan burung itu untuk menangkap laba-laba, Dia menelan laba-laba untuk menangkap lalat, Saya tidak tahu mengapa dia menelan lalat itu, Mungkin dia akan mati. Ada seorang wanita tua yang menelan seekor anjing, Betapa babi harus menelan seekor anjing. Dia menelan anjing itu untuk menangkap kucing itu, Dia menelan kucing itu untuk menangkap burung itu, Dia menelan burung itu untuk menangkap laba-laba, Dia menelan laba-laba untuk menangkap lalat, Saya tidak tahu mengapa dia menelan lalat itu, Mungkin dia akan mati. Ada seorang wanita tua yang menelan seekor kuda, Dia meninggal tentu saja.
10: alamat gettysburg (1452b): Seberapa acak Alamat Gettysburg
Empat skor dan tujuh tahun yang lalu ayah kita menghasilkan di benua baru ini sebuah negara baru, diciptakan dalam kebebasan, dan didedikasikan untuk proposisi bahwa semua manusia diciptakan sama. Sekarang kita terlibat dalam perang saudara yang hebat, menguji apakah negara itu, atau negara mana pun yang dikonsep dan begitu berdedikasi, dapat bertahan lama. Kita bertemu di medan perang yang hebat. Kami datang untuk mendedikasikan sebagian dari ladang itu, sebagai tempat peristirahatan terakhir bagi mereka yang di sini memberikan hidup mereka agar bangsa itu bisa hidup. Sangat tepat dan patut kita melakukan ini. Tetapi, dalam arti yang lebih besar, kita tidak bisa mendedikasikan, kita tidak bisa menguduskan, kita tidak bisa menguduskan tanah ini. Orang-orang pemberani, hidup dan mati, yang berjuang di sini, telah menguduskannya, jauh di atas kekuatan buruk kita untuk menambah atau mengurangi. Dunia akan sedikit memperhatikan, atau lama mengingat apa yang kita katakan di sini, tetapi tidak pernah bisa melupakan apa yang mereka lakukan di sini. Bagi kami yang hidup, lebih tepatnya, didedikasikan di sini untuk pekerjaan yang belum selesai yang sejauh ini telah mereka perjuangkan dengan begitu mulia. Adalah lebih baik bagi kita untuk berada di sini didedikasikan untuk tugas besar yang tersisa di hadapan kita - bahwa dari orang-orang mati yang terhormat kita semakin meningkatkan pengabdian kepada sebab yang mereka berikan ukuran penuh terakhir dari pengabdian - bahwa kita di sini sangat memutuskan bahwa orang-orang mati ini tidak akan telah mati sia-sia - bahwa bangsa ini, di bawah Tuhan, akan memiliki kelahiran baru yang bebas - dan bahwa pemerintahan rakyat, oleh rakyat, untuk rakyat, tidak akan binasa dari bumi.
Total (tidak terkompresi): 6135 karakter / byte.
Selamat bersenang-senang!
private static final String RICK_ROLL_RETURN = "We're no strangers to love...