Вступ:
Коли ми думаємо про сонечок, ми зазвичай думаємо про червоного або темно-помаранчевого клопа з чорними плямами. Хоча це не обов'язково, оскільки є також чорні з червоними / оранжевими плямистими сонечками або сонечка без плям , ми в основному зображаємо сонечок щось подібне до цієї азіатської сонечко:
Ще одна річ, яку слід зазначити, плями на сонечко майже завжди симетричні. І саме тут виникає цей виклик.
Виклик:
Враховуючи ціле число n
( >= 0
), виведіть наступну божевільну корівку ASCII один або кілька разів із симетричними плямами, рівномірно розділеними між двома сторонами, а також двома та більше корівками.
Ось макет корівки за замовчуванням:
_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, повернутися як String або 2D-char масив / список тощо. Ваш дзвінок.
- Провідні нові рядки або непотрібні пробіли не допускаються. Допускаються пробіли білого пробілу та один проміжок нового рядка.
- Як згадувалося вище, коли необхідні дві або більше сонечок, ви можете вибрати, чи виводити їх поруч один з одним або під один одного (або суміш обох ..)
- Коли дві або більше сонечок друкуються поруч, допускається єдиний пробіл між ними. Коли дві або більше сонечок друкуються один на одного, допускається один необов'язковий новий рядок між ними.
- Ви можете вибрати макет сонечок на будь-якому кроці протягом послідовності, якщо вони симетричні і рівні вхідному
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 плям, а два інші