Введение:
Когда мы думаем о божьих коровках, мы обычно думаем о красном или темно-оранжевом жуке с черными пятнами. Хотя это и не обязательно так, поскольку есть также черные с божьими коровками с красными / оранжевыми пятнами или божьи коровки без пятен , в основном мы изображаем божьих коровок что-то вроде азиатской божьей коровки:
Следует также отметить, что пятна на божьих коровках почти всегда симметричны. И вот тут возникает эта проблема.
Вызов:
Учитывая целое число n
( >= 0
), выведите следующую божью коровку ASCII-art один или несколько раз, с симметричными точками, равномерно разделенными между двумя сторонами, а также двумя или более божьими коровками.
Вот макет божьей коровки по умолчанию:
_V_
/(@I@)\
/ | \
| | |
\ | /
''-!-''
Если n=0
мы выводим божью коровку выше, как есть.
Когда значение n
больше нуля, мы либо заполняем пробелы ошибки ASCII-art строчными буквами 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, возврат в виде массива / списка строк или 2D-символов и т. Д. Ваш вызов.
- Новые строки или лишние пробелы запрещены. Конечные пробелы и одиночная новая строка допускаются.
- Как упомянуто выше, когда нужны две или более божьих коровок, вы можете выбрать, выводить ли их рядом друг с другом или друг под другом (или смесь обоих ..)
- Когда две или более божьих коровок печатаются рядом друг с другом, допускается один дополнительный интервал между ними. Когда две или более божьих коровок печатаются друг на друге, допускается одна дополнительная строка между ними.
- Вы можете выбрать расположение божьих коровок на любом этапе последовательности, если они симметричны и равны входным данным
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/
''-!-'' ''-!-'' ''-!-''
Основные правила:
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте придумать как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.
o
и O
вместо этого. Я немного изменил формулировку.
n=50
примера, я считаю , что вы имеете в виду первый ошибка имеет 16 точек и два других каждый из которых имеет 17.