ท้าทาย
ออกแบบอัลกอริทึมการบีบอัดแบบพิเศษสำหรับการบีบอัดเขาวงกต ASCII คุณจะต้องสร้างทั้งอัลกอริทึมการบีบอัดและอัลกอริธึมการบีบอัด คะแนนของคุณจะขึ้นอยู่กับขนาดของเขาวงกตที่บีบอัดของคุณ
เขาวงกต
เขาวงกตเหล่านี้จะทำส่วนใหญ่ของตัวละคร(ชั้น)
+
, -
, |
และ#
(ผนัง) และอีกหนึ่งแต่ละ^
(เริ่มต้น) และ$
(จบ) พวกเขาอาจมีตัวอักษร ASCII ซึ่งนับเป็นกระเบื้องปูพื้น สำหรับจุดประสงค์ของการท้าทายนี้เขาวงกตไม่จำเป็นต้องแก้ปัญหาและความหมายที่แท้จริงของเนื้อหาเขาวงกตนั้นไม่เกี่ยวข้อง
+
จะใช้สำหรับเซลล์ผนังที่มีเซลล์ผนังติดกันอย่างน้อยหนึ่งเซลล์ในแนวนอนและอย่างน้อยหนึ่งเซลล์ติดผนังแนวตั้ง|
จะใช้สำหรับเซลล์ผนังที่มีเซลล์ผนังติดกันอย่างน้อยหนึ่งเซลล์ในแนวตั้ง แต่ไม่มีเซลล์ผนังติดในแนวนอน-
จะใช้สำหรับเซลล์ผนังที่มีเซลล์ผนังติดกันอย่างน้อยหนึ่งเซลล์ในแนวนอน แต่จะไม่มีเซลล์ผนังติดกันในแนวตั้ง#
จะถูกใช้สำหรับเซลล์ผนังที่ไม่ได้อยู่ติดกันกับเซลล์ผนังอื่น ๆ
เขาวงกตทั้งหมดเป็นรูปสี่เหลี่ยมผืนผ้า แต่ไม่จำเป็นต้องมีการจัดแนวตาราง / กำแพงตามปกติ
บีบอัด
เขาวงกต 1
+----+----
| o | |
| -- | o--+
| | | $
--^-+-+---
เขาวงกต 2
+-----+---+
| a | |
^ +-+-+ # |
| | | B |
| | | --+ |
| c | $
+-------+--
เขาวงกต 3
----------+-+-+-----+-+
^ | | | | |
+-- --+R # | |p| | | |
| | | | | |
+---+ +-+-+-- +-+ | | |
| m| | | | | | | |
| +-+ | | | | | --+ | |
| | | h | | | | |
| | | | | | # --+-+ |
| | | | | | S| $
+-----+-+-+-+-+---+----
เขาวงกต 4
+-----+---+-+---+-------^-----+
| |x | | | tsrq |
+-+-- +-- | +-- # --+---- --+
| | | | | |
| | | | | +-+-+---+ | +-- | +-+
| | | u | | | | | | | | |
| +-+ | | | | +---- +-+---+ | |
| | | | | y | w |
| | --+ | --+ +-- | +---- | | |
| | | | | | | | | |
+-- --+ +-+ | | | | +-- | +-+-+
| | | | | | | | | |
$ | --+-+ | --+-+ | +-+-+-- --+
| | | z| | | v |
+-+---+-------+---+---+-------+
เขาวงกต 5
++ -----------+
++- Beep|
$ ----+---+--+
+-+boop| | |
| +--- | | | ++
| | | +++
+------+-+--+ ^
เขาวงกต 6
+-$---------------+-+--
| | |j
| |l ---- # ---+ | |
| | | m | +--+ |
| | | +-+---- # |
| | | | | +----+ |
|o| | | | +----+ | |
| | | | -- | |
| | | | | | -+ | | |
| | | | | | | +--- | |
| | | | +- | | | | ++
+-+ |n| | | ++ +--+ |
| | -+- | | | +-
+---+ +--- | | | ^
| | --+ --+ | |
| -- | | k | | ++
| | | +--- | ++
| | | | | |
+-- -+---- | +----+--+
เขาวงกต 7
+---+-+-------------+-+^+-----+-------+---+-+---+-+---+-+---+
| |c| | | | c | | | | | | |c| |
+-- | | +-- +-- # | | | +-- --+ +---- +-- | +-+ | | +-+ | --+
| | | | | | | | |c| | |
| | +-- | +-+-- +-+ +-- # +- # -+-- +-- | | --+ | | | | --+C|
|c| | | | c | | |c | | | |
+-+-+---+-+-----+---------+---------+---+-------------+---+$|
เขาวงกต 8
------+-+-+---+-+---+-----------+---+-----+---------------+-+
^ | | | | | | | | | r | |
+-- | | | t | | +-- +----- # ---+-- +-- --+-- ----+-+ --+ | |
| | | | | | | r | | | | | |
| | | | | +-+ --+ --+-- --------+-- | ----+ --+ | | | --+ | |
| |r| | rotation | | | | | | $
+-+-+-+-----------------------------------+---+-+---+---+-+--
เขาวงกต 9
|$|^--+-+---+-----+-+---+-+-+---+---+-+---+-----+
| | | | | | | | | | f | | | | |
| +-+ | | # +-+ --+ +-+ | | | # | +-+ +-- | ----+
| | | | f| | | | | | f |
| |F+-+ | | | | +---+ | | | ----+-+ | | --+ --+-+
| | | | | | | | | f | | | |
| | | | +-+-+---+-- | | | +-+-+-+ +-+ +--- # -+ |
| | | | | | | | | | | | | | |
+-+-+ | +---+ --+ | +---+-+ | | --+ f | | | | --+
| | | | | | | | | |
| --+f| | | +-- --+--f--+ --+ | ----+ | +-+ +---+
| | | | | | | | | |
+---+-----+-+-----+-----+---+-+-----------+-----+
เขาวงกต 10
+-----+-+-----------+
| q | | q |
|Q+-+ | +-+-+-+---- |
$ | | | | | q |
+-+ | | | | | +-- +-+
| | | | | | |
| +-- +-+ |q| +-+ | |
| q| | | | |
| | | +-- | +-+ | --+
| | | | | | | |
+-+-+-+ +-+-+ +-- | |
| | | |
+--- # -+ | | +-- | |
| q | | | | ^
+-+ +-- | | +-+ | +-+
| | | | |q| | |
| +-+-+ | +-+-- | | |
| | | | | | |
| | | +-+-+-- +-+ +-+
| | | | q |
+-+-+---------+-----+
กฎข้อสมมติฐานการให้คะแนน
- ช่องโหว่มาตรฐานถูกแบน
- เขียนโปรแกรมทั่วไปไม่ใช่โปรแกรมที่ใช้ได้กับกรณีทดสอบสิบกรณีเท่านั้น มันจะต้องสามารถจัดการเขาวงกตใด ๆ
- คุณอาจคิดว่าจะมีทางเข้าหนึ่งทางและทางออกเดียว ทางเข้าและทางออกจะอยู่ที่ชายแดนของเขาวงกตเสมอ
- คุณอาจสมมติว่าอินพุตทั้งหมดใช้กำแพงที่เป็นไปตามกฎที่ระบุด้านบน อัลกอริทึมการบีบอัดของคุณไม่จำเป็นต้องทำงานกับเขาวงกตที่มีกำแพงที่ละเมิดกฎเหล่านั้น
- เขาวงกตที่ป้อนเข้าอาจจะหรือไม่สามารถแก้ไขได้
- คุณอาจสันนิษฐานว่าเขาวงกตนั้นจะมีขนาดไม่เกิน 100 ตัวอักษรในทิศทางใดทิศทางหนึ่ง
- คุณอาจสันนิษฐานว่าตัวอักษรจะไม่ปรากฏขึ้นที่ขอบของเขาวงกต (เนื่องจากเป็นกรณีของตัวอย่างที่มีให้)
- คะแนนของคุณคือขนาดรวมเป็นไบต์ (octets) ของเขาวงกตที่บีบอัดทั้งหมด
- คุณสามารถใช้เลขฐานสิบหก, base64, ไบนารี่หรือรูปแบบที่คล้ายกันเพื่อเป็นตัวแทนของเขาวงกตที่ถูกบีบอัดหากคุณพบว่าสะดวกกว่า คุณควรนับผลลัพธ์เป็น octet ทั้งหมดปัดเศษขึ้นสำหรับเขาวงกตแต่ละอัน (เช่น 4 เบส 64 หลักคือ 3 ไบต์, 2 ฐานสิบหกหลักคือ 1 ไบต์, 8 หลักฐานแปดคือ 1 ไบต์, ฯลฯ ... )
- คะแนนต่ำสุดชนะ!