*> <> , 103 101 Bytes
<vD[3'(")'
1x<.5
S\:43_C43CdooI:o@:o@:o@Do
R!"^"x"v">
>:2* _"><"92.
x '>)">('u.02S*2:oooooodO<'<("<)'
Probieren Sie es hier aus! (Schreiben Sie in n
den Anfangsstapel, sonst wird eine Fehlermeldung angezeigt.)
Ich beschloss, meine Herausforderung anzupacken, da es keine Antworten unter 100 Byte gab. Platz n
auf dem Stack und gehen Sie weg! Dadurch werden die (")
Zeichen wiederverwendet , um einige Bytes zu speichern.
Erläuterung
Initialisierung
<vD[3'(")'
Hier speichern wir (")
zur späteren Verwendung.
< move the IP left
[3'(")' push '(")' to a new stack
D move back down to a clean stack
v move the IP down into "dance chooser"
Tanzwähler
1x<.5
\
Dies wird häufig ausgeführt, um auszuwählen, welche Art von Tanz erzeugt werden soll.
x generate a 100ms dance or a 200ms dance
1 .5 jump to "200ms dance"
\ mirror IP into "100ms dance"
Es gibt auch ein v
darüber x
und ein <
rechts davon. Diese veranlassen die x
erneute Ausführung, wenn versucht wird, die IP in die falsche Richtung zu verschieben.
Generiere 100ms Tanz
S\:1*43_C43CdooI:o@:o@:o@Do
Hier erzeugen wir eine der 100ms Tanzbewegungen und geben sie aus.
\ mirror the IP right
: copy n
43 C43C call "generate '^' or 'v'" twice
_ ignored mirror
do output a carriage return
o output the first hand of the bird
I:o@:o@:o@D select, copy, and output '(")'
o output the second hand of the bird
S sleep for previous n*100ms
\ mirror IP back to "dance chooser"
43C - "^" oder "v" erzeugen
R!"^"x"v">
Dies ist eine einfache Funktion, die "^" oder "v" generiert und dann zurückgibt. Es funktioniert ähnlich wie der Tanzwähler, in dem Anweisungen vorhanden sind, um x
sicherzustellen, dass sich die IP nur nach links oder rechts bewegt.
x generate "^" or "v"
R!"^" > push "^" to stack and return
R "v" push "v" to stack and return
200ms Tanz erzeugen
Dies ist eine andere, die mit beginnt x
. Es wird in zwei Abschnitte unterteilt: <(")>
und einen weiteren (>")> and <("<)
, da es sich um zwei unterschiedliche Abschnitte handelt und x
der einzige ist, den sie teilen.
<(")>
>:2* _"><"b2.
Dies ist im Grunde genommen der Anfang der generate 100ms dance
Routine, füllt aber die Vogelhände wie ><
bei einer zufälligen ^v
Kombination. Auch n
diesmal multipliziert es sich mit zwei. Dies macht es zum Setup, die generate 100ms dance
Routine zu verwenden, um den gesamten Vogel auszugeben und stattdessen 200 ms zu warten.
> move IP right
:2* copy n and do n*2
_ ignored mirror
"><" push "><" to stack
b2. jump to "output carriage return" in "generate 100ms dance"
(>")>
und <("<)
x '>)">('u.02S*2:oooooodO<'<("<)'
Diese kleine Erklärung bezieht sich auf die (>")>
und <("<)
-Erzeugung, obwohl x
die IP außerhalb davon gesendet werden kann (unten erklärt).
x move to "choose dance", generate (>")>, <("<), or <(")> (previous routine)
'>)">(' push '(>")>' to the stack
'<("<)' push '<("<)' to the stack
u O< ensure inner code block is always executed with IP moving left
od output carriage return
ooooo output bird
S*2: sleep for n*200ms
.02 jump to "dance chooser"