Einführung
Für diejenigen, die noch nie von diesem Spiel gehört haben. Sie spielen einen Ball, der so lange wie möglich überleben muss. Dies geschieht, indem Sie sich nach links oder rechts bewegen und zu den Löchern gehen. Da sich die Karte nach oben bewegt, müssen Sie nach unten gehen, um länger zu überleben. Wenn Sie nach Bildern suchen , wissen Sie wahrscheinlich, welches Spiel ich meine.
Die Aufgabe
Bei einer positiven ganzen Zahl n wird eine fallende Kugelkarte aus n Schichten ausgegeben . Zwischen den Ebenen befinden sich 4 Zeilenumbrüche. Die Breite der Ebene besteht aus 25 Unterstrichen mit einem Loch der Länge 5. Dies bedeutet, dass die Gesamtbreite 30 entspricht. Diese wird nach jeder Ebene zufällig verschoben. Ein Beispiel für eine gültige Ebene ist:
_______________ __________
Das Loch kann sich auch an den Rändern befinden, als ob die Schicht wie ein Zylinder wäre:
_________________________
Beachten Sie, dass es 2 führende und 3 nachfolgende Leerzeichen gibt. Ein einzelnes Loch mit einer Breite von 5 machen.
Testfälle
Für n = 4 ist dies eine gültige Ausgabe:
_______________ __________
______ ___________________
_______________________ __
_________________________
Hinweis: Die Löcher müssen gleichmäßig verteilt sein. Es sind abschließende und / oder führende Zeilenumbrüche zulässig.
Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
Antworten:
Pyth, 19 Bytes
Probieren Sie es hier aus!
Erläuterung
quelle
Ruby,
74,71,59Vielen Dank an Alex A., der mich daran erinnert hat, dass ich das Stabby-Lambda verwenden kann, wenn ich nur eine Zeile habe
quelle
puts
Fügt am Ende eine neue Zeile hinzu (Ruby'sprint
nicht), wurde also auf5
neue Zeilen aktualisiert .times
Funktion zum Speichern von 3 Bytes in derfor
Schleife: D->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}}
Versuchen Sie es hier(->n{n.times{puts (('_'*25+' '*5)*2)[rand(30),30]+"\n"*5}})[input]
oder nur angeben, dass Sie es zuweisen müssen, um es aufzurufen. Dies ist auf der Website durchaus üblich.Julia, 72 Bytes
Dies ist eine anonyme Funktion, die eine Ganzzahl akzeptiert und eine Zeichenfolge zurückgibt. Um es aufzurufen, weisen Sie es einer Variablen zu.
Wir konstruieren eine Folge von 25 Unterstrichen, gefolgt von 5 Leerzeichen, und teilen diese dann in ein Array von Zeichen auf. Wir verschieben es in zufälliger Reihenfolge (zwischen 1 und 30), fügen es wieder zu einer Zeichenfolge zusammen und heften 5 Zeilen um. Dieser Vorgang wird n- mal wiederholt , wobei n die Eingabe ist. Das resultierende Array wird verbunden und zurückgegeben.
Probieren Sie es hier aus
quelle
PowerShell 65 Bytes
Führen Sie eine Schleife für n Iterationen aus. Holen Sie sich eine Zufallszahl und machen Sie einen Unterstrich mit 5 Leerzeichen am Ende. Indizieren Sie die Zeichenfolge als Array, um sie von einer zufälligen Position aus abzurufen. Negative Indizierung wird vom Ende umbrochen. Verbinden Sie das wieder und fügen Sie 5 neue Zeilen hinzu.
Edit: Ich weiß nicht, warum ich dachte, ich brauche den Parameter dafür,
-Maximum
da er positionell ist. Dank TimmyD habe ich ein paar Bytes rasiert und vergessen, Eingaben zu bekommen, so dass ich wieder auf 65 zurückfuhr .quelle
Pyth, 19 Bytes
Probieren Sie es hier aus
Vielen Dank an FryAmTheEggman für den Fehler.
quelle
SpecBAS - 93 Bytes
Erstellt eine Zeichenfolge mit 25 Unterstrichen und 5 Leerzeichen, wählt einen zufälligen Startpunkt aus, spleißt die Zeichenfolge an dieser Position und heftet den Anfang der Zeichenfolge an das Ende.
Der Apostroph erzwingt eine neue Zeile, also 1 am Ende der Zeichenkette und 4 leere Zeilen.
quelle
MATL , 23 Bytes
Probieren Sie es online!
Erläuterung
quelle
Java,
177140 Bytes-1 Byte nach Blau verschieben das i ++
-2 Bytes für mich, wobei im Original bedeutungslose Leerzeichen verbleiben
-34 Bytes an Blue, um zu erkennen, dass ich das Zeichen [] überhaupt nicht brauchte
Weil, weißt du, Java.
Leicht ungolfed:
Da Java keinen String "drehen" hat, musste ich einen anderen Ansatz wählen. Ich habe einen zufälligen Int 0-29 generiert, der den Startindex des Lochs darstellt (OBO, weil
>
kürzer als>=
). Jedes einzelne Zeichen wird dann von der Logik entschiedenDies behandelt die "Umhüllung" des Ganzen.
quelle
s = ""
). Beide sind jetzt behoben.Python 3.5 -
109113 Bytes (+4 zum Ausdrucken von 4 neuen Zeilen zwischen jedem Ergebnis):Ungolfed Form:
Grundsätzlich ist es so, dass der Funktion "g" ein String "j" als Argument übergeben wird, der aus 25 Unterstrichen gefolgt von 5 Leerzeichen besteht. Dann wird das Zufallsmodul importiert, und so oft wie vom Benutzer angegeben, wird eine Zufallszahl im Bereich ausgewählt
0 => 29
, und die Zeichenfolge "j" wird so oft nach rechts verschoben. Das Ergebnis wird dann nach jeder Iteration mit 4 neuen Zeilen zwischen jedem Ergebnis ausgedruckt.quelle
'\r'
zu'\r'*4
sollte also wahrscheinlich funktionieren. Auch ich denke , man kann ändernrange(a+1)
zurange(a)
.range(a)
tatsächlich diea-1
Anzahl der Zeilenrange(a+1)
ausdrucken, ist dies der beste Weg, um die genaue Anzahl der vom Benutzer angegebenen Zeilen auszudrucken. Außerdem werden jetzt 4 neue Zeilen zwischen den einzelnen Ergebnissen gedruckt.g(5)
und es 6 Zeichenketten statt fünf ausgibt, also würde ein Wechsela+1
zua
wahrscheinlich das Problem beheben.Python,
119103 Bytesquelle
n
mal