Tantangan
Rancang algoritme kompresi yang dikhususkan untuk menekan labirin ASCII. Anda perlu membuat algoritma kompresi dan algoritma dekompresi. Skor Anda akan didasarkan pada ukuran labirin terkompresi Anda.
Labirin
Labirin ini dibuat terutama dari karakter (lantai),
+
, -
, |
, dan #
(dinding), dan tepat satu masing-masing ^
(mulai) dan $
(end). Mereka juga dapat berisi surat ASCII, yang dihitung sebagai ubin lantai. Untuk tujuan tantangan ini, labirin tidak harus dipecahkan dan makna sebenarnya dari konten labirin tidak relevan.
+
akan digunakan untuk sel-sel dinding di mana setidaknya ada satu sel dinding yang berdekatan secara horizontal dan setidaknya satu sel dinding yang berdekatan secara vertikal.|
akan digunakan untuk sel-sel dinding di mana setidaknya ada satu sel dinding yang berdekatan secara vertikal, tetapi tidak ada sel-sel dinding yang berdekatan secara horizontal.-
akan digunakan untuk sel-sel dinding di mana setidaknya ada satu sel dinding yang berdekatan secara horizontal, tetapi tidak ada sel-sel dinding yang berdekatan secara vertikal#
hanya akan digunakan untuk sel-sel dinding yang tidak berdekatan secara ortogonal dengan sel-sel dinding lainnya.
Semua labirin berbentuk persegi panjang, tetapi tidak harus memiliki perataan grid / dinding biasa.
Labirin Untuk Kompres
Labirin 1
+----+----
| o | |
| -- | o--+
| | | $
--^-+-+---
Labirin 2
+-----+---+
| a | |
^ +-+-+ # |
| | | B |
| | | --+ |
| c | $
+-------+--
Labirin 3
----------+-+-+-----+-+
^ | | | | |
+-- --+R # | |p| | | |
| | | | | |
+---+ +-+-+-- +-+ | | |
| m| | | | | | | |
| +-+ | | | | | --+ | |
| | | h | | | | |
| | | | | | # --+-+ |
| | | | | | S| $
+-----+-+-+-+-+---+----
Labirin 4
+-----+---+-+---+-------^-----+
| |x | | | tsrq |
+-+-- +-- | +-- # --+---- --+
| | | | | |
| | | | | +-+-+---+ | +-- | +-+
| | | u | | | | | | | | |
| +-+ | | | | +---- +-+---+ | |
| | | | | y | w |
| | --+ | --+ +-- | +---- | | |
| | | | | | | | | |
+-- --+ +-+ | | | | +-- | +-+-+
| | | | | | | | | |
$ | --+-+ | --+-+ | +-+-+-- --+
| | | z| | | v |
+-+---+-------+---+---+-------+
Labirin 5
++ -----------+
++- Beep|
$ ----+---+--+
+-+boop| | |
| +--- | | | ++
| | | +++
+------+-+--+ ^
Labirin 6
+-$---------------+-+--
| | |j
| |l ---- # ---+ | |
| | | m | +--+ |
| | | +-+---- # |
| | | | | +----+ |
|o| | | | +----+ | |
| | | | -- | |
| | | | | | -+ | | |
| | | | | | | +--- | |
| | | | +- | | | | ++
+-+ |n| | | ++ +--+ |
| | -+- | | | +-
+---+ +--- | | | ^
| | --+ --+ | |
| -- | | k | | ++
| | | +--- | ++
| | | | | |
+-- -+---- | +----+--+
Labirin 7
+---+-+-------------+-+^+-----+-------+---+-+---+-+---+-+---+
| |c| | | | c | | | | | | |c| |
+-- | | +-- +-- # | | | +-- --+ +---- +-- | +-+ | | +-+ | --+
| | | | | | | | |c| | |
| | +-- | +-+-- +-+ +-- # +- # -+-- +-- | | --+ | | | | --+C|
|c| | | | c | | |c | | | |
+-+-+---+-+-----+---------+---------+---+-------------+---+$|
Labirin 8
------+-+-+---+-+---+-----------+---+-----+---------------+-+
^ | | | | | | | | | r | |
+-- | | | t | | +-- +----- # ---+-- +-- --+-- ----+-+ --+ | |
| | | | | | | r | | | | | |
| | | | | +-+ --+ --+-- --------+-- | ----+ --+ | | | --+ | |
| |r| | rotation | | | | | | $
+-+-+-+-----------------------------------+---+-+---+---+-+--
Labirin 9
|$|^--+-+---+-----+-+---+-+-+---+---+-+---+-----+
| | | | | | | | | | f | | | | |
| +-+ | | # +-+ --+ +-+ | | | # | +-+ +-- | ----+
| | | | f| | | | | | f |
| |F+-+ | | | | +---+ | | | ----+-+ | | --+ --+-+
| | | | | | | | | f | | | |
| | | | +-+-+---+-- | | | +-+-+-+ +-+ +--- # -+ |
| | | | | | | | | | | | | | |
+-+-+ | +---+ --+ | +---+-+ | | --+ f | | | | --+
| | | | | | | | | |
| --+f| | | +-- --+--f--+ --+ | ----+ | +-+ +---+
| | | | | | | | | |
+---+-----+-+-----+-----+---+-+-----------+-----+
Labirin 10
+-----+-+-----------+
| q | | q |
|Q+-+ | +-+-+-+---- |
$ | | | | | q |
+-+ | | | | | +-- +-+
| | | | | | |
| +-- +-+ |q| +-+ | |
| q| | | | |
| | | +-- | +-+ | --+
| | | | | | | |
+-+-+-+ +-+-+ +-- | |
| | | |
+--- # -+ | | +-- | |
| q | | | | ^
+-+ +-- | | +-+ | +-+
| | | | |q| | |
| +-+-+ | +-+-- | | |
| | | | | | |
| | | +-+-+-- +-+ +-+
| | | | q |
+-+-+---------+-----+
Aturan, Asumsi, Penilaian
- Celah standar dilarang
- Tulis program umum, bukan program yang hanya berfungsi untuk sepuluh kasus uji. Itu harus mampu menangani labirin yang sewenang-wenang.
- Anda mungkin berasumsi akan ada persis satu pintu masuk dan satu pintu keluar. Pintu masuk dan keluar akan selalu berada di perbatasan labirin.
- Anda dapat mengasumsikan bahwa semua input menggunakan dinding yang mengikuti aturan yang disebutkan di atas. Algoritma kompresi Anda tidak harus bekerja untuk labirin yang berisi dinding yang melanggar aturan tersebut.
- Labirin input mungkin atau mungkin tidak bisa dipecahkan.
- Anda dapat mengasumsikan labirin tidak akan lebih besar dari 100 karakter di kedua arah.
- Anda dapat berasumsi bahwa surat tidak akan muncul di tepi labirin. (Karena ini adalah kasus untuk contoh yang diberikan)
- Skor Anda adalah ukuran total, dalam byte (oktet), dari semua labirin terkompresi.
- Anda dapat menggunakan hex, base64, string biner, atau format serupa lainnya sebagai representasi untuk labirin terkompresi jika Anda merasa lebih nyaman. Anda masih harus menghitung hasilnya dalam seluruh oktet, dibulatkan untuk setiap labirin (mis. 4 basis64 digit adalah 3 byte, 2 digit hex adalah 1 byte, 8 digit biner adalah 1 byte, dll ...)
- Menang skor terendah!