Dies ist meine erste Herausforderung, daher halte ich es ziemlich einfach.
Wenn Sie jemals telnet towel.blinkenlights.nl
in 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:
- Deaktivieren Sie den Konsolenbildschirm.
- Drucken Sie das richtige ASCII-Kunstbild.
- Setzen Sie eine Flagge oder etwas anderes, damit Sie wissen, dass Sie das nächste Mal das andere Bild machen.
- Warten Sie einen Moment (ungefähr eine Sekunde).
- 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 Code-Golf , also gewinnt der kürzeste Code in Bytes.
- Es gelten Standardlücken.
Genießen!
clear
) von dem Windows- Befehl one (cls
) unterscheidetAntworten:
CJam,
5145423836 BytesOben 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:
Laden Sie zum Ausführen des Codes den CJam-Interpreter herunter und führen Sie Folgendes aus :
Dies funktioniert auf jedem Terminal, das console_codes oder eine entsprechende Teilmenge unterstützt. 1
Wie es funktioniert
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
^[c
das Terminal zurückgesetzt wird.quelle
Calculate the factorial of 60,000 and discard the result. This takes "about a second".
;)2Fm*
ist es eine gute, um ein Byte kürzere Alternative zu6e4m!
"sinnloser Operation, die einen wahren Wert zurückgibt und für deren Berechnung etwa eine Sekunde benötigt wird".e!
, aber sie scheinen auswendig zu lernen. Nach der ersten Iteration bekommt der arme Jack einen Herzinfarkt ...Pyth -
414039 Bytes(Ich zähle die
\x1b
als ein Byte, da SO Sonderzeichen zerstört).Funktioniert eindeutig nicht online, da es a) eine Endlosschleife ist und b) Terminal-Escape-Codes verwendet.
Ich war überrascht herauszufinden, dass Augmented-Assign mit Post-Assign zusammenarbeitet. Pyth ist großartig.
quelle
.V0
als EndlosschleifeQBasic, 58 Bytes
Getestet auf QB64 .
Die richtige Sprache für das Problem kann überraschend wettbewerbsfähig sein, auch wenn sie normalerweise ausführlich ist. Die
?
Abkürzung fürPRINT
hilft natürlich auch.CLS
ist cl ohr s creen;RUN
Ohne Argumente wird das Programm neu gestartet. Dies ist der kürzeste Weg, um eine Endlosschleife zu erhalten.Der einzige andere Trick ist das Drucken
0
für den Mittelteil des ersten Bildes. QBasic fügt beim Drucken ein Leerzeichen vor (und nach) nichtnegativen numerischen Werten ein0
. Ü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
quelle
Perl (* nix) , 54 Bytes
(
\x1b
Wird 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
Vielen Dank an @Jarmex für seine Tests und Ratschläge!
quelle
print"@[2J"
Ersetzen Sie das @ in den Anführungszeichen durch ASCII 27 (zu Testzwecken,print"\033[2J"
möglicherweise einfacher).\e
mit einem wörtlichen ESC-Byte ersetzen . - Würde es Ihnen etwas ausmachen, wenn ich den\ec
Trick in meiner Antwort verwende?"\e"
ist sowieso nur eine Abkürzung dafür. Bitte fahre fort!Javascript (ES6),
109937970 Bytes + HTML,1210 Bytes =1201069180 BytesZiemliech 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.
quelle
<pre id="a"/>
den HTML-Teil<pre>
einfügen, benötigen Sie die Tags im Code nicht.document.getElementById`a`
durchdocument.body
.<pre>
und getan habedocument.all[4]
. Auf diese Weise können Sie die Umhüllungszeichenfolge entfernen und sie einfach erstelleninnerHTML=a?`...`:`...`}
.Bash,
8684 Bytesquelle
Python 2, 99 Bytes
Läuft unter Windows
Fügen Sie für UNIX-Computer zwei Bytes hinzu:
quelle
awk -
95 92 86 8483Gutes 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
quelle
Batch - 82 Bytes
Bearbeiten: Der Timeout-Befehl wurde stummgeschaltet und der zusätzliche Zeilenumbruch entfernt.
Ich habe 2 andere ähnliche Antworten gesehen, also wollte ich das nicht wirklich posten, aber dies ist mein erstes Golfspiel überhaupt.
quelle
timeout 1
Nackter wird eine Menge unerwünschter Ausgaben auf die Konsole bringen>mul
es ein Tippfehler, oder Sie wissen nicht, wasnul
ist. en.wikipedia.org/wiki/Null_deviceBBC BASIC, 75 Bytes
Beachten Sie, dass die Tokenisierung die Größe auf 75 Byte reduziert. Das Leerzeichen wird von der IDE hinzugefügt.
quelle
JavaScript ES6,
10095 BytesMeldet sich bei der Konsole an. Auf Safari Nightly getestet
quelle
Batch,
151130118 Bytesquelle
@PING 127.0.0.1 -n 2>NUL
abzuspielen. 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. ReferenceCBM 64 BASIC V2,
121119112117 Bytequelle
?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 mussJulia, 70 Bytes
(auf Windows - , durch den Austausch
clear
mitcls
dank undergroundmonorail)Unter Linux 72 Byte
Hierbei werden eher tatsächliche Zeilenumbrüche als
\n
ein Byte zu speichern. Andernfallsi
ist entweder 1 oder -1 als "Flag", und es wird eine Rekursion verwendet, um die Endlosschleife zu erreichen. Nennen Sie es entwedern(1)
oder einfachn()
.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.quelle
clear
zucls
(Ich gehe davon aus , ich weiß nichts über Julia).cls
funktioniert (siehe meine Antwort)Windows Batch, 83
89Bearbeiten entfernt die leere Zeile nach der Klärung durch OP
Wenn Sie die leere Linie im springenden Mann loswerden (die sowieso nicht gesehen werden kann), ist die Kerbe 83Hinweis:
timeout
ist in Windows XP nicht vorhanden. Es funktioniert in Vista oder neueren Versionen. Darüber hinaustimeout
ist es nicht sekundengenau, daher ist es die perfekte Wahl, Schritt 4 auszuführen. (Warten Sie einen Moment ( ungefähr eine Sekunde ).)quelle
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.
Wie immer sind Vorschläge willkommen!
quelle
JavaScript,
929189 Bytesc
wird 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.quelle
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 nichtconsole.log
als Funktion und den ASCII-Mann nicht als zusätzlichen Parameter übergeben.console.log
zusetInterval
, ist der Grund , dass wir die Funktion nicht vorbei, aber es ruft. Es würde ausgewertet werden, bevorsetInterval
es aufgerufen wurde, und daconsole.log
es nicht zurückkehrt, würde es im Wesentlichenundefined
an übergebensetInterval
. Sinn ergeben? Und vielen Dank für die Verkürzung!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 ersetzenconsole.log
mitalert
."\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]
vor dem Aufruf von ausgewertet wirdsetInterval
.Ruby, 79 Bytes
Benötigt Escape-Codes.
quelle
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.quelle
CBM BASIC v2.0 (68 Zeichen)
Die obigen Ausführungen bedürfen einiger Erklärung, da das Stack Exchange-Markup PETSCII-Zeichen nicht ordnungsgemäß darstellt:
quelle
Bienenwachs ,
119113 BytesErläuterung der wichtigen Programmteile:
Die
f
‚s drücken die Werte auf dem gstack (global Stack) für die spätere Verwendung. Auf diese Werte wird mit den Anweisungen0gh
(oder den gespiegelten Anweisungenhg0
) undhg
(gh
) zugegriffen .h
dreht den Stapel nach oben,g
liest den Höchstwert von gstack und schiebt ihn auf den Stapel (lokaler Stapel) der Biene (Anweisungszeiger).Eine ausführliche Erklärung folgt später, falls erforderlich. Vielleicht mit Animation.
quelle
Toter Fisch , nicht konkurrierend (658 Bytes)
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 Akkua = a + 1
d
= Dekrementieren Sie den Akkua = a - 1
s
= Platziere den Akkua = a * a
o
= Den Akku ausgebenprint(a)
Da die Sprache keine Wiederholungen, Löschvorgänge oder Verzögerungen enthält, entspricht sie nicht den Anforderungen. Erwartete Ausgabe:
Code Erklärung:
Deadfish-Interpreter in Python 3:
quelle
Nudel , nicht 24 Bytes
Nicht konkurrierend, da Noodel geboren wurde, nachdem die Herausforderung erstellt wurde :)
Versuch es:)
Wie es funktioniert
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
quelle