Herausforderung
Die Herausforderung ist einfach: Drucken Sie eine Schlange .
Sie erhalten die Länge der Schlange als Eingabe.
Eine Schlange der Länge 2 sieht so aus:
==(:)-
Eine Schlange der Länge 7 sieht so aus:
=======(:)-
Mit anderen Worten, die Länge einer Schlange gibt an, wie viele Gleichheitszeichen sich vor dem Kopf befinden .
Verwendung
Nehmen wir an, ich habe eine C ++ - Implementierung erstellt und in kompiliert ./getsnake
.
Ich könnte es so laufen lassen:
$ ./getsnake 10
==========(:)-
Klarstellungen
- Standardlücken sind nicht zulässig.
- Sie können Eingaben und Ausgaben auf jede akzeptable Weise erhalten.
- Sie können davon ausgehen, dass alle angegebenen Eingaben positive ganze Zahlen sind.
- Sie können eine Funktion anstelle eines normalen Programms schreiben.
code-golf
string
ascii-art
kolmogorov-complexity
InitializeSahib
quelle
quelle
Antworten:
Hexagony , 33 Bytes
Nicht gewinnen, aber trotzdem cool. Könnte in der Lage sein, mehr Golf zu spielen.
Probieren Sie es online!
Golf gespielt:
Formatiert:
Bunt (Mit Timwis Hexagony Colorer hergestellt )
Erläuterung:
Schleife, drucke "=" aus, bis der Zähler 0 erreicht.
Drucken "("
Drucken ":"
Drucken ")"
Die obigen Werte wurden mit einem einfachen Python-Skript generiert. Allerdings hatte ich irgendwie keinen Platz mehr für das "-". Also musste ich auf fortgeschrittenere Tricks zurückgreifen.
Wenn das Programm ")" ausgibt, ist der Wert der Zelle nicht 41, sondern 1065. Hexagony ändert nur den Wert beim Drucken. Wie sich herausstellt, ist (1065 * 1000 + 4)% 256 = 44, nur eins von 45 entfernt, der ASCII-Wert für "-". Dann inkrementiere, drucke und füge irgendwo nach dem Drucken ein @ ein.
quelle
Zimtgummi, 7 Bytes
Probieren Sie es online aus.
Wäre 6 Bytes mit der alten
p
Syntax gewesen: /Erläuterung
Dekomprimiert auf
p~=~(:)-
, diep
Bühne liest dann einfach die Eingabe und wiederholt die=
n-mal.quelle
Brian & Chuck , 31 Bytes
Eingabe in Form eines Byte-Wertes , also zB Eingabe
!
einer Schlange der Länge 33.Probieren Sie es online!
Es ist eine Weile her...
Erläuterung
Eine kurze Einführung von Brian & Chuck:
,
(Input) und nur Chuck kann.
(Output) verwenden. Zusätzlich zu<
und>
gibt es{
und}
die den Bandkopf bis zur nächsten Nullzelle bewegen (oder im Falle des{
linken Bandendes, wenn keine Nullzelle unterwegs ist). Stattdessen[...]
ist der einzige Kontrollfluss?
die Steuerung auf die andere Instanz umschaltet, wenn die aktuelle Zelle nicht Null ist. Der erste ausgeführte Befehl in der anderen Zelle ist der nach der Bedingung. Und schließlich_
ist es aus Bequemlichkeitsgründen nur ein Alias für Null-Bytes.Nun der Code. Brian beginnt damit:
Dies liest die Eingabe in die erste Zelle von Chuck, bewegt dann den Bandkopf mit nach links
{
(macht im Moment nichts) und dekrementiert die Eingabe mit,-
bevor die Steuerung für Chuck umgeschaltet wird, wenn der Wert immer noch ungleich Null ist. Dies beginnt die Hauptschleife. Chuck führt dann dieses Bit aus:Dies bewegt den Bandkopf auf Brian bis zum Ende, verschiebt zwei Zellen nach links auf den
=
Kopf und vor dem Bandkopf ganz nach links gedruckt und die Steuerung wieder auf Brian umgestellt. So funktionieren Schleifen im Allgemeinen in B & C.Sobald die Eingabe auf Null reduziert wurde, wird das Band
?
von Brian nichts mehr tun. Dann führt Brian diesen Teil aus:Das
):(=
sind No-Ops, also ist der eigentliche Code gerecht>}-?
. Wir bewegen uns weg von der Null - Zelle mit>
, nach oben zu_
mit}
, verringern sie es nicht Null und Schalter auf Chuck machen mit?
. Dann wird das letzte Bit von Chuck ausgeführt:Dies druckt einfach die fünf Zeichen vor Chuck, dh
=(:)-
. Beachten Sie, dass wir einen anderen drucken müssen,=
da die Hauptschleife nurN-1
zu Eingabezeiten ausgeführt wirdN
.quelle
V , 8 Bytes
Probieren Sie es online!
V verwendet die Codierung "Latin1".
Erläuterung:
quelle
Netzhaut , 10 Bytes
Probieren Sie es online!
Dies ist eine einfache Regex-Ersetzung.
Es stimmt überein,
.+
was der gesamten Eingabe entspricht, und ersetzt sie dann durch$*=(;)-
.Das
$*
ist ein einzigartiges Merkmal in Retina: es ist der Charakter-Wiederholung spezielle Operator.Zum Beispiel
5$*x
würde werdenxxxxx
.Wenn das vorherige Argument fehlt, wird die gesamte Übereinstimmung als Standardargument verwendet.
quelle
Python, 21 Bytes
Ideone es!
quelle
"="*input()+"(:)-"
Haskell, 25 Bytes
'='<$[1..n]
ist äquivalent zureplicate n '='
.quelle
Java 8, 52 Bytes
Testsuite. (Übersetzen> Ausführen)
Credits .
die traditionelle Art,
615453 Bytes7 Bytes dank Kevin Cruijssen.
1 Byte danke an Dom Hastings.
quelle
for(int i=0;i<n;i++)
kann man golfenfor(;n>0;n--)
, da man den Input sowieso für nichts anderes als die for-Schleife braucht.for(;n-->0;)
um ein weiteres Byte zu speichern!Gelee , 9 Bytes
Probieren Sie es online!
quelle
C 38
Probiere es auf ideone aus.
quelle
f(n){~-printf(n?"=":"=(:)-")||f(~-n);}
.f(n){for(;n;printf(n--?"=":"(:)-"));}
für 1.05AB1E,
109 BytesErläuterung
Probieren Sie es online aus
1 Byte gespart dank Adnan.
quelle
'=×"ÿ(:)-
für 9 Bytes :). Dies verwendet Zeichenketteninterpolation.ÿ
tut :)Javascript, 23 Bytes
quelle
n(3)
und eineUncaught ReferenceError: n is not defined
Fehlermeldung erhalten ...x=n=>"=".repeat(n)+"(:)-"; x(7);
x=
und auf 25 Zeichen geändert werden?C #, 28 Bytes
quelle
Python , 24 Bytes.
input()
wird vom Benutzer eingegeben*
Bei Verwendung für Zeichenfolgen und eine Ganzzahl wird eine neue Zeichenfolge erstellt, die aus verbundenen Kopien des Originals besteht. Zum Beispiel:"hello "*3
Ausgängehello hello hello
.Durch Multiplizieren von
=
und erhalteninput()
Sie eine Zeichenfolge mit=
der vom Benutzer angegebenen Länge.Mit
+
verbindet man zwei Fäden, in diesem Fall unseren Körper"=…="
mit unserem Kopf,"(:)-"
um die Schlange zu machen.print
gibt das Ergebnis aus.quelle
GolfScript,
1110 BytesMultipliziert "=" mit der Eingabe und fügt head hinzu.
-1 dank Leaky Nun
quelle
Mathematica,
21-20BytesAnonyme Funktion. Nimmt eine Zahl n als Eingabe und gibt eine Schlange der Länge n als Ausgabe zurück.
"="~Table~#
generiert eine Liste mit{"=", "=", ..., "="}
der Länge n ,<>"(:)-"
verknüpft die Elemente der Liste und hängt sie"(:)-"
an die resultierende Zeichenfolge an.quelle
"="~Table~#<>"(:)-"&
R
3227 BytesDiese Lösung ist ziemlich unkompliziert. Die
rep
Funktion wiederholt das erste Element ("="
)scan()
mal, was tatsächlich die Eingabe des Benutzers ist.EDIT :
Etwas kürzere Antwort mit
scan()
direkt.Alternative,
für eine nicht gehackte Schlange ( 34 Bytes )
quelle
sep=""
hier gebraucht wird, sonst Ihre Schlange aussieht wie die, dass die Bahn durchquert:= = = (:)-
.sep
trotzdem als Randnotiz hinzufügen ;)Batch, 68 Bytes
quelle
CJam,
1311 BytesTeste es hier.
-2 bytes thanks to quartata
quelle
'=*
instead of{'=}*
.Perl 6,
16 1512 bytesExplanation:
Usage:
quelle
JAISBaL, 9 bytes
Verbose:
Tested with JAISBaL-0.0.7 (The compiled .jar was just pushed, but the source has been up on git for a while)
quelle
#
before the language name to make it look like everybody else's.PowerShell v2+, 19 bytes
Full program. Takes input
$args[0]
, uses string multiplication to construct the body, then string concatenation to tack on the head.quelle
"$("="*[int]$args[0])(:)-"
C,
464543bytessaved 2 bytes thanks to owacoder! saved 3 bytes thanks to rici!
Try it on Ideone!
quelle
-->
operator strikes again.>0
and save two bytes.f(n){while(4-printf("=\0(:)-"+2*!n--));}
Cheddar, 15 bytes (noncompeting)
A straightforward answer.
quelle
Sesos, 11 bytes
Hexdump:
Try it online!
Assembler:
quelle
K, 17 Bytes
Example;
Explanation;
quelle
-1(
...);
?{(x#"="),"(:)-"}
Perl, 16 + 1 (
-p
flag) = 17 bytesNeeds
-p
flag, so run with :quelle
Minkolang 0.15, 12 bytes
Try it here!
Explanation
quelle
Befunge-98, 24 bytes
Takes numerical input from the user, then prints the snake.
quelle
Matlab / Octave, 22 bytes
This is an anonymous function.
Try it on Ideone.
Explanation
Assume
n= 5
.1:n
produces the row vector[1 2 3 4 5]
.~(1:n)
negates each entry, so it gives[0 0 0 0 0]
....+61
adds61
to each entry, so it gives[61 61 61 61 61]
.61
is the ASCII value of character=
.[... '(:)-']
concatenates that with the string'(:)-'
. This automatically converts[61 61 61 61 61]
into the string'====='
before the concatenation.quelle