Schreiben Sie ein Programm oder eine Funktion, die eine positive Ganzzahl aufnimmt und einen Stapel von ASCII-artigen Schildkröten ausgibt oder zurückgibt , wobei jede Schildkröte größer ist als die darüber liegende.
Wenn es sich bei der Eingabe um Folgendes handelt 1
, sollte die Ausgabe wie folgt lauten:
__
/,,\o
Wenn die Eingabe lautet 2
:
__
o/,,\
____
/,__,\o
Wenn die Eingabe lautet 3
:
__
/,,\o
____
o/,__,\
______
/,____,\o
Wenn die Eingabe lautet 4
:
__
o/,,\
____
/,__,\o
______
o/,____,\
________
/,______,\o
Wenn die Eingabe lautet 5
:
__
/,,\o
____
o/,__,\
______
/,____,\o
________
o/,______,\
__________
/,________,\o
Und so weiter im selben Muster für größere Eingaben.
Beachten Sie, dass:
- Der Kopf
o
der unteren Schildkröte ist immer rechts. Die Köpfe der Schildkröten wechseln sich dann ab. - Zeilen dürfen keine nachgestellten Leerzeichen enthalten.
- Überflüssige führende Leerzeichen sind nicht erlaubt. (dh die Rückseite der unteren Schildkröte sollte sich am Anfang der Linie befinden.)
- Eine einzelne optionale nachgestellte Zeile ist zulässig.
Der kürzeste Code in Bytes gewinnt.
code-golf
string
ascii-art
kolmogorov-complexity
Calvins Hobbys
quelle
quelle
,________,
Wenn jemand etwas sagt, das keinen Sinn ergibt.Antworten:
Batch, 256 Bytes
Beachten Sie, dass in Zeile 1 ein Leerzeichen und in Zeile 4 zwei Leerzeichen stehen.
i
enthält daherecho
für jede Schildkröte einen Befehl mit der entsprechenden Einrückung. Inzwischenu
enthält die Anzahl der Unterstriche abwechselnd Schildkröten. Eine führende ungerade Schildkröte hat ein spezielles Gehäuse und der Rest der Schildkröten wird paarweise ausgegeben.quelle
C 131 Bytes
Probieren Sie es online aus.
Definiert eine Funktion, die die Schildkröten druckt.
Verwendet die Angaben zu Breite und Genauigkeit von printf in hohem Maße, um den Abstand zu ermitteln und die Unterstriche zu wiederholen. Jede Schildkröte wird mit einem einzigen
printf
Aufruf gedruckt :Ich habe auch eine andere Version, die 144 Bytes ohne Leerzeichen enthält:
quelle
,_,
den Code.Ruby, 100 Bytes
Rekursive Lösung. Probieren Sie es online!
quelle
05AB1E, 45 Bytes
Probieren Sie es online aus
quelle
G
bin mir nicht sicher, ob die -loop bereits in der August 2016-Version war, aber wennLv
ja , kann es seinG
und beidey
könnenN
für -1 Byte sein.V ,
57, 53,49 BytesDa dies nicht druckbare Zeichen enthält, ist hier ein Hexdump:
Probieren Sie es online!
Erläuterung:
quelle
0
und darunter.input > 10
. Nebenbei bemerkt, ich habe es versehentlich komplett mit der Eingabe gebrochen0 41c14
. Ich bin mir nicht sicher, ob ich den Code oder den Runner gebrochen habe.-1
als Zeichenkette, dass es nicht so tun kann, als wäre es eine Zahl. Zum Glück muss ich damit nicht umgehen.Perl, 92 Bytes
91 Byte Code +1 für
-n
.Benötigt
-E
keine zusätzlichen Kosten.Verwendungszweck
Vielen Dank an @Dada für -9 Bytes bei seiner Überarbeitung !
quelle
perl -nE 'for$i(1..$_){say$"x$_._.($v=_ x(($i-1)*2))._.$/.$"x(--$_-1).($_%2?o:$_?$":"")."/,$v,\\".($_%2?"":o)}'
. Ich habe versucht, unter 100 zu bekommen, aber nicht ...Cheddar , 105 Bytes
quelle
Retina ,
979188 BytesDie Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Probieren Sie es online!
quelle
Python 2, 116 Bytes
quelle
lambda m:for i in r...
anstelle voninput()
R , 150 Bytes
sauberer (fügt ein Byte hinzu)
Die Grundstruktur ruft sich rekursiv auf und teilt sich sowohl die letzte anzurufende Nummer als auch die aktuelle Ebene mit. Beginnt mit einer Standardeinstellung für y = 1, sodass für den ersten Aufruf nur eine Variable erforderlich ist. Definiert schnell zwei häufig verwendete Werte. Dann wiederholt es einfach alles so oft wie nötig.
Bei jedem dieser Tests wird implizit geprüft, ob der Kopf rechts oder links angebracht werden soll, und er wird entsprechend platziert.
quelle
#
vor dem Titel im Markdown-Editor, um ihn wie die anderen Antworten zu formatieren.TSQL, 189 Bytes
Jetzt mit Eingabeaufnahme - dank @PatrickRoberts
Geige
quelle
i
zum Preis von 4 Bytes angeben könnenC,
328238234215 Bytes:Eine rekursive Implementierung mit viel Formatierung der Zeichenfolgen und der eingebauten
memset
Funktion. Ich werde versuchen, dies im Laufe der Zeit so viel wie möglich zu tun.C es online! (Ideone)
quelle
17
und darüber hinaus bricht die Logik aus irgendeinem Grund, und daher auch die Schildkröten. Ich versuche gerade herauszufinden, was los ist.'c'
) durch ihren ASCII-Code ersetzen können, um jeweils ein ZeichenJava 1.7, 238 Bytes
Ein Satz von zwei Funktionen: Erstens iteriert er über die Eingabe (Anzahl der Schildkröten), und zweitens erleichtert er die rekursive Erstellung einer Folge sich wiederholender Zeichen (dh die führenden Leerzeichen, der Rücken und der Bauch der Schildkröten).
Ungolfed:
Starte es! (Ideone)
Ich habe angenommen, dass es in Ordnung ist, die Klassendefinition von der Byteanzahl auszuschließen.
Möglicherweise kann ich dies ein wenig weiter verbessern, indem ich die Iterationsreihenfolge der Schleife umdrehe (von unten nach oben) und / oder wie bei einigen anderen Antworten vollständig rekursiv gehe.
Hinweis für sich selbst: Java fehlt wirklich eine eingebaute Kurzschrift, um n Zeichen zu wiederholen ...
quelle
Python,
137120113110 BytesUngolfed:
Die Köpfe waren hart.
quelle
('o','')[b]
können Sie'o'*(1-b)
(und'o'*b
für('o','')[1-b]
).'0'*-~-1
ist kürzer als'0'*(1-b)
F #
218207202196187 Bytes.Die meisten dieser Bytes wurden durch Inlining von Variablen rasiert
Die Logik wird schamlos aus dieser Python-Antwort gestohlen
Probieren Sie es online aus.
quelle
CJam , 88 Bytes
Lässt die größte Schildkröte zuerst erscheinen (denn auf was würde sonst jede andere Schildkröte stehen?) Und verringert dann allmählich die Größe, bis die kleinste hergestellt ist. Funktioniert für jede Ganzzahl, die größer als 0 ist.
Probieren Sie es online!
quelle
Python 2.7,
255238236 BytesObwohl dies für beide anderen Python 2-Lösungen nicht mehr funktioniert, hat mir mein rekursiver Ansatz gefallen:
edit1: löschte einige Bytes, indem einige Ersetzungen beseitigt wurden
edit2: Rasiert 2 Bytes, indem die Unterstriche als Variable gespeichert werden
quelle
Python 2, 147 Bytes
Probieren Sie es online aus
quelle
Python 2.7,
139114113130 BytesIch mochte auch Iguanodons rekursiven Ansatz, daher hier ein etwas kürzerer Versuch.
BEARBEITEN
Mächtige
25 -26 -9 Bytes, die dank einiger fantastischer Tipps von Destructible Watermelon golfen haben. Danke vielmals!Denke, es könnte jetzt die kürzeste Antwort von Python sein :-)quelle
i=input();t(i)
Teil, weil Sie nur eine Funktion haben dürfen.PowerShell ,
10510097878584 Byte-21 bytes dank mazzy, dem verrückten mann
Probieren Sie es online!
Verschiebt Variablen geschickt mit
$_--
, um zu vermeiden, dass wiederholte($_+1)
Blöcke verwendet werden, um mehrere Bytes zu sparen. Es konvertiert auch das einzelne Argument in eine Zeichenfolge, die dann in ein int umgewandelt wird, wenn sie in einem Bereich verwendet wird, um die Anzahl der Turtles zu durchlaufen. Der größte Trick besteht nun darin, dass die 2. Stufe des Schildkrötenabstands jede zweite Zeile nur durch Subtrahieren$_%2
(dh 0, wenn gerade, 1, wenn ungerade) von der aktuellen Zeilenanzahl erhöht wird.Ansonsten ist es eine Menge Index-Mathematik, um richtig zu werden
_
und zu zählen, einschließlich eines Verzögerungszählers in Form von
$i++
und jetzt nur eines einzelnen Listenindex, um den Kopf auf die richtige Seite zu setzen.quelle
ES6 (JavaScript), 140 Byte
Code
Prüfung
quelle
Canvas , 26 Bytes
Probieren Sie es hier aus!
quelle