前書き:
てんとう虫について考えるとき、私たちは通常、黒い斑点を持つ赤または暗いオレンジ色のバグを考えます。ありますので、これは、本当の必要はありませんが、黒、赤/オレンジとてんとう虫発見、または全てのスポットなしにてんとう虫を、私たちは主にてんとう虫にこのアジアのてんとう虫のようなものを想像:
注意すべきもう一つのことは、てんとう虫のスポットがほぼ常に対称的であることです。そして、それがこの挑戦の出番です。
チャレンジ:
整数n
(>= 0
)が与えられた場合、対称スポットが両側で均等に分割された2つ以上のてんとう虫とともに、次のASCIIアートてんとう虫を1回または複数回出力します。
デフォルトのてんとう虫のレイアウトは次のとおりです。
_V_
/(@I@)\
/ | \
| | |
\ | /
''-!-''
の場合n=0
、上記のテントウムシをそのまま出力します。
場合はn
、ゼロよりも大きい場合、我々はどちらか小文字でアスキーアートのバグのスペースを埋めるo
、または交換する|
資本金の中心にO
。目標はn
、「空の」てんとう虫に変更を加えながら、対称的な出力(てんとう虫ごと)を生成し、できるだけ少ないてんとう虫を出力することです。
の有効な出力n=1
は次のとおりです。
_V_
/(@I@)\
/ O \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| | |
\ O /
''-!-''
しかし、これは無効です:
_V_
/(@I@)\
/ | \
| o | |
\ | /
''-!-''
有効な出力は次のn=2
とおりです。
_V_
/(@I@)\
/ O \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ O \
| | |
\ O /
''-!-''
_V_
/(@I@)\
/ o|o \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| o | o |
\ | /
''-!-''
etc. There are a lot of possible outputs.
n
1つのてんとう虫にもう収まらない最初のものはn=24
。その場合、可能な限り均等に2つのてんとう虫に分割する必要があります(それらを隣り合わせに出力するか、下に出力するかを選択できます-オプションで1つのスペースまたは1つの改行を間に挿入します)。例えば:
_V_ _V_
/(@I@)\ /(@I@)\
/o o|o o\ /o o|o o\
|o o | o o||o o | o o|
\o o|o o/ \o o|o o/
''-!-'' ''-!-''
または:
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
チャレンジルール:
n
の範囲になり0-1000
ます。- STDOUTに出力するか、文字列または2D-char配列/リストなどとして返すかを選択できます。呼び出し。
- 先頭の改行または不要な空白は許可されません。末尾の空白と単一の末尾の改行が許可されます。
- 上記のように、2つ以上のてんとう虫が必要な場合、それらを隣り合わせに出力するか、下に出力するか(または両方を組み合わせて出力するか)を選択できます。
- 2つ以上のてんとう虫が隣り合って印刷される場合、間に1つのオプションのスペースを入れることができます。2つ以上のてんとう虫が互いに印刷される場合、その間に1つのオプションの改行が許可されます。
- てんとう虫のレイアウトは、それらが対称的でinputに等しい限り、シーケンス中の任意のステップで選択できます
n
。 - 目標は
n
変更を行い、可能な限りてんとう虫を少なくすることなので、上記の時点で複数のてんとう虫の使用を開始しますn=23
。これらのてんとう虫のレイアウトは同じである必要はありません。実際、これは、2つの名前を指定しn=25
たり入力したりn=50
することもできません。 - また、ドットを2つ以上のてんとう虫に均等に分割できない場合があります。その場合、可能な限り均等に分割する必要がありますが、それらの違いはせいぜい1です。
したがってn=50
、最後の2つのルールを念頭に置いて、これは有効な出力になります(最初のバグには16個のスポットがあり、他の2つには17個のスポットがある)。
_V_ _V_ _V_
/(@I@)\ /(@I@)\ /(@I@)\
/oooOooo\ / O \ /o oOo o\
|ooooOoooo||ooooOoooo||o ooOoo o|
\ | / \oooOooo/ \o oOo o/
''-!-'' ''-!-'' ''-!-''
一般的なルール:
- これはcode-golfであるため、バイト単位の最短回答が優先されます。
コードゴルフ言語では、コードゴルフ以外の言語で回答を投稿しないようにしてください。「任意の」プログラミング言語の可能な限り短い答えを考えてみてください。 - 回答には標準の規則が適用されるため、STDIN / STDOUT、適切なパラメーターと戻り値型、完全なプログラムを持つ関数/メソッドを使用できます。あなたの電話。
- デフォルトの抜け穴は禁止されています。
- 可能であれば、コードのテストへのリンクを追加してください。
- また、必要に応じて説明を追加してください。
o
、O
代わりに使用しました。言葉遣いを少し変えました。
n=50
最初のバグには16個のスポットがあり、他の2個にはそれぞれ17個あることを意味すると思います