C'est mon premier défi, donc je reste assez simple.
Si vous avez déjà tapé telnet towel.blinkenlights.nl
sur votre ligne de commande et appuyé sur Entrée, vous aurez connu la joie de l'asciimation. L'asciimation consiste, tout simplement, à faire une animation avec l'art ascii. Aujourd'hui, nous allons faire une asciimation très basique d'une personne faisant des sauts.
Il y aura deux images ascii que nous assemblerons en une seule asciimation. Numéro 1:
_o_
0
/ \
Numéro 2:
\o/
_0_
<blank line>
Notez que le second a une ligne vide à la fin.
Votre programme doit donc effectuer ces étapes:
- Effacez l'écran de la console.
- Imprimez l'image d'art ascii correcte.
- Définissez un drapeau ou quelque chose pour que vous sachiez faire l'autre image la prochaine fois.
- Attendez un instant (environ une seconde).
- Continuez à 1.
Règles
- Votre programme doit être une boucle infinie (théoriquement).
- Le langage de programmation que vous utilisez doit avoir été créé avant la publication de ce défi.
- C'est le code-golf , donc le code le plus court en octets gagne.
- Des échappatoires standard s'appliquent.
Prendre plaisir!
clear
) est différente de celle de Windows (cls
)Réponses:
CJam,
5145423836 octetsCe qui précède utilise la notation caret; la séquence
^[
est en fait le caractère ASCII avec le point de code 27.J'ai emprunté la séquence d'échappement (
^[c
) à la réponse de @DomHastings ( avec sa permission ) pour économiser 4 octets.Vérification
Vous pouvez recréer le fichier comme ceci:
Pour exécuter le code, téléchargez l' interpréteur CJam et exécutez ceci:
Cela fonctionnera sur n'importe quel terminal qui prend en charge console_codes ou un sous-ensemble approprié. 1
Comment ça marche
1 Les prises sautantes seront plus belles si vous masquez le curseur du terminal avant d'exécuter le programme. Dans Konsole, par exemple, vous pouvez définir la couleur du curseur pour qu'elle corresponde à la couleur d'arrière-plan. Cela doit être fait via les paramètres de votre terminal, car
^[c
réinitialise le terminal.la source
Calculate the factorial of 60,000 and discard the result. This takes "about a second".
;)2Fm*
- être est une bonne alternative d'un octet plus courte6e4m!
pour "un fonctionnement insensé qui renvoie une valeur vraie et prend environ une seconde pour calculer".e!
, mais ils semblent être mémorisés. Après la première itération, le pauvre Jack fait une crise cardiaque ...Pyth -
414039 octets(Je compte les caractères
\x1b
comme un octet car SO détruit les caractères spéciaux).Clairement, ne fonctionne pas en ligne car c'est a) une boucle infinie et b) utilise des codes d'échappement terminaux.
J'ai été surpris de découvrir que l'augmentation-affectation fonctionnait avec la post-affectation. Pyth est génial.
la source
.V0
comme boucle infinieQBasic, 58 octets
Testé sur QB64 .
La bonne langue pour le problème peut être étonnamment compétitive, même si elle est généralement verbeuse. Le
?
raccourci pourPRINT
aide aussi, bien sûr.CLS
est cl oreille de l'creen;RUN
sans arguments redémarre le programme, qui est le moyen le plus court pour obtenir une boucle infinie.La seule autre astuce ici est l'impression
0
pour la section médiane de la première photo. QBasic place un espace devant (et après) les valeurs numériques non négatives lors de leur impression, ce qui entraîne0
. Plus de 3 caractères enregistrés" 0"
.Je peux également souligner que le retard dans ce code est littéralement une seconde et ne dépend pas de la machine. ; ^ P
la source
Perl (* nix) , 54 octets
(
\x1b
est compté comme 1 octet mais échappé pour un test plus facile.) Ce qui précède a été testé avec Bash et raccourci d'un autre octet grâce à @Dennis !Perl (Windows) , 56 octets
Merci à @Jarmex pour ses tests et ses conseils!
la source
print"@[2J"
:, en remplaçant le @ à l'intérieur des guillemets par ASCII 27 (à des fins de test, celaprint"\033[2J"
pourrait être plus facile).\e
par un octet ESC littéral. - Ça vous dérangerait si j'utilisais l'\ec
astuce dans ma réponse?"\e"
n'est qu'un raccourci pour cela de toute façon. Allez-y!Javascript (ES6),
109937970 octets + HTML,1210 octets =1201069180 octetsAssez simple. Utilise des chaînes de modèle pour stocker les images et bascule une valeur booléenne pour déterminer laquelle utiliser.
REMARQUE: cette solution peut ne pas être valide, car elle n'utilise pas réellement de console. Cependant, je ne pense pas qu'il soit possible d'effacer une console de navigateur en utilisant JS, du moins pas en utilisant Firefox.
la source
<pre id="a"/>
la partie HTML, vous n'avez pas besoin des<pre>
balises dans le code.document.getElementById`a`
pardocument.body
.<pre>
et en le faisantdocument.all[4]
. Cela vous permet de vous débarrasser de la chaîne wrapper et de la créerinnerHTML=a?`...`:`...`}
.Bash,
8684 octetsla source
Python 2, 99 octets
Fonctionne sur Windows
Pour les machines UNIX, ajoutez deux octets:
la source
awk -
95 92 86 8483Belle séance d'entraînement: D Je me demandais simplement si c'était faisable. Pas de prix à gagner cependant ...;)
Si quelqu'un veut tester cela: après avoir exécuté le programme, vous devez appuyer sur Ctrl + D (fin de saisie) pour démarrer réellement le bloc END. Pour y mettre fin, je dois utiliser Ctrl + Z.
J'ai également ceci, qui n'est que de 74 octets, mais cela commence par une pause d'une seconde, ce qui n'est pas le comportement souhaité, je pense
la source
Lot - 82 octets
Modifier: la commande de temporisation a été désactivée et la nouvelle ligne supplémentaire a été supprimée.
J'ai vu 2 autres réponses de lot similaires, donc je ne voulais pas vraiment poster ceci, mais c'est mon tout premier golf.
la source
timeout 1
mettra beaucoup de sortie non demandée sur la console>mul
c'est peut-être une erreur de type, ou peut-être que vous ne savez pas ce quenul
c'est. en.wikipedia.org/wiki/Null_deviceBBC BASIC, 75 octets
Notez que la tokenisation le réduit à 75 octets. L'espace est ajouté par l'EDI.
la source
JavaScript ES6,
10095 octetsSe connecte à la console. Testé sur Safari Nightly
la source
Lot,
151130118 octetsla source
@PING 127.0.0.1 -n 2>NUL
place. Par défaut, Ping attend environ une seconde entre les tentatives, c'est donc à quelques millisecondes près d'être précis, suffisamment proche pour ce défi. RéférenceCBM 64 BASIC V2,
121119112117 octetsla source
?CHR$(147)
l'écran? Si c'est le cas, vous pourrez peut-être économiser 2 octets maintenant que l'OP a confirmé que la ligne vierge n'a pas besoin d'être explicitement impriméeJulia, 70 octets
(sous Windows , en remplaçant
clear
parcls
, grâce à undergroundmonorail)Sous Linux, 72 octets
Cela utilise des sauts de ligne réels plutôt que
\n
d'enregistrer un octet; sinon, lei
est soit 1 ou -1 comme "drapeau", et il utilise la récursivité pour réaliser la boucle infinie. Appelez-le soitn(1)
ou justen()
.En outre,
run(`clear`)
/run(`cls`)
utilise une commande shell pour effacer la fenêtre, car Julia n'a pas de commande window-clear intégrée.la source
clear
encls
(je suppose, je ne sais rien de Julia).cls
fonctionne (voir ma réponse)Windows Batch, 83
89Edit a supprimé la ligne vide après la clarification par OP
Si vous vous débarrassez de la ligne vide chez l'homme qui saute (qui ne peut pas être vu de toute façon), le score est de 83Remarque:
timeout
n'est pas présent dans Windows XP. Il fonctionne dans Vista ou dans des versions plus récentes. De plustimeout
n'est pas précis à la seconde, c'est donc un choix parfait pour implémenter l'étape 4 (Attendez un moment ( environ une seconde ))la source
Javascript (ES6), 82 octets
Une modification de ma réponse précédente qui utilise la console. Fonctionne partiellement dans Firefox, mais efface uniquement la console dans Chrome, AFAIK.
Comme toujours, les suggestions sont les bienvenues!
la source
JavaScript,
929189 octetsc
s'affiche au lieu de vider la console, interrompre la sortie)En supprimant
"\033c"+
le code ci-dessus, ce qui suit fonctionne dans le navigateur, mais n'efface pas la console.la source
x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)
pour une raison quelconque, JS ne me laisse pas passer enconsole.log
tant que fonction et l'homme ASCII en tant que paramètre supplémentaire.console.log
àsetInterval
, la raison est que nous ne transmettons pas la fonction, mais l'appelons. Il serait évalué avant d'setInterval
être appelé, et commeconsole.log
il ne revient pas, il serait essentiellement transmisundefined
àsetInterval
. Ça a du sens? Et merci de l'avoir raccourci!x=0;setInterval(console.log,1e3,"\033c"+[
_o_ <saut de ligne> 0 <saut de ligne> / \ `,\\o/<line break>_0_
] [x ^ = 1])` En fait, il n'apporte pas une erreur si je remplaceconsole.log
paralert
."\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]
est évalué avant l'appel àsetInterval
.Rubis, 79 octets
Nécessite des codes d'échappement.
la source
Forth, 86 octets
Nécessite GNU Forth pour les chaînes échappées. Pour exécuter dans un Forth non GNU, changez simplement
S\"
enS"
et les caractères échappés ne s'imprimeront pas correctement.la source
CBM BASIC v2.0 (68 caractères)
Ce qui précède nécessite quelques explications, car le balisage Stack Exchange ne représente pas correctement les caractères PETSCII:
la source
cire d'abeille ,
119113 octetsExplication des parties importantes du programme:
Les
f
valeurs poussent les valeurs sur la gstack (pile globale) pour une utilisation ultérieure. Ces valeurs sont accessibles par les instructions0gh
(ou en miroirhg0
) ethg
(gh
).h
fait pivoter la gstack vers le haut,g
lit la valeur maximale de gstack et la pousse sur la lstack (pile locale) de l'abeille (pointeur d'instruction).Une explication détaillée suit plus tard, si nécessaire. Peut-être avec animation.
la source
Poisson mort , sans compétition (658 octets)
Il s'agit d'une solution non concurrente , car elle ne répond pas complètement aux exigences du défi. Deadfish est une langue interprétée très étrange, qui n'a que 4 commandes et un accumulateur. L'accumulateur est une variable à un octet initialisée à 0. Les 4 commandes sont:
i
= Incrémenter l'accumulateura = a + 1
d
= Décrémenter l'accumulateura = a - 1
s
= Mettre l'accumulateur au carréa = a * a
o
= Sortie de l'accumulateurprint(a)
Comme la langue n'inclut pas la répétition, l'effacement de l'écran ou les retards, elle ne répond pas aux exigences. Production attendue:
Explication du code:
Interprète Deadfish dans Python 3:
la source
Noodel , non compressible 24 octets
Pas de compétition car Noodel est né après la création du challenge :)
Essayez-le :)
Comment ça marche
Il n'existe actuellement aucune version de Noodel qui prend en charge la syntaxe utilisée dans ce défi. Voici une version qui fait:
24 octets
la source