(inspiriert von dieser SO-Frage )
Sie erhalten als Eingabe eine einzelne positive ganze Zahl n .
Geben Sie in möglichst wenigen Zeichen eine Rakete in ASCII-Technik mit einem Kopf, einem Schwanz und einem Körper aus n Segmenten aus. Es sollten keine nachgestellten Leerzeichen oder Zeilenumbrüche vorhanden sein.
Der Kopf und das Heck der Rakete sind für jeden Wert von n immer gleich . Der Körper besteht aus zwei verschiedenen Arten von Segmenten, die sich abwechseln. Die Beispiele sollen die Struktur der Rakete verdeutlichen.
Ausgabe für n = 1:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Ausgabe für n = 2:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Ausgabe für n = 3:
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
+=*=*=*=*=*=*+
|\/\/\/\/\/\/|
|.\/\/..\/\/.|
|..\/....\/..|
|../\..../\..|
|./\/\../\/\.|
|/\/\/\/\/\/\|
+=*=*=*=*=*=*+
/**\
//**\\
///**\\\
////**\\\\
/////**\\\\\
Antworten:
CJam,
6763 ZeichenDies sollte im Online-Interpreter funktionieren .
Wie es funktioniert
Nach dem Drücken der Unicode-Zeichenfolge das Snippet
konvertiert den String von der Basis 60000 in die Basis 127, wandelt ihn in einen String um und wertet das Ergebnis aus.
Der Code, der ausgeführt wird, ist der folgende:
quelle
CJam, 121 Bytes
Probieren Sie es online aus
Übernimmt die Eingabe n über STDIN.
Ich werde später eine Erklärung hinzufügen. Im Grunde ist alles nur ein paar Loops auf eine sehr naive Art und Weise. Um zwischen den beiden Körperteilen zu wechseln, habe ich eine verschachtelte Schleife über dem Teil und eine Schleife über
0
und1
. Dann füge ich einfach den äußeren und den inneren Iterator hinzu und bestimme anhand ihrer Parität zwischen einem nach oben oder unten zeigenden Dreieck.quelle
java.util.NoSuchElementException
Kopie + Einfügen des Codes (zeigt aufLri
)Ruby, 203
Ungolfed
Ich denke in diesem Fall ist es vorteilhaft, eine nicht-golfende Version zu haben.
Erläuterung
Ich bezweifle, dass dies alles andere als effizient ist, aber es hat trotzdem Spaß gemacht.
ARGV
.h
enthält den "Kopf" und "Schwanz" der Rakete,r
enthält die "Grate", die die verschiedenen Teile der Rakete trennen undm
undp
sind die oberen und unteren Teile des "Körpers" der Rakete.Array
["ridge", "top of body", "bottom of body", "ridge", "bottom of body", "top of body"]
die ersten3*n
Elemente fährt und diese aufnimmt .puts
sorgt dafür, dass alles seine eigene Linie bekommt.quelle
Python, 120 + 77 + 1 = 198 Zeichen
Dies war der falsche Ansatz, aber ich war bereits fertig, als Martin seine Antwort veröffentlichte.
Benötigt eine Datei
R
(+1 für Dateiname) von 77 Bytes, die Sie wie folgt generieren können:quelle
JS, WIP, 252b oder 173 Zeichen
Da es sich nicht um eine Funktion handelt, müssen Sie den Wert von n am Anfang festlegen (hier 3) und ihn dann in der Konsole oder in nodeJS ausführen.
Hier ist die 252b-Version:
Und hier ist die 173-Zeichen-Version (mit http://xem.github.io/obfuscatweet/ )
quelle
JavaScript (E6) 252
257Überbeanspruchung von string.repeat
quelle
Javascript (ES3): 243
219Bytequelle
SyntaxError: function statement requires a name
:, 2: falsche Ausgabe, die Körpersegmente sollten nicht alle gleich sein (ungerade und gerade sind unterschiedlich)