Einführung:
Wenn wir an Marienkäfer denken, denken wir normalerweise an einen roten oder dunkelorangen Käfer mit schwarzen Flecken. Obwohl dies nicht unbedingt erforderlich ist, da es auch schwarz mit rot / orange gefleckten Marienkäfern oder Marienkäfer ohne Flecken gibt , stellen wir uns hauptsächlich Marienkäfer wie diesen asiatischen Marienkäfer vor:
Ebenfalls zu beachten ist, dass die Flecken auf den Marienkäfern fast immer symmetrisch sind. Und hier kommt diese Herausforderung ins Spiel.
Herausforderung:
Geben Sie mit einer Ganzzahl n
( >= 0
) den folgenden ASCII-Marienkäfer ein- oder mehrmals aus, wobei die symmetrischen Punkte gleichmäßig zwischen den beiden Seiten sowie den zwei oder mehr Marienkäfern aufgeteilt sind.
Hier ist das Standard-Marienkäfer-Layout:
_V_
/(@I@)\
/ | \
| | |
\ | /
''-!-''
Wenn n=0
ja, geben wir den Marienkäfer so aus, wie er ist.
Wenn n
größer als Null ist, füllen wir entweder die Leerzeichen des ASCII-art-Fehlers mit Kleinbuchstaben aus o
oder ersetzen die |
in der Mitte mit einem Großbuchstaben O
. Das Ziel ist es, n
Änderungen an den 'leeren' Marienkäfern vorzunehmen, während immer noch eine symmetrische Ausgabe (pro Marienkäfer) erzeugt wird und so wenig Marienkäfer wie möglich ausgegeben werden.
Gültige Ausgaben für n=1
sind also:
_V_
/(@I@)\
/ O \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| | |
\ O /
''-!-''
Das wäre aber ungültig:
_V_
/(@I@)\
/ | \
| o | |
\ | /
''-!-''
Gültige Ausgaben für n=2
sind:
_V_
/(@I@)\
/ O \
| O |
\ | /
''-!-''
_V_
/(@I@)\
/ O \
| | |
\ O /
''-!-''
_V_
/(@I@)\
/ o|o \
| | |
\ | /
''-!-''
_V_
/(@I@)\
/ | \
| o | o |
\ | /
''-!-''
etc. There are a lot of possible outputs.
Das erste n
, das nicht mehr in einen einzelnen Marienkäfer passt, ist n=24
. In diesem Fall müssen Sie es so gleichmäßig wie möglich in zwei Marienkäfer aufteilen (Sie können wählen, ob Sie sie nebeneinander oder untereinander ausgeben möchten - wahlweise mit einem Leerzeichen oder einer neuen Zeile dazwischen). Beispielsweise:
_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/
''-!-'' ''-!-''
ODER:
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
_V_
/(@I@)\
/ooo|ooo\
| | |
\ooo|ooo/
''-!-''
Herausforderungsregeln:
n
wird im Bereich von liegen0-1000
.- Sie können wählen, ob Sie auf STDOUT ausgeben, als String oder als 2D-Zeichen-Array / -Liste usw. zurückkehren möchten. Ihr Anruf.
- Das Setzen von Zeilenumbrüchen oder unnötigen Leerzeichen ist nicht zulässig. Es sind abschließende Leerzeichen und eine einzelne abschließende neue Zeile zulässig.
- Wie oben erwähnt, können Sie, wenn zwei oder mehr Marienkäfer erforderlich sind, wählen, ob Sie diese nebeneinander oder untereinander (oder in einer Mischung aus beiden) ausgeben möchten.
- Wenn zwei oder mehr Marienkäfer nebeneinander gedruckt werden, ist ein einzelnes optionales Leerzeichen dazwischen zulässig. Wenn zwei oder mehr Marienkäfer aufeinander gedruckt werden, ist eine einzelne optionale Zeile dazwischen zulässig.
- Sie können das Layout der Marienkäfer in jedem Schritt der Sequenz auswählen, sofern sie symmetrisch und eingabeberecht sind
n
. - Da das Ziel darin besteht,
n
Änderungen UND so wenig Marienkäfer wie möglich zu haben, werden Sie oben mehr als einen Marienkäfer verwendenn=23
. Das Layout dieser Marienkäfer muss nicht unbedingt gleich sein. Tatsächlich ist dies nicht einmal für einige Eingaben möglich, wie zum Beispieln=25
odern=50
um zwei zu nennen. - Außerdem ist es manchmal nicht möglich, die Punkte gleichmäßig auf zwei oder mehr Marienkäfer aufzuteilen. In diesem Fall müssen Sie sie so gleichmäßig wie möglich aufteilen, mit einem Unterschied von höchstens 1 zwischen ihnen.
Unter n=50
Berücksichtigung der letzten beiden Regeln wäre dies eine gültige Ausgabe (wobei der erste Fehler 16 Stellen hat und die anderen beiden 17):
_V_ _V_ _V_
/(@I@)\ /(@I@)\ /(@I@)\
/oooOooo\ / O \ /o oOo o\
|ooooOoooo||ooooOoooo||o ooOoo o|
\ | / \oooOooo/ \o oOo o/
''-!-'' ''-!-'' ''-!-''
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie ggf. auch eine Erklärung hinzu.
o
und O
. Ich habe den Wortlaut ein wenig geändert.
n=50
Beispiel glaube ich, dass Sie meinen, der erste Fehler hat 16 Stellen und die anderen beiden haben jeweils 17.