Versuchen Sie, eine einfache ASCII-Kunstscherenanimation zu erstellen!
Herausforderung
Alle Eingaben sind Ganzzahlen von -31 bis 31.
Bei der Ausgabe handelt es sich um eine Animation (die irgendwo ausgegeben werden muss , solange der vorherige Frame ersetzt wird. GIFs sind zulässig.), Die durch (ungefähr) eine Viertelsekunde voneinander getrennt ist.
Wenn die Eingabe ( n
) positiv ist:
- Die Animation sollte mit einer
8<
offenen Schere beginnen. - Der nächste Frame ist
8=
. Dies zeigt die Schere "Schneiden". - Hinter der Schere wird ein Strich (Schnittmarke) eingefügt, und die Animation wird wiederholt, bis
n
Striche angezeigt werden.
Wenn die Eingabe negativ ist:
- Die Schere beginnt offen und zeigt nach links (so:)
>8
, mitn
Leerzeichen davor. - Die Schere schließt sich und zeigt nach links (
=8
). - Die Schere öffnet sich wieder, wenn der Platz entfernt wird und ein Strich hinter der Schere hinzugefügt wird.
Wenn die Eingabe Null ist:
- Geben Sie nur die Schere zum Öffnen und Schließen für 10 Bilder aus. Sie können in beide Richtungen zeigen, sofern dies konsistent ist.
Das ist Code-Golf , also gewinnt die kürzeste Einsendung in Bytes. (Auch wenn Ihr Beitrag aufgrund einer neuen "Golfsprache" nicht unbedingt gewinnen wird, würden wir ihn gerne sehen.)
Fehlermeldungen sind zulässig, solange die Fehlermeldung selbst die Animation nicht beeinträchtigt.
Beispiel für Eingabe- und Ausgabepaare:
(Ich habe die Frames aus Gründen der Klarheit getrennt, zwischen den einzelnen Frames sollten jedoch ca. 0,25 Sekunden liegen.)
Input: 1
Output:
8<
8=
-8<
Input: 2
Output:
8<
8=
-8<
-8=
--8<
Input: 5
Output:
8<
8=
-8<
-8=
--8<
--8=
---8<
---8=
----8<
----8=
-----8<
Input: 0
Output:
8<
8=
8<
8=
8<
8=
8<
8=
8<
8=
Input: -2
Output:
>8
=8
>8-
=8-
>8--
Input: -3
Output:
>8
=8
>8-
=8-
>8--
=8--
>8---
Genießen!
Antworten:
SOGL V0.12 , 53 Bytes
Probieren Sie es hier aus!
quelle
MATL ,
595857 BytesProbieren Sie es bei MATL Online! Oder sehen Sie sich ein Beispiel an, das vom Offline-Compiler ausgeführt wird:
quelle
JavaScript (ES2017) + HTML, 165 + 10 Byte
-16 Bytes von @Shaggy
Probieren Sie es im folgenden Snippet aus:
quelle
alert
jedes "Bild" möglicherweise nicht der Spezifikation entspricht, möchten Sie möglicherweise eine Erläuterung dazu erhalten.)alert
da die Anforderungen lauten, dass die Frames in Intervallen von ~ 0,25 s vorliegen, wasalert
ohne weitere Benutzereingaben nicht möglich wäre.TI-BASIC, 173 Bytes
Es war ein sehr interessantes Hindernis, wenn der 0-Eingang in einem anderen Frame als die anderen endet!
Da TI-BASIC keine leeren Zeichenfolgen mag, wird mindestens ein Dummy-Zeichen links von der Schere beibehalten, wobei das erste ständig ein Leerzeichen ist. Um zu vermeiden, dass dies als Teil der n Leerzeichen für negative Eingaben gezählt wird, beginnt dieses Programm mit dem Ausdruck ab der rechten Spalte der ersten Zeile und umschließt dann den Rest der Zeichenfolge nach unten, um das eigentliche Animationsfeld dort neu zu beginnen erste Spalte.
Einige Hinweise für ein exotisches Gerät: Die TI-BASIC-Codegröße wird in Token und nicht in Zeichen gemessen. Für konsistente rechnerübergreifende Vergleiche ignorieren wir normalerweise die Anzahl der Bytes, die sich auf die Headerlängen beziehen (z. B. subtrahieren wir 8 von PROGRAM: SCISSORS). Darüber hinaus wird für Routinen, die sich auf dem Startbildschirm gut verhalten (die größtenteils keine Kontrollstrukturen aufweisen), die Größe eines leeren Programms weiter verringert, um auch 9 Bytes zu "sparen". Insbesondere dieses Programm ist auf dem Startbildschirm nicht schreibbar, sodass keine Freiheit genommen wird.
quelle
Oktave ,
190186 BytesProbieren Sie es online! (Hinweis: Funktioniert
clc
nicht in TIO, daher werden nur alle Animationsframes nacheinander ausgegeben.) Vielen Dank für @LuisMendo, dass Sie mich auf die Funktione(...)
in Octave aufmerksam gemacht haben, die gleichbedeutend mit istexp(1)*ones(...)
.Es stellt sich heraus, dass Inline-Zuweisungen nur die geänderten Array-Einträge zurückgeben, nicht das gesamte Array. Das heißt, Konstruktionen wie
q(k(i+1)+=s)
sind nicht möglich, das Programm ist also fast wie bei MATLAB. In der Tat ist der MATLAB-Eintrag nur geringfügig länger,MATLAB,
198195 Bytesquelle
+ones
durch das hässlichere ersetzen+~e
. Ersetzen Sie außerdem in Octave und in Matlab[i i+1]
durchi:i+1
.e(...)
so? Ich glaube nicht, dass ich jemals das Bedürfnis nach einer m-by-n-Matrix von hattee
. Gute Voraussetzungen zum Golfen.Sauber , 294 Bytes
Probieren Sie es online!
Beachten Sie, dass dies bei TIO nicht funktioniert. Der Link dient nur zu Präsentationszwecken.
Ihre Ergebnisse können variieren, wenn Sie eine
CLOCK_PER_TICK
andere Konstante als1000
die Standardkonstante für x86 Windows Clean verwenden.quelle
Python 2 , 170 Bytes
Probieren Sie es online!
quelle
(approximately) 1 quarter of a second
; Warum nicht eine Ruhezeit von.2
Sekunden verwenden und ein Byte speichern?Ruby, 169 Bytes
Ziemlich selbsterklärend, wenn man sich damit beschäftigt, zumindest meiner Meinung nach. Das Programm muss auf einem Computer mit dem Befehl cls / alias ausgeführt werden.
Probieren Sie es online! (Musste die system () -Methode aufgrund der oben genannten Einschränkungen nur für dieses Skript überschreiben.)
Ich habe versucht zu verwenden
Aber es hat nur ein unsichtbares Zeichen gedruckt, weiß jemand warum?
quelle