도전
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 |
+-+-+---------+-----+
규칙, 가정, 득점
- 표준 허점은 금지되어 있습니다
- 10 가지 테스트 사례에서만 작동하는 것이 아니라 일반적인 프로그램을 작성하십시오. 임의의 미로를 처리 할 수 있어야합니다.
- 정확히 하나의 입구와 하나의 출구가 있다고 가정 할 수 있습니다. 입구와 출구는 항상 미로의 경계에 있습니다.
- 모든 입력이 위에 열거 된 규칙을 따르는 벽을 사용한다고 가정 할 수 있습니다. 압축 알고리즘은 해당 규칙을 위반하는 벽이 포함 된 미로에 대해 작동하지 않아도됩니다.
- 입력 미로는 해결 가능하거나 불가능할 수 있습니다.
- 미로가 어느 방향 으로든 100 자 이하 여야한다고 가정 할 수 있습니다.
- 미로의 가장자리에는 글자가 나타나지 않는다고 가정 할 수 있습니다. (이것은 제공된 예제의 경우이므로)
- 귀하의 점수는 모든 압축 미로의 총 크기 (바이트 (옥텟))입니다.
- 보다 편리한 방법으로 16 진수, base64, 바이너리 문자열 또는 이와 유사한 형식을 압축 된 미로의 표현으로 사용할 수 있습니다. 여전히 결과를 전체 옥텟으로 계산하고 각 미로로 반올림해야합니다 (예 : 4 base64 숫자는 3 바이트, 2 16 진수는 1 바이트, 8 바이너리 숫자는 1 바이트 등).
- 최저 점수가 이깁니다!