ボウルの容積とその中の水の容積を入力として受け取り、その中に水が入ったボウルのASCII表現を必要な容積で出力または返すプログラムまたは関数を作成する必要があります。
ボウルの構造は次のとおりです。
\ /
\___/
ボウルには少なくとも1つの_
キャラクターがあります。数\
のと/
のも正であり、彼らは対称性に起因する等しいです。
ボウルの量は、合計の数である_
とspace
の間の文字\
のと/
のプラスのすべてのペアのための1 \
と/
。これは、上記のボウルの容積が10
次のことを意味します。
\ / => xxxxx x (the last one is for the \/ pair)
\___/ xxx x (the last one is for the \/ pair)
2つの異なるボウルの容積が同じである可能性があることに注意してください。たとえば、次の両方のボウルの容積は18です。
\ /
\ / \ /
\___/ \_______/
ボウルに水を注ぐことができます。水は~
、ボウル内のスペースではなく、キャラクターの列として表されます。一番下の行にはスペースがないため、~
「」を含めることはできません。これは、この例に一方向でのみ水を入れることができることを意味します。
\~~~~~/
\___/
他のボウルには複数の方法で充填できます。
\~~~~~/ \ /
\ / \~~~/
\_/ \_/
ボウルの水の量は、キャラクターの下のボウルの列の量です~
。上記の例には4, 6 and 2
それぞれの水量があります。
入力
- ボウルの容積と水の容積の2つの正の整数。
- 2つの番号の順序を選択できます。
- 2つの整数は、一般的なリスト形式(リスト、タプル、配列など)で入力することも、2つの個別の整数として入力することもできます。
- 入力値に対して、少なくとも1つの有効なボウル水構成が保証されています。
出力
- ボウルと水の量が入力に一致する、水の入ったボウルのASCII表現。
- 印刷する代わりに結果を返すことを選択した場合、単一の文字列(または言語の最も近い代替)として返される必要があります。
- 末尾の空白は許可されます。
- 不要な先頭の空白は許可されません。
- 正しい構成が複数ある場合は、出力する構成を自由に選択できますが、出力できるのは1つだけです。
例
各入力整数ペアの後には、1つ以上の可能な出力が続きます。
6 2
\~~~/
\_/
10 4
\~~~~~/
\___/
24 8
\ /
\~~~~~~/
\ /
\__/
42 12 //either of the two output is correct
\ /
\ /
\~~~~~~~/
\ /
\ /
\_/
\ /
\~~~~~~~~~~~~~/
\___________/
90 68
\~~~~~~~~~~~~~~~~~~~~~/
\ /
\ /
\ /
\_____________/
102 42
\ /
\ /
\~~~~~~~~~~~~~~~~~/
\ /
\ /
\___________/
これはコードゴルフなので、最短のエントリーが勝ちます。