介绍:
当我们想到瓢虫时,通常会想到带有黑点的红色或深橙色的臭虫。尽管这不是必须的,但是由于黑色也带有红色/橙色斑点的瓢虫,或者根本没有斑点的瓢虫,因此我们主要将瓢虫描绘成类似亚洲瓢虫的东西:
要注意的另一件事是,瓢虫上的斑点几乎总是对称的。这就是挑战所在。
挑战:
给定一个整数n
(>= 0
),请输出以下ASCII样式的瓢虫一次或多次,并在两侧以及两个或多个瓢虫之间均匀分配对称斑点。
这是默认的瓢虫布局:
_V_
/(@I@)\
/ | \
| | |
\ | /
''-!-''
如果为n=0
,则按原样输出上面的瓢虫。
当n
大于零时,我们用小写字母填充ASCII艺术错误的空格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
这是不可能的,以适合单个瓢虫了是n=24
。在这种情况下,您必须将其尽可能平均地分为两个瓢虫(您可以选择是将它们彼此相邻输出,还是在另一个瓢虫下方输出-它们之间可以有一个空格或一个换行符)。例如:
_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,以String或2D-char数组/列表的形式返回,等等。您的呼叫。
- 不允许使用前导换行符或不必要的空格。尾随空格和一条尾随换行符是允许的。
- 如上所述,当需要两个或多个瓢虫时,您可以选择是将它们彼此相邻输出还是彼此下方输出(或两者混合输出)。
- 当两个或多个瓢虫并排打印时,它们之间允许有一个可选的空格。当两个或两个以上的瓢虫相互打印时,允许在它们之间使用一条可选的换行符。
- 您可以在序列中的任何步骤选择瓢虫的布局,只要它们是对称的并且等于input即可
n
。 - 由于目标是进行
n
更改,并尽可能减少瓢虫,因此在上述级别时,您将开始使用多个瓢虫n=23
。这些瓢虫的布局不必相同。实际上,对于某些输入(例如n=25
或n=50
仅举两个),这甚至是不可能的。 - 另外,有时不可能将点均匀地分布在两个或多个瓢虫之间。在这种情况下,您将必须尽可能平均地分割它们,它们之间的差异最大为1。
因此n=50
,请牢记最后两个规则,这将是一个有效的可能输出(其中第一个错误有16个斑点,其他两个有17个斑点):
_V_ _V_ _V_
/(@I@)\ /(@I@)\ /(@I@)\
/oooOooo\ / O \ /o oOo o\
|ooooOoooo||ooooOoooo||o ooOoo o|
\ | / \oooOooo/ \o oOo o/
''-!-'' ''-!-'' ''-!-''
一般规则:
o
和O
来代替。我改变了措辞。
n=50
例如,我相信你的意思是第一个漏洞有16个点,其他两个各有17