Die meisten Menschen sind mit der Frage vertraut, wie man Schafe zählt, um einzuschlafen. Es gibt eine Schafherde, von denen einige über einen Zaun springen, und Sie zählen die Schafe, wenn sie springen. Angeblich hilft dies, Ihren Geist zu beruhigen und Sie in einen schlafähnlichen Zustand zu versetzen, so dass Sie einschlafen.
Hier ist ein ASCII-Schaf, das nach rechts zeigt und darauf wartet, gezählt zu werden:
'00^>
||
Hier ist ein ASCII-Schaf, das über einen Zaun springt:
'00^>
/\
++
Hier ist eine nach links, die bereits gezählt wurde:
<^00'
||
Die Herausforderung
Bei zwei eingegebenen Ganzzahlen n
und m
mit der n > 2
Beschreibung, wie viele Schafe insgesamt gezählt wurden und m > 0
wie viele Schafe bereits gezählt wurden, wird eine ASCII-Kunstdarstellung zum Zählen von Schafen zum Einschlafen ausgegeben.
Nun zur Wendung:
- Aufgrund der Größe der Ställe, in denen sich die Schafe befinden, kann die oberste Reihe nur maximal
10
Schafe aufnehmen, wobei die aktuell springenden Schafe nicht berücksichtigt werden, die sich ebenfalls immer in der obersten Reihe befinden müssen. - In den folgenden Reihen dürfen sich die Schafe nicht außerhalb ihrer jeweiligen Ställe befinden (in der zweiten Reihe können Sie nicht mehr Schafe links haben als in der ersten Reihe, und rechts auch nicht).
- Wenn es
11
mehr oder mehr Schafe gibt, muss die oberste Reihe10
plus die springenden Schafe enthalten. - Führende / nachfolgende Leerzeichen und Leerzeichen zwischen den Schafen spielen keine Rolle, solange:
- Zwischen Schafen besteht mindestens ein Leerzeichen
- Alle Zeichen sind entsprechend ausgerichtet.
Solange diese Regeln eingehalten werden, liegt die tatsächliche Anordnung der Schafe bei Ihrer Umsetzung.
Beispiele
Hier ist zum Beispiel n=3
und m=1
der einfachste Fall.
'00^>
'00^> /\ <^00'
|| ++ ||
Hier ist n=11
und m=6
, die meisten Schafe, die auf eine horizontale Linie passen können.
'00^>
'00^> '00^> '00^> '00^> /\ <^00' <^00' <^00' <^00' <^00' <^00'
|| || || || ++ || || || || || ||
Hier ist ein anderes Beispiel dafür, mit n=11
undm=1
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00'
|| || || || || || || || || ++ ||
Ein größeres Beispiel mit n=30
undm=12
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> <^00' <^00'
|| || || || || || || || || ||
'00^> <^00' <^00'
|| || ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
<^00' <^00'
|| ||
Hier ist ein Beispiel mit n=17
undm=2
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00'
|| || || || || || || || ++ || ||
'00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || ||
Hier ist ein Beispiel mit n=19
undm=3
'00^>
'00^> '00^> '00^> '00^> '00^> '00^> '00^> /\ <^00' <^00' <^00'
|| || || || || || || ++ || || ||
'00^> '00^> '00^> '00^> '00^> '00^> '00^>
|| || || || || || ||
'00^>
||
Beachten Sie, dass dies alles Beispiele sind . Im letzten Fall können Sie auf der rechten Seite eine vertikale Reihe von Schafen erstellen, sodass die linke Seite stattdessen auf zwei Reihen passt. Oder vielleicht ein 2x2 Quadrat Schafe auf der rechten Seite, das auch die Schafe auf der linken Seite in zwei Reihen passen würde. Etc.
E / A und Regeln
- Die Eingabe kann in jedem vernünftigen Format und mit jeder geeigneten Methode erfolgen .
- Führende / nachfolgende Zeilenumbrüche oder andere Leerzeichen sind optional, sofern die Zeichen entsprechend ausgerichtet sind.
- Entweder ein vollständiges Programm oder eine Funktion sind akzeptabel. Wenn es sich um eine Funktion handelt, können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Die Ausgabe kann an die Konsole erfolgen, als Liste von Zeichenfolgen, als einzelne Zeichenfolge usw. zurückgegeben werden.
- Standardlücken sind verboten.
- Dies ist Code-Golf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Bytes) gewinnt.
n=11
undm=9
n=11
so dass 0<m<=10
. Dies zwingt Sie dazu, alle Schafe in der obersten Reihe und eine dynamische Anzahl von Schafen links ( n-1-m
) und rechts ( m
) des Zauns zu haben, und kann keine festen Stiftgrößen verwenden.