チャレンジ
ASCII迷路の圧縮に特化した圧縮アルゴリズムを設計します。圧縮アルゴリズムと解凍アルゴリズムの両方を作成する必要があります。あなたのスコアはあなたの圧縮された迷路のサイズに基づいています。
迷路
これらの迷路は、主に文字で形成されている(床)、 、
+
、-
、|
及び#
(壁)、及び正確に一つ各々の^
(開始)及び$
(エンド)。また、ASCII文字を含めることもできます。これは、床タイルとしてカウントされます。この課題の目的のために、迷路は解決可能である必要はなく、迷路の内容の実際の意味は無関係です。
+
少なくとも1つの水平方向に隣接する壁セルと少なくとも1つの垂直方向に隣接する壁セルがある壁セルに使用されます。|
垂直方向に隣接する壁セルが少なくとも1つあり、水平方向に隣接する壁セルがない壁セルに使用されます。-
水平方向に隣接する壁セルが少なくとも1つあるが、垂直方向に隣接する壁セルがない壁セルに使用されます#
他の壁セルに直角に隣接していない壁セルにのみ使用されます。
すべての迷路は長方形ですが、必ずしも規則的なグリッド/壁の配置があるとは限りません。
圧縮する迷路
迷路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個のテストケースでのみ機能するプログラムではなく、一般的なプログラムを記述します。任意の迷路を処理できる必要があります。
- 入口と出口が1つずつあると想定する場合があります。入口と出口は常に迷路の境界にあります。
- すべての入力は、上記で列挙したルールに従う壁を使用すると想定できます。圧縮アルゴリズムは、これらのルールに違反する壁を含む迷路に対して機能する必要はありません。
- 入力迷路は解決できる場合と解決できない場合があります。
- 迷路はどちらの方向でも100文字以下であると想定できます。
- 迷路の端に文字が表示されないと思われるかもしれません。(これは提供された例の場合であるため)
- スコアは、圧縮されたすべての迷路の合計サイズ(バイト(オクテット))です。
- hex、base64、バイナリ文字列、または同様の形式を圧縮迷路の表現として使用できます。迷路ごとに切り上げて、オクテット全体で結果を数える必要があります(例:4 base64桁は3バイト、2桁の16進数は1バイト、8桁の2桁は1バイトなど)。
- 最低スコアが勝ちます!