Asciimation Jumping Jacks

28

Dies ist meine erste Herausforderung, daher halte ich es ziemlich einfach.

Wenn Sie jemals telnet towel.blinkenlights.nlin Ihre Befehlszeile getippt und die Eingabetaste gedrückt haben, haben Sie die Freude an der Erkennung erlebt. Asciimation ist ganz einfach eine Animation mit ASCII-Kunst. Heute werden wir eine sehr grundlegende Einschätzung einer Person machen, die Hampelmänner macht.

Es wird zwei Ascii-Bilder geben, die wir zu einer Asciimation zusammenfügen werden. Nummer 1:

_o_
 0
/ \

Nummer 2:

\o/
_0_
<blank line>

Beachten Sie, dass die zweite Zeile am Ende eine Leerzeile enthält.

Ihr Programm sollte also die folgenden Schritte ausführen:

  1. Deaktivieren Sie den Konsolenbildschirm.
  2. Drucken Sie das richtige ASCII-Kunstbild.
  3. Setzen Sie eine Flagge oder etwas anderes, damit Sie wissen, dass Sie das nächste Mal das andere Bild machen.
  4. Warten Sie einen Moment (ungefähr eine Sekunde).
  5. Weiter bei 1.

Regeln

  • Ihr Programm muss eine (theoretisch) Endlosschleife sein.
  • Die von Ihnen verwendete Programmiersprache muss erstellt worden sein, bevor diese Herausforderung veröffentlicht wurde.
  • Das ist , also gewinnt der kürzeste Code in Bytes.
  • Es gelten Standardlücken.

Genießen!

Bitsnbites
quelle
Kann die <leere Zeile> Leerzeichen enthalten?
Jakube
1
Muss dies plattformunabhängig sein, da sich der Linux-Befehl clear ( clear) von dem Windows- Befehl one ( cls) unterscheidet
Beta Decay
1
Ist die leere Zeile nur zur Erklärung der Positionierung? Wenn Sie vom oberen Bildschirmrand aus drucken, sodass die leere Zeile keinen sichtbaren Unterschied macht, kann sie weggelassen werden?
Trichoplax
@ Jakube ja es kann Leerzeichen geben.
Bitsnbites
1
@ Trichoplax ja. Die leere Linie soll nur darauf hinweisen, dass der Kopf in der gleichen Position bleiben muss.
Bitsnbites

Antworten:

29

CJam, 51 45 42 38 36 Bytes

