それはすぐに私の友人の誕生日であり、彼はプログラマーでありASCIIアートの愛好家なので、私は彼にASCIIケーキを作ろうと思いました!
悲しいことに、私は彼の現在の年齢を忘れないので、指定した数のキャンドルでケーキを焼くアスキーオーブン用のプログラムが欲しいので、彼と間違っていたらもう一度自分でやる必要はありません年齢。
ASCIIオーブンのメモリとストレージ容量は限られているため、できるだけ少ないバイトを使用する必要があります。
あなたのタスク:
誕生日ケーキをコンソールに出力するプログラムを作成します。入力で指定した数のキャンドルを使用します。
ケーキの要件は次のとおりです。
- 水平線
-と垂直|線、および頂点で構成される境界線が必要+です。 - 少なくとも5文字の幅(ケーキの境界線を含む
|) - 少なくとも5文字の高さ(ケーキの境界線を含む
-) そのスペースに炎がある場合を除いて、ケーキの境界と最初のキャンドルベース(炎ではなく)の間に、両側に空白文字がなければなりません。炎またはろうそくベースは、ケーキの境界線と重ならないようにする必要があります。- ケーキの最大幅は9文字なので、行ごとに最大5つのキャンドルがあります。
- ケーキを2次元にしたくないので、ある程度のボリュームを持たせるには、2行余分に高くする必要があります。下部に別の境界線を追加し、頂点を上部の頂点に接続します。ここでも、上からのASCII文字(
-、|および+)を使用します。
キャンドルの要件は次のとおりです。
- ベース
|と炎*で構成され、ベースの上に炎が積み重ねられています。 - キャンドルは、対角線を除き、互いに直接隣接していない場合があります。
- ろうそくは、左から右へ、次に上から下へ、最大5行で配置されます。
(注:前の行に5本のろうそくがあった場合、次の行にも5本のろうそくを置くことはできません。それは、それらが隣接するからです。)
その他の注意事項:
- ケーキの幅は、最初の行のろうそくの数に依存しますが、最小5文字、最大9文字の幅にする必要があります。
- ろうそくは、一番上の行から左から右に向かっていっぱいになります。1つの行が一杯になると、次の行は最初の行の下の行から始まります。
入力:
好きな(合理的な)形式の番号を受け入れることができます。
この挑戦のために、あなたはこの数字が0から2 31(0を含まない)の間であると仮定するかもしれません。
出力:
文字列を返すか、結果のケーキを出力コンソールに直接書き込むことができます。
ルール:
例:
入力: 8
+-----------+
| * * * * * |
| |*|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
入力: 2
+-----+
| * * |
| | | |
| |
+-----+
| |
+-----+
入力: 12
+-----------+
| * * * * * |
| |*|*|*|*| |
| *|*|*| | |
| | | | |
| |
+-----------+
| |
+-----------+
幸運を!