Unsere klassische Schlange hat ein Ungleichgewicht von Wachstumshormonen entwickelt . Um die Sache noch schlimmer zu machen, ist sein Schwanz eingefroren! Figure 1
Schreiben Sie bei richtungsgebundener Eingabe wie in angegeben ein Programm, um zu bestimmen, wo er wachsen wird.
Abbildung 1. Directional Input.
Programmspezifikationen
- Lesen Sie die Eingabe zeichenweise ein
STDIN
. - Nachdem Sie ein Zeichen gelesen haben, geben Sie die Schlange an aus
STDOUT
. Bitte fügen Sie zwischen jedem Ausdruck einer Schlange eine Leerzeile ein. - Die Schlange besteht aus
<>v^
und einem Kopf. Der Kopf der Schlange kann jede Runde Charakter Ihrer Wahl sein, wieo
,0
,O
oder☺
. - Jede Kombination von
wasd
ist für die Eingabe gültig. - Ihr Programm sollte nicht davon ausgehen, dass die Eingabe innerhalb einer bestimmten Länge liegt.
- Die Schlange kann sich überschreiben
<>v^
. Beispiele für die Mechanik des Schlangenwachstums. - Nachgestellte Leerzeichen sind in Ordnung, aber Ihre Schlange muss korrekt aussehen.
Wertung
Das ist Code-Golf . Ihre Punktzahl ist die Anzahl der Zeichen in Ihrem Programm. Die niedrigste Punktzahl gewinnt!
Beispiel Schlangen:
Eingang: ddddssaassdddddww
Ausgabe:
>>>>v
v
v<< ☺
v ^
>>>>>^
Eingang: dddsssaaawww
Ausgabe:
☺>>v
^ v
^ v
^<<<
Eingang: dddsssdddddasddddwww
Ausgabe:
>>>v
v ☺
v ^
>>>>v< ^
>>>>^
Eingang: dddwwdddssssaaaaaaaaawww
Ausgabe:
>>>v
☺ ^ v
^ >>>^ v
^ v
^<<<<<<<<<
Eingang: ddddssssaawwddddd
Ausgabe:
>>>>v
v
>>>>>☺
^ v
^<<
Eingang: dddddssaawwwwddddd
Ausgabe:
>>>>>☺
^
>>>^>v
^ v
^<<
Eingang:
ddddaaaasssssdddddddddddwwwwwaaaasssssdddddddddddwwwwwwwwwwsssssaaaasssssdddddddwwwwwddddssaaaasssddddaaaassssssssssdddwwwwwwwddddswaaaassssddaasssaaaaaaaaaawwwwddddssssaaaaaaaaaaawwwwddddsssssssssaaaa
Ausgabe:
v
v
v
v
v
v<<<< v<<<< v<<<< >>>>v
v v ^ v ^ ^ v
v v ^ v ^ v<<<<
v v ^ v ^ v
v v ^ v ^ v
>>>>>>>>>>>>>>>>>>>>>v<<<<
v
v
v v<<<<
v v ^
v v
>>>>v >>>>v v v
^ v ^ v v v<<
^ v ^ v v v
^ v ^ v v v
^<<<v<<<<<<<<<<<<<
v
v
v
v
O<<<<
Antworten:
Ruby, 207 Zeichen
Ungolfed:
(Das Lambda für
a
schreibt zurück, weil die Zeile, in die die obige Zuweisung schreibt, nicht mehr auf dem Board ist.)quelle
ECMAScript 6 Javascript (399
401431)Muss aufgrund der Pfeilfunktionen in einem Browser ausgeführt werden, der ECMAScript 6 unterstützt.
Hier sind Fiddles, die so geändert wurden, dass sie in jedem (gängigen) Browser ohne Verwendung von Pfeilfunktionen ausgeführt werden können. Sie drucken
textarea
stattdessen auch auf a :Golf Version
Animiertes GIF:
Eines der Beispiele des OP:
Das Beispiel von Stretch Maniac :
Ungolfed
Hier ist eine (etwas) ungolfed Version von irgendwann, bevor ich angefangen habe, richtig Golf zu spielen:
quelle
convert
. Ziemlich einfach :)sed, 71
Golfscript,
165126Gleicher Ansatz wie meine vorherige Antwort, aber Cursor vor und nachher richtig positionieren. Ich bin ziemlich stolz auf den Ansatz der Cursorpositionierung - im Grunde läuft die Schlange zuerst rückwärts, ohne Zeichen auszudrucken.
quelle
echo "dddddssaawwwwddddd" | sed -e 's/w/\^\x1B[D\x1B[A/g' -e 's/a/<\x1B[2D/g' -e 's/s/v\x1B[S\x1B[D/g' -e 's/d/>/g' -e 's/$/@/'
gibt nicht die richtige Ausgabe für mich.\n
Sekunden nach dem ein,@
damit Ihre Aufforderung an eine andere Stelle wechselt.Java - 646
Könnte auch der erste sein!
Ich wette, Sie alle können das schlagen.
un (irgendwie) golfed
Kleiner -
eingabe - dddsssdddwwwwaaaaaaassssssssssddddddddddddddddd
Eingabe - dddsssdddddasddddwww
mein persönlicher Favorit - dwdwdwddaasassdddddwdwdwddsdswawaasassdddddddwdwdwddsdswawaasassddddwwwwwwwssssssdsdddwwwwddaassddaassddddsssdddwdwdwddaasasassddddwwwwssssssssasasaaawdwwdwddwwdddddddwdwdwddsdswawaasassddddddddddwwdwwwwaasssassdsdddddddwdwdwwwwasasssssssssssdwwwwwwwddd
quelle
C # 607
"Ungolfed" mit Leerzeichen (dies wird nicht mit der Golfversion synchronisiert):
quelle
Python 3: 259 Bytes
Ich beschloss, die Schlange in einem Diktat mit Koordinaten für die Schlüssel aufzubewahren. Suchen Sie dann den Ausgabebereich, und durchlaufen Sie ihn. Ersetzen Sie dabei Leerzeichen.
PS. Mein erster Golf :) Lassen Sie mich wissen, wenn meine Antwort unangemessen ist
quelle
O
statt☺
sparen Sie 2 Bytes.☺
ist ein roter Hering.☺
wurde eigentlich nicht als 3 Byte gezählt.O
, daher würde ich mir darüber keine Sorgen machen. Aus dem Code geht hervor, dass es immer noch für jedes andere Zeichen funktionieren würde, aber mit☺
können Sie die Testfälle der Challenge bequem und ohne Änderungen ausführen.#coding=utf-8
. Beachten Sie, dass#coding=utf-16
dies nicht funktioniert. Daher☺
muss als 3. gezählt werdenPython 2.7 - 274 Bytes
Ungolfed-Version
quelle
SyntaxError: invalid syntax
.05AB1E ,
35343028 BytesVerwendet
0
als Kopf der Schlange.-4 Bytes dank @Grimy .
Probieren Sie es online aus (keine Testsuite für alle Testfälle gleichzeitig, da der Canvas-Bereich nicht zurückgesetzt werden kann und sich die Ausgaben überlappen würden.).
Erläuterung:
Sehen Sie sich meinen Tipp 05AB1E an (Abschnitte So komprimieren Sie Zeichenfolgen, die nicht Teil des Wörterbuchs sind, und So komprimieren Sie große Ganzzahlen ), um zu verstehen, warum dies so
.•₃º•
ist"adsw"
undŽO^
ist6240
.Zur kurzen Erläuterung des Canvas-Buildins
Λ
und seiner drei Argumente:Erstes Argument: Länge (n): Die Größe der Linien, die wir zeichnen möchten. Da wir Überlappungen berücksichtigen müssen, verwenden wir Größe 2 für jedes Zeichen und eine zusätzliche 1 für den Kopf der Schlange.
Zweites Argument: Zeichenfolge (n): Die Zeichen, die wir anzeigen möchten. Welches sind in diesem Fall die Zeichen, denen das Kopfzeichen der Schlange angehängt ist?
Drittes Argument: Richtung (en): Die Richtungen, in die diese Zeichenlinien der angegebenen Länge gezeichnet werden sollen. Im Allgemeinen haben wir die Richtungen,
[0,7]
die diesen Richtungen entsprechen:6240
In diesem meiner Tipps zu 05AB1E finden Sie eine detailliertere Erläuterung der Canvas-Funktion
Λ
.quelle
γ
es überhaupt nötig ist. Dies scheint gut zu funktionieren.Perl - 394
Nicht die kürzeste, aber sie schlägt mindestens Javascript, C # und Java.
Einige Tricks:
Dinge, die weh tun:
quelle
C - 273 Bytes - mit interaktiver Eingabe!
Das Feld wird bei jeder Eingabe eines Zeichens gedruckt und wächst, wenn sich der Kopf der Schlange dem Rand nähert. Ich weiß nicht, wie portabel es ist - jemand im Internet hat gesagt, getch () funktioniert nicht auf Nicht-Windows-Plattformen. Schwer zu sagen, ob ASCII 1 auch wie ein Smiley aussieht.
Die Golfversion ist ziemlich nervig, da es keine Möglichkeit gibt, das Programm ordnungsgemäß zu beenden. Control-C funktioniert bei mir nicht. Auf der anderen Seite endet die ungolfed Version, wenn ein anderes Zeichen als 'w', 'a', 's' oder 'd' eingegeben wird.
So genannte "ungolfed":
quelle
05AB1E , 23 Bytes
Probieren Sie es online!
Erläuterung:
quelle