"c\o/
_0_""^[c_o_
 0
/ \^["{_o\6e4m!}g

Oben wird die Caret-Notation verwendet. Die Sequenz ^[ist eigentlich das ASCII-Zeichen mit dem Codepunkt 27.

Ich habe die Escape-Sequenz ( ^[c) aus der Antwort von @DomHastings ( mit seiner Erlaubnis ) ausgeliehen, um 4 Bytes zu sparen.

Nachprüfung

Sie können die Datei folgendermaßen neu erstellen:

base64 -d > jj.cjam <<< ImNcby8KXzBfIiIbY19vXwogMAovIFwbIntfb1w2ZTRtIX1n

Laden Sie zum Ausführen des Codes den CJam-Interpreter herunter und führen Sie Folgendes aus :

java -jar cjam-0.6.5.jar jj.cjam

Dies funktioniert auf jedem Terminal, das console_codes oder eine entsprechende Teilmenge unterstützt. 1

Wie es funktioniert

e# Push both jumping jacks on the stack.

"c\o/
_0_"

"^[c_o_
 0
/ \^["

e# When chained together, they contain two occurrences of the string "\ec",
e# which resets the terminal. Encoding the ESC byte in the second string
e# eliminates the need two escape a backslash before the string terminator.

{         e# Do:
  _o      e#   Copy the jumping jack on top of the stack and print the copy.
  \       e#   Swap the order of the jumping jacks.
  6e4m!   e#   Calculate the factorial of 60,000 and discard the result.
          e#   This takes "about a second".
}g        e# Since the discarded factorial was non-zero, repeat the loop.

1 Die Jumping-Buchsen sehen besser aus, wenn Sie den Cursor des Terminals vor dem Ausführen des Programms verbergen. In Konsole können Sie z. B. die Farbe des Cursors so einstellen, dass sie mit der Hintergrundfarbe übereinstimmt. Dies muss über die Einstellungen Ihres Terminals erfolgen, da ^[cdas Terminal zurückgesetzt wird.

Dennis
quelle
36
+1 nur für Calculate the factorial of 60,000 and discard the result. This takes "about a second".;)
ETHproductions
Vielleicht 2Fm*ist es eine gute, um ein Byte kürzere Alternative zu 6e4m!"sinnloser Operation, die einen wahren Wert zurückgibt und für deren Berechnung etwa eine Sekunde benötigt wird".
Lynn
@ Mauris Ich hatte etwas Ähnliches mit versucht e!, aber sie scheinen auswendig zu lernen. Nach der ersten Iteration bekommt der arme Jack einen Herzinfarkt ...
Dennis
10

Pyth - 41 40 39 Bytes

.VZ"\x1b[H\x1b[J"@c"_o_
 0
/ \\\o/
_0_"Tb .p9

(Ich zähle die \x1bals ein Byte, da SO Sonderzeichen zerstört).

Funktioniert eindeutig nicht online, da es a) eine Endlosschleife ist und b) Terminal-Escape-Codes verwendet.

#                Infinite loop
 "..."           Print escape sequences to clear screen
 @               Modular indexing
  c     T        Chop at index ten into the constituent frames
   "..."         Frames 1 & 2 concatenated (Pyth allows literal newlines in strings)
  ~              Post assign. This is an assign that returns the old value.
   h             Increment function. Putting it after an assign makes it augmented assign.
   Z             Variable auto-initialized to zero.
 .p9             Permutations(range(9), 9). Takes about a second on my machine.

Ich war überrascht herauszufinden, dass Augmented-Assign mit Post-Assign zusammenarbeitet. Pyth ist großartig.

Maltysen
quelle
Verwendung .V0als Endlosschleife
Jakube
Möglicherweise können Sie ein Byte speichern, nachdem das OP bestätigt hat, dass die leere Zeile nicht explizit gedruckt werden muss
Trichoplax
@Jakube das scheint nichts zu retten.
Maltysen
Ihre Erklärung entspricht nicht Ihrem Code: P
Beta Decay
9

QBasic, 58 Bytes

Getestet auf QB64 .

CLS
?"_o_"
?0
?"/ \"
SLEEP 1
CLS
?"\o/"
?"_0_"
SLEEP 1
RUN

Die richtige Sprache für das Problem kann überraschend wettbewerbsfähig sein, auch wenn sie normalerweise ausführlich ist. Die ?Abkürzung für PRINThilft natürlich auch. CLSist cl ohr s creen; RUNOhne Argumente wird das Programm neu gestartet. Dies ist der kürzeste Weg, um eine Endlosschleife zu erhalten.

Der einzige andere Trick ist das Drucken 0für den Mittelteil des ersten Bildes. QBasic fügt beim Drucken ein Leerzeichen vor (und nach) nichtnegativen numerischen Werten ein 0 . Über 3 Zeichen gespeichert " 0".

Ich kann auch darauf hinweisen, dass die Verzögerung in diesem Code buchstäblich eine Sekunde beträgt und nicht maschinenabhängig ist. ; ^ P

DLosc
quelle
2
Ich erinnere mich, dass ich mich über die Umgebung geärgert habe, als ich Zahlen in verschiedenen Versionen von BASIC druckte. Schön zu sehen, dass es eine gute Verwendung dafür gibt ...
Trichoplax
7

Perl (* nix) , 54 Bytes

sleep print"\x1bc",$-++%2?'\o/
_0_
':'_o_
 0
/ \
'while 1

( \x1bWird als 1 Byte gezählt, ist aber zum leichteren Testen ausgeblendet .) Das oben Gesagte wurde mit Bash getestet und dank @Dennis um ein weiteres Byte verkürzt !

Perl (Windows) , 56 Byte

sleep print"\x1b[2J",$-++%2?'\o/
_0_
':'_o_
 0
/ \
'while 1

Vielen Dank an @Jarmex für seine Tests und Ratschläge!

Dom Hastings
quelle
2
Leider funktioniert das nicht unter Windows, aber Sie können nur 1 Byte mehr mit: wegkommen. print"@[2J"Ersetzen Sie das @ in den Anführungszeichen durch ASCII 27 (zu Testzwecken, print"\033[2J"möglicherweise einfacher).
Jarmex
Sie können \emit einem wörtlichen ESC-Byte ersetzen . - Würde es Ihnen etwas ausmachen, wenn ich den \ecTrick in meiner Antwort verwende?
Dennis
@Dennis natürlich, da "\e"ist sowieso nur eine Abkürzung dafür. Bitte fahre fort!
Dom Hastings
6

Javascript (ES6), 109 93 79 70 Bytes + HTML, 12 10 Bytes = 120 106 91 80 Bytes

Ziemliech direkt. Verwendet Vorlagenzeichenfolgen zum Speichern der Bilder und schaltet einen booleschen Wert um, um zu bestimmen, welcher verwendet werden soll.

HINWEIS: Diese Lösung ist möglicherweise nicht gültig, da keine Konsole verwendet wird. Ich glaube jedoch nicht, dass es möglich ist, eine Browserkonsole mit JS zu löschen, zumindest nicht, wenn Firefox verwendet wird.

a=!1,setInterval(_=>O.innerHTML=(a=!a)?`_o_ 
 0
/ \\`:`\\o/ 
_0_`,1e3)
<pre id=O>

ETHproductions
quelle
1
@orlp Code erstellt den animierten Mann. (Chrome @ Windows). Dies ist jedoch GUI-basiert und nicht konsolenbasiert. Könnte als solche nicht als gültig angesehen werden.
Justin
3
1. Auf meinem Computer funktioniert dies in Firefox einwandfrei, in Chrome jedoch nicht. Ich denke, Sie sollten es als ECMAScript 6 kennzeichnen, um Verwirrung zu vermeiden. 2. Wenn Sie <pre id="a"/>den HTML-Teil <pre>einfügen, benötigen Sie die Tags im Code nicht.
Dennis
1
Oder, noch besser, entfernen Sie den HTML-Code und ersetzen Sie ihn document.getElementById`a` durch document.body.
NinjaBearMonkey
1
Ich habe 87 Bytes, indem ich das HTML gemacht <pre>und getan habe document.all[4]. Auf diese Weise können Sie die Umhüllungszeichenfolge entfernen und sie einfach erstellen innerHTML=a?`...`:`...`}.
NinjaBearMonkey
1
Dies funktioniert für mich nicht mehr in Chrome
Beta Decay
5

Bash, 86 84 Bytes

while sleep 1;do printf "\e[2J_o_\n 0\n/ \\";sleep 1;printf "\r\e[2J\o/\n_0_\n";done
sheß
quelle
3

Python 2, 99 Bytes

Läuft unter Windows

import os,time
g=0
while 1:os.system("cls");print["\\o/\n_0_","_o_\n 0 \n/ \\"][g];time.sleep(1);g=~g

Fügen Sie für UNIX-Computer zwei Bytes hinzu:

import os,time
g=0
while 1:os.system("clear");print["\\o/\n_0_","_o_\n 0 \n/ \\"][g];time.sleep(1);g=~g
Beta-Zerfall
quelle
3

awk - 95 92 86 84 83

END{
    for(;++j;)
        system("clear;printf '"(j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")"';sleep 1")
}

Gutes Training: D Ich habe mich nur gefragt, ob das machbar ist. Keine Preise zu gewinnen ...;)

Wenn jemand dies testen möchte: Nachdem Sie das Programm ausgeführt haben, müssen Sie Strg + D (Ende der Eingabe) drücken, um den END-Block tatsächlich zu starten. Um es zu beenden, muss ich Strg + Z verwenden.

Ich habe auch dieses, das nur 74 Bytes ist, aber es fängt mit dem Anhalten einer Sekunde an, was meiner Meinung nach nicht das gewünschte Verhalten ist

END{
    for(;1;print++j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")
        system("sleep 1;clear")
}
Cabbie407
quelle
1
Misst der Schlaf Intervalle von drei Sekunden?
Trichoplax
Ach du lieber Gott. danke für den Hinweis :) Oder wenn es kein Hinweis war: Nein, das hat nur 0,33 Sekunden geschlafen.
Cabbie407
Ich weiß es nicht, aber es schien wahrscheinlich, dass es in Sekunden messen würde. :)
Trichoplax
1
Es sieht einfach so lustig aus, wenn es sich schneller bewegt, dass ich das Golfen dort vergessen habe; D
Cabbie407
der Schlafbefehl ist nicht awk, es ist bash, btw
Cabbie407
2

Batch - 82 Bytes

Bearbeiten: Der Timeout-Befehl wurde stummgeschaltet und der zusätzliche Zeilenumbruch entfernt.

cls&echo _o_&echo  0&echo / \&timeout>nul 1&cls&echo \o/&echo _0_&timeout>nul 1&%0

Ich habe 2 andere ähnliche Antworten gesehen, also wollte ich das nicht wirklich posten, aber dies ist mein erstes Golfspiel überhaupt.

Peter Lenkefi
quelle
1
Aber ein timeout 1Nackter wird eine Menge unerwünschter Ausgaben auf die Konsole bringen
edc65
Es stimmt, ich hatte zusätzliche Ausgabe. Bearbeitet
Peter Lenkefi
1
Vielleicht ist >mules ein Tippfehler, oder Sie wissen nicht, was nulist. en.wikipedia.org/wiki/Null_device
edc65
@ edc65 Das Zurückziehen von Copy-Paste und nicht Testen. Vielen Dank!
Peter Lenkefi
2

BBC BASIC, 75 Bytes

Beachten Sie, dass die Tokenisierung die Größe auf 75 Byte reduziert. Das Leerzeichen wird von der IDE hinzugefügt.

      g=0
   10 IFg=0THENPRINT"\o/":PRINT"_0_"ELSEPRINT"_o_":PRINT" 0 ":PRINT"/ \"
      g=1-g:WAIT 100CLS:GOTO10

Eigenschaften, die die Programmgröße anzeigen

Beta-Zerfall
quelle
2

JavaScript ES6, 100 95 Bytes

(f=_=>{console.log(_?`_o_
 0
/ \\`:`\\o/
_0_`)
(b=setTimeout)(q=>(clear(),b(b=>f(!_))),1e3)})()

Meldet sich bei der Konsole an. Auf Safari Nightly getestet

Downgoat
quelle
2

Batch, 151 130 118 Bytes

cls
@echo _o_
@echo  0
@echo / \
@PING -n 2 127.0.0.1>NUL
cls
@echo \o/
@echo _0_
@PING -n 2 127.0.0.1>NUL
%0
Max
quelle
Möglicherweise können Sie jetzt ein paar Bytes sparen, nachdem das OP bestätigt hat, dass die leere Zeile nicht explizit gedruckt werden muss
Trichoplax
Sie sollten stattdessen in der Lage sein, 12 Zeichen @PING 127.0.0.1 -n 2>NULabzuspielen. Standardmäßig wartet Ping zwischen den Versuchen etwa eine Sekunde. Dies ist also innerhalb weniger Millisekunden der Fall, da es für diese Herausforderung nahe genug ist. Reference
AdmBorkBork
12 Bytes abgespielt dank TimmyD
Max
2

CBM 64 BASIC V2, 121 119 112 117 Byte

2?CHR$(147)+"\o/":?" 0":?"/ \"
3GOSUB7
4?CHR$(147)+"_o_":?"_0_"
5GOSUB7
6RUN
7A=TI
8IFTI-A<60THENGOTO8
9RETURN
Max
quelle
Löscht ?CHR$(147)den Bildschirm? In diesem Fall können Sie möglicherweise 2 Byte speichern, nachdem das OP bestätigt hat, dass die leere Zeile nicht explizit gedruckt werden muss
trichoplax
Dies erzeugt nicht den ersten Animationsrahmen (dh wo die Arme gerade sind).
Psychonaut
du hast recht ... ich werde es reparieren!
max
1

Julia, 70 Bytes

(auf Windows - , durch den Austausch clearmit clsdank undergroundmonorail)

n(i=1)=(sleep(1);run(`cls`);print(i>0?"_o_
 0
/ \\":"\\o/
_0_");n(-i))

Unter Linux 72 Byte

n(i=1)=(sleep(1);run(`clear`);print(i>0?"_o_
 0
/ \\":"\\o/
_0_");n(-i))

Hierbei werden eher tatsächliche Zeilenumbrüche als \n ein Byte zu speichern. Andernfalls iist entweder 1 oder -1 als "Flag", und es wird eine Rekursion verwendet, um die Endlosschleife zu erreichen. Nennen Sie es entweder n(1)oder einfach n().

Außerdem löscht run(`clear`)/ run(`cls`)das Fenster mit einem Shell-Befehl, da Julia keinen eingebauten Befehl zum Löschen von Fenstern hat.

Glen O
quelle
Wenn Sie diese auf Windows laufen speichern Sie zwei Bytes durch Ändern clearzu cls(Ich gehe davon aus , ich weiß nichts über Julia).
Undergroundmonorail
@undergroundmonorail - Danke, aber ich benutze Ubuntu, cls funktioniert nicht. Hoffentlich beschließt Julia, eine echte Terminal-Clearing-Funktion zu implementieren.
Glen O
@ GlenO unter Windows clsfunktioniert (siehe meine Antwort)
Beta Decay
1

Windows Batch, 83 89

Bearbeiten entfernt die leere Zeile nach der Klärung durch OP

@cls&echo _o_&echo  0&echo./ \&timeout>nul 1&cls&echo \o/&echo _0_&timeout>nul 1&%0

Wenn Sie die leere Linie im springenden Mann loswerden (die sowieso nicht gesehen werden kann), ist die Kerbe 83

Hinweis: timeoutist in Windows XP nicht vorhanden. Es funktioniert in Vista oder neueren Versionen. Darüber hinaus timeoutist es nicht sekundengenau, daher ist es die perfekte Wahl, Schritt 4 auszuführen. (Warten Sie einen Moment ( ungefähr eine Sekunde ).)

edc65
quelle
1

Javascript (ES6), 82 Byte

Eine Änderung meiner vorherigen Antwort , die die Konsole verwendet. Funktioniert teilweise in Firefox, löscht aber nur die Konsole in Chrome, AFAIK.

a=!0,c=console,setInterval(_=>c.log(c.clear(a=!a)|a?`_o_
 0
/ \\`:`\\o/
_0_`),1e3)

Wie immer sind Vorschläge willkommen!

ETHproductions
quelle
Liebe es! Ich bemerke dadurch, dass Chrome jetzt auch für mich ES6 ausführt!
Dom Hastings
@DomHastings Ich habe noch nie in Chrome entwickelt, aber ich hatte gehört, dass ES6 nicht standardmäßig unterstützt wird, also war ich genauso überrascht wie Sie! :)
ETHproductions
1

JavaScript, 92 91 89 Bytes

x=0;setInterval(function(){console.log("\033c"+["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)
  • Keine ES6-Funktionen (würde aber mit ihnen deutlich kürzer sein)
  • Funktioniert mit Node.js unter Linux (keine Kenntnisse über andere Umgebungen)
  • Funktioniert teilweise in der Chrome-Konsole ( cwird angezeigt, anstatt die Konsole zu leeren und die Ausgabe zu unterbrechen)

Wenn Sie "\033c"+den obigen Code entfernen , funktioniert Folgendes im Browser, die Konsole wird jedoch nicht gelöscht.

x=0;setInterval(function(){console.log(["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)

Nateowami
quelle
Beeindruckende Arbeit! Bei Verwendung der ES6-Funktionen erhalte ich 77: x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)Aus irgendeinem Grund lässt JS mich nicht console.logals Funktion und den ASCII-Mann nicht als zusätzlichen Parameter übergeben.
ETHproductions
@ETHproductions Danke! Ich habe darüber nachgedacht, es in ES6 zu tun, aber nachdem ich es nie benutzt und io.js nicht installiert hatte, habe ich beschlossen, es nicht zu tun. Soweit nicht zu passieren in der Lage console.logzu setInterval, ist der Grund , dass wir die Funktion nicht vorbei, aber es ruft. Es würde ausgewertet werden, bevor setIntervales aufgerufen wurde, und da console.loges nicht zurückkehrt, würde es im Wesentlichen undefinedan übergeben setInterval. Sinn ergeben? Und vielen Dank für die Verkürzung!
Nateowami
Ich verstehe, was Sie sagen, aber laut dieser Seite sollte dieser Code funktionieren: x=0;setInterval(console.log,1e3,"\033c"+[_o_ <Zeilenumbruch> 0 <Zeilenumbruch> / \ `,\\o/<line break>_0_ ] [x ^ = 1])` Tatsächlich bringt es nichts wenn ich auf einen Fehler ersetzen console.logmit alert.
ETHproductions
Ah, ich verstehe, was du sagst. Ich denke, das Problem ist jedoch, dass wir jedes Mal etwas anderes protokollieren müssen, dies aber "\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]vor dem Aufruf von ausgewertet wird setInterval.
Nateowami,
0

Ruby, 79 Bytes

k=!0;loop{puts((k)?"\e[H\e[2J_o_\n 0\n/ \\":"\e[H\e[2J\\o/\n_0_");k=!k;sleep 1}

Benötigt Escape-Codes.

klatschen
quelle
0

Viertens 86 Bytes

Benötigt GNU Forth für die ausgeblendeten Zeichenketten. Um in einem Nicht-GNU Forth zu laufen, wechseln Sie einfach S\"zuS" . Die mit Escape-Zeichen werden dann nicht korrekt gedruckt.

: P PAGE TYPE CR 999 MS ;
: R BEGIN S\" \\o/\n_0_" P S\" _o_\n 0 \n/ \\" P 0 UNTIL ; R

mbomb007
quelle
0

CBM BASIC v2.0 (68 Zeichen)

0?"S_o_q||0q||N M":goS1:?"SMoN":?"_0_":goS1:gO
1wA161,255,pE(161):reT

Die obigen Ausführungen bedürfen einiger Erklärung, da das Stack Exchange-Markup PETSCII-Zeichen nicht ordnungsgemäß darstellt:

  • Das Programm wird hier zur Vereinfachung in Kleinbuchstaben angezeigt, kann und sollte jedoch auf einem Commodore 64 in Großbuchstaben eingegeben und ausgeführt werden.
  • Das erste und dritte "S" -Zeichen befinden sich in umgekehrter Reihenfolge und werden durch Drücken der CLRTaste ( SHIFT+ HOME) erzeugt.
  • Die "q" -Zeichen befinden sich tatsächlich im umgekehrten Video und werden durch Drücken des Abwärtscursors erzeugt (CRSR ⇓ ) erzeugt.
  • Das "|" Die Zeichen sind eigentlich im umgekehrten Video und werden durch Drücken des linken Cursors ( SHIFT+ CRSR ⇒) erzeugt.
Psychonaut
quelle
0

Bienenwachs ,119 113 Bytes

ph0`J2[`}ghq'-<gh0N}`0`}gN`/o\`Ngh0`J`<
>g}`o`}N` `0>'d`0 `N`/ \`0hg>-'phg}`[2`b
dF1f+5~Zzf(.FP9f..F3_#     d   <

Erläuterung der wichtigen Programmteile:

left to right  right to left

3FBf   or       fBF3          27       ASCII code for (esc)
3             [x,x,3]•        set lstack 1st to 3
 F            [3,3,3]•        set lstack to 1st
  B           [3,3,27]•       1st=1st^2nd
   f                          push lstack 1st on gstack
——————
9PF.(f   or    f(.FP9         102400   counter to roughly match a wait time
                                       of 1 s on my i5 2410M Laptop
9             [x,x,9]•        set lstack 1st to 9
 P            [x,x,10]•       increment 1st
  F           [10,10,10]•     set lstack to 1st
   .          [10,10,100]•    1st=1st*2nd
    (         [10,10,102400]• 1st=1st<<2nd (100<<10=102400, arithmetic shift left)
     f                        push lstack 1st on gstack
——————
zZ~5+f   or    f+5~Zz         95       ASCII for '_'
z             [0,0,0]•        initialize lstack to zero
 Z            [0,0,90]•       get value from relative coordinate (0,0),
                              which is the location of `Z` itself, ASCII(Z)=90
  ~           [0,90,0]•       flip 1st and 2nd lstack values
   5          [0,90,5]•       set lstack 1st to 5 
    +         [0,90,95]•      1st = 1st+2nd
     f                        push lstack 1st on gstack

Die f‚s drücken die Werte auf dem gstack (global Stack) für die spätere Verwendung. Auf diese Werte wird mit den Anweisungen 0gh(oder den gespiegelten Anweisungen hg0) und hg( gh) zugegriffen . hdreht den Stapel nach oben,g liest den Höchstwert von gstack und schiebt ihn auf den Stapel (lokaler Stapel) der Biene (Anweisungszeiger).

}`o`}N` 0 `N`/ \`                      sequence to print the standing man

N`\o/`Ng}`0`}N                         sequence to print the jumping man

}`[2J`                        equivalent to the ANSI escape sequence (esc)[2J
                              to clear the screen
>-'p  or >-'q  or >  p        loop for counting down (wait 1 s)
d  <      b  <    d'-<

Eine ausführliche Erklärung folgt später, falls erforderlich. Vielleicht mit Animation.

ML
quelle
0

Toter Fisch , nicht konkurrierend (658 Bytes)

iiisisdddddoiiiiiiiiiiiiiiiioddddddddddddddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddsddddoiiiiiiiiiiiiiiiioddddddddddddddddoddddddddddddddddddddddodddsddodddddddddddddddoddddddddddddddddddddddsddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoosddddddddoiiiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddddddddddddddddosdddddodddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddddddddddddddddsdddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoo

Dies ein nicht konkurrierende Lösung , da sie die Herausforderungsanforderungen nicht vollständig erfüllt. Deadfish ist eine sehr seltsam interpretierte Sprache, die nur 4 Befehle und einen Akku hat. Der Akkumulator ist eine Einzelbyte-Variable, die mit 0 initialisiert wird. Die 4 Befehle lauten:

  • i = Erhöhe den Akku a = a + 1
  • d = Dekrementieren Sie den Akku a = a - 1
  • s = Platziere den Akku a = a * a
  • o = Den Akku ausgeben print(a)

Da die Sprache keine Wiederholungen, Löschvorgänge oder Verzögerungen enthält, entspricht sie nicht den Anforderungen. Erwartete Ausgabe:

_o_
 0 
/ \
(Blank line, not from the program)
\o/
_0_
(Blank line, not from the program)
(Blank line, not from the program)

Code Erklärung:

_  iiisisdddddo
o  iiiiiiiiiiiiiiiio
_  ddddddddddddddddo
\n dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
   ddddsddddo
0  iiiiiiiiiiiiiiiio
   ddddddddddddddddo
\n ddddddddddddddddddddddo
/  dddsddo
   dddddddddddddddo
\  ddddddddddddddddddddddsddddddddo
\n ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n o
\  sddddddddo
o  iiiiiiiiiiiiiiiiiiio
/  ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n dddddddddddddddddddddddddddddddddddddo
_  sdddddo
0  dddddddddddddddddddddddddddddddddddddddddddddddo
_  ddddddddddddddddddddddddddddddddddddddsdddddo
\n dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n o

Deadfish-Interpreter in Python 3:

c=input()
o=""
a=0
for p in range(0,len(c)):
    i=c[p]
    if i=="i":
        a += 1
    if i=="d":
        a+=-1
    if i=="s":
        a=a*a
    if i=="o":
        o+=chr(a)
print(o)
Julian Lachniet
quelle
0

Nudel , nicht 24 Bytes

Nicht konkurrierend, da Noodel geboren wurde, nachdem die Herausforderung erstellt wurde :)

”ṛ|ọBCḊCBCḣ“\o/¶_0_ḷėçḍs

Versuch es:)

Wie es funktioniert

”ṛ|ọBCḊCBCḣ              # Creates a string that gets decompressed into "_o_¶¤0¤¶/¤\" and places it into the pipe.
           “\o/¶_0_      # Creates a string and places it into the pipe.
                   ḷ     # Unconditionally loop the code up to a new line or end of program.
                    ė    # Takes what is in the front of the pipe and puts it into the back.
                     ç   # Clears the screen and prints.
                      ḍs # Delays for one second.

Derzeit gibt es keine Version von Noodel , die die in dieser Herausforderung verwendete Syntax unterstützt. Hier ist eine Version, die dies tut:

24 Bytes

\o/¶_0_ _o_¶¤0¤¶/¤\ḷçėḍs

<div id="noodel" code="\o/¶_0_ _o_¶¤0¤¶/¤\ḷçėḍs" input="" cols="5" rows="5"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>

tkellehe
quelle