高価な建築プログラムにお金を払いたくないので、自分でロールバックすることにします。ASCIIを使用して建物を設計することにしました。プログラムは、特定の方法でフォーマットされた単一の文字列を受け取り、プログラムは建物を出力します。
入力
入力は1行の文字で構成されます。文字のみを含むと想定できますa-j、数字1-9、記号-などを+。
出力の説明
各文字a-jについて、プログラムは次のように垂直線を出力します。これを列と呼びます。
.
..
...
****
*****
******
-------
--------
+++++++++
++++++++++
abcdefghij
たとえば、入力abcdefgfedefghgfedcは次を出力します。
.
* ***
*** *****
***** *******
---------------
-----------------
++++++++++++++++++
+++++++++++++++++++
文字の前に正の整数を付けると、列の下nにn空白文字が追加されます。これをオフセットと呼びます。たとえばS、空白の表記に使用すると、入力3b2b3bは次のように出力されます。
+ +
+++
S+S
SSS
SSS
文字の前に負の整数を付けることもできます-m。これにより、列の下部の非空白文字が削除されます(空白で置き換えず、完全に削除します)。これをスライスと呼びます。たとえば、入力m -1j-2j-3j-4j-5j-6j-7j-8jは次を出力します。
.
..
...
*...
**...
***...
-***...
--***...
+--***..
オフセットとスライスは同じ行に適用できますが、オフセットは最初に行く必要があります。言い換えると、文字の先頭にが付いている場合がありますn-m。ここnで、はオフセットmのサイズで、スライスのサイズです。たとえばS、空白の表記に使用すると、入力「2-4j」は次を出力します。
.
.
.
*
*
*
S
S
最後に、 + 2つの列の間で使用される演算子は、別々の列ではなく、同じ列で互いの上に積み重ねる必要があることを示します。たとえば、入力「2-4ja」は次を出力します。
.
.
.
*
*
*
S
S+
入力が2-4j+a出力するのに対して:
+
.
.
.
*
*
*
S
S
入力例を次に示します。
abiehef+ehfhabc
そして結果の出力:
*
-
. -
. . +. .
* * +* *
* * ****
********
--------
-------- -
+++++++++ ++
+++++++++++++
ある種の古い破壊された天守閣のように見えます。
別のサンプル入力を次に示します。
6b5b+a6b1-2d+3-4f1-2d+-2c+2-4f+1-2d+-2c2-2d+1-4g+1-2c+b+-2c+-4e2-7j+-4g+d+-2c+-4f2-7j+-5h+b+-2c+a+-3f2-7j+-7i+-4e+b+b+a+-4f2-7i+a+-7h+-4f+b+b+a+-4f2-7j+-7h+-4f+a+-7h+a+-7i+-4f2-7j+-7i+-6h+a+-7i+b+-4e3-7i+a+-7h+-4e+a+-7h+b+1-7h3-7j+1-4f+-7h+b+-4f+a3-7j+2-4f+a+-4f+b3-2d+-2d+3-4g+b3-2d+-2d+-2c
そして結果の出力:
****** +++
******+.*++
---++.+ ***
-+-+++..++**
-+--+++.+++*
--++++.+..*
+++++.+**
+++****.****** -
+++*****.**.. --
+ ***....+..--
...+.....--
--.........--
---......
--
(マリオのはずだったが、あまり良くなかった...)
仕様がまだ明確でない場合は、ゴルフ以外の実装があります、Python 2.7で書かれたがあります。それを実行し、実験して、仕様がどのように機能するかを感じてください。また、私のプログラミングスキルを笑うこともできます。
これはコードゴルフなので、最短のエントリーが勝ちです。不明な場合はコメントで質問してください。
a+a+a+a+a5つのプラス記号を重ねて出力します。
