チャレンジ
プログラムまたは関数は、STDINまたは関数パラメーターからの単一の文字列入力を受け入れます。入力には、アルファベット文字(a-zA-Z)、スペース、およびフルストップのみが含まれると想定できます。入力では大文字と小文字が区別されないため、「a」を扱うのとまったく同じように「a」を扱う必要があります。
文字列の各文字に対して、次の仕様に従って建物の表現を出力します。
各建物には屋根があり、最上行にアンダースコア、2行目にスラッシュ、スペース、バックスラッシュで指定する必要があります。
_
/ \
これで、各側の壁(|)と中央のスペースで表される文字番号(a = 1、b = 2、c = 3など)に一致する床の数が得られます。最下層(および最下層のみ)には、壁の間のアンダースコアである基礎が必要です。このような...
|_|
たとえば、「b」は次のようになります
_
/ \
| |
|_|
これで、非常に高くて狭い建物は立ち上がれず、基部で広くなる必要があることがわかっているので、追加のサポートがなければ3階建て以上の建物はありません。したがって、3レベルごと(それ以上)に「拡大レイヤー」を追加する必要があります。拡大レイヤーは、その下のセクションの壁の真上にあるスラッシュとバックスラッシュで構成され、下のセクションは上のセクションよりも2スペース広くする必要があります。追加のレイヤーは、建物の高さにはカウントされません。
建物は重なってはいけませんが、それらの間に不必要なスペースがあってはなりません。また、地面は常に平らであるため、すべての建物は同じレベルにあるはずです。
たとえば、「abcdefga」は次のようになります。
_
/ \
_ | |
_ / \ | |
_ / \ | | | |
/ \ | | | | / \
_ | | | | | | | |
_ / \ | | | | / \ | |
_ / \| | | | / \| | | | _
/ \| || |/ \| || |/ \/ \
|_||_||_||___||___||___||_____||_|
文字列入力内のスペースは、ダブルスペースで表す必要があります。
文字列入力の完全な停止は、このような瓦で表す必要があります。
/\/\
さらなる例
入力= Hello world.
出力=
_
/ \
| |
| |
| |
/ \
| |
| | _
| | / \
/ \ | |
| | | |
_ | | _ | |
/ \ | | / \ / \
| | / \ | | | |
| | | | | | | |
_ _ | | | | | | | | _
/ \ / \ / \ | | / \ / \ / \
| | | | | | / \ | | | | | |
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
_ / \ / \ / \ | | / \ / \ / \
/ \ | | | | | | / \ | | | | | |
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
| | _ / \ / \ / \ | | / \ / \ / \
/ \ / \ | | | | | | / \ | | | | | | _
| | | | | | | | | | | | | | | | | | / \
| | | | | | | | | | | | | | | | | | | |
| | | | / \/ \/ \ | | / \/ \/ \ | |
/ \/ \| || || | / \| || || | | |
| || || || || | | || || || |/ \
|_____||___||_______||_______||_________| |_______________||_________||___________||_______||___|/\/\
入力= lorem ipsum
_
/ \
_ | |
/ \ | |
_ | | | |
/ \ | | / \
| | _ | | | |
| | / \ / \ | |
_ | | | | | | | |
/ \ / \ | | | | / \
| | | | _ | | | | | | _
| | | | / \ / \ / \ | | / \
_ | | | | | | | | | | | | | |
/ \ / \ / \ | | | | | | / \ | |
| | | | | | | | | | | | | | | |
| | | | | | / \ / \ / \ | | / \
| | | | | | | | _ | | | | | | | |
/ \ / \ / \ | | / \ | | | | / \ | |
| | | | | | | | | | | | | | | | | |
| | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | |
/ \ / \ / \ _ | | / \ | | | | / \ | |
| | | | | | / \ | | | | | | | | | | | |
| | | | | | | | / \ | | / \ / \ | | / \
| | | | | | | | | | | | | | | | | | | |
/ \/ \/ \ | | | | / \ | | | | / \ | |
| || || |/ \ | | | | | | | | | | | |
| || || || |/ \ | |/ \/ \| |/ \
|_______||_________||___________||___||_________| |_____||___________||_____________||_____________||_________|
入力= a.a.a.x.x.x.a.a.a
_ _ _
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
| | | | | |
| | | | | |
| | | | | |
/ \ / \ / \
_ _ _ | | | | | | _ _ _
/ \ / \ / \ | | | | | | / \ / \ / \
|_|/\/\|_|/\/\|_|/\/\|_______________|/\/\|_______________|/\/\|_______________|/\/\|_|/\/\|_|/\/\|_|
ルール
- もちろん、これはコードゴルフです。バイト単位の最低スコアが勝ちます
- 標準の抜け穴ルールが適用されます
- 出力の前後に任意の数の空白行を追加できます
- 結果全体を1つの文字列で出力するか、各要素が1行の出力を表す配列として出力を提供するか、STDOUTに送信するかを選択できます。
注意
これはPPCGへの最初の投稿なので、簡単に説明してください。サンドボックスを通過しました。否定的な点や可能な改善点はコメントとして投稿してください、私はできることをします
[a,z]
、[1.26]
MEGOが言及した部分を。。それは、オプションの持つことは(多くの場合、それは挑戦の重要な部分(それはここではありません)でない限り最善である
[a,z]
と[A,Z]
to[1,26]
は無意味な要件のようです。入力としてリスト整数を使用する方がはるかに良いでしょう(0
がれきの入力である)。また、複数のユーザーからの投票やフィードバックの取得を待たずに、Sandboxに21時間しか存在しない状態でチャレンジを投稿した場合、「サンドボックスを通過した」とはみなされません。課題をレビューするための十分な時間を与えるために、少なくとも48〜72時間、課題をSandboxに残すことをお勧めします。