Je suis fatigué, mais je n'arrive pas à m'endormir. Aidez-moi à compter les moutons.
Étant donné une entrée N (entier positif), faites sauter N moutons par-dessus une clôture ascii, comme l'exemple ci-dessous. Un seul cadre doit être affiché à la fois:
o |-|
──|-|── 0
o|-|
──|-|── 0
o
|-|
──|-|── 0
|-|o
──|-|── 0
|-| o
──|-|── 0
o |-|
──|-|── 1
o|-|
──|-|── 1
o
|-|
──|-|── 1
Le dénombrement doit être conservé en bas à droite du «sol». Les espaces et les retours à la ligne de fin et de début sont autorisés. Si la langue de votre choix a du mal à vider l'écran pour chaque trame, vous pouvez ajouter suffisamment de nouvelles lignes pour effacer l'écran - veuillez indiquer le nombre de lignes que vous ajoutez pour cela dans votre réponse. Le programme devrait se terminer lorsque le mouton N'th est sur le cinquième floortile.
Je dois me lever tôt demain, donc le code le plus court en octets l'emporte. Veuillez soumettre une fonction ou un programme complet. Des échappatoires standard s'appliquent.
N=3
la dernière image contiendra un mouton à l'extrémité droite et le compteur dira toujours2
. Est-ce exact?Réponses:
MATL ,
605653 octetsL'animation avec le code ci-dessus s'exécute très rapidement. La version suivante comprend une pause pour rendre l'animation plus lente et donc plus facile à voir (non requise par le défi), au prix de 4 octets supplémentaires:
Essayez-le sur MATL Online! L'interprète est une version bêta; actualisez la page si cela ne fonctionne pas.
Ou consultez un enregistrement du compilateur hors ligne:
Explication
la source
JavaScript (ES6),
120124 bytesLa dernière image calculée s'affiche en premier. Grâce à cela, le numéro de saut est
n-1
In
alert
, les caractères ont une largeur différente, il semble donc qu'il soit cassé.Afficher l'extrait de code
Réponse précédente:
120 octets, le numéro de saut est incorrect car il commence à 1 au lieu de 0
la source
alert
. J'ai le même résultat que Chrome avec Edge, et c'est pire avec Firefox.JavaScript (ES6),
144142 octetsEfface la sortie et attend 300 ms entre chaque trame:
Vous pouvez le tester ici (assurez-vous d'ouvrir la console).
la source
4
à5
) après que le dernier mouton ait sauté la clôture ...Rubis, 83 octets
Imprime à la sortie standard. Sortie séparée par des retours à la ligne. Réduire la hauteur de l'écran à 3 rend une seule image visible à la fois.
la source
C #, 234 octets
la source
string[] args
et àfor (int
.Int32.Parse
pourrait êtreint.Parse
.Program
justeP
ou quelque chosestring
pourrait êtrevar
. L'entier dans la boucle for peut être initialisé en même temps que vous analysezargs[0]
un entier.Action<string[]>
et vous pouvez supprimer les crochets autour de la boucle for externe, donc je pense que j'obtiens 200 octets:using C=System.Console;a=>{for(int n=0;n-1+""!=a[0];++n)foreach(int p in new[]{5,6,3,10,11}){C.Clear();C.Write(" \n |-| \n──|-|── ".Remove(p,1).Insert(p,"o")+n);for(var w=3e7;w>0;--w);}};
PHP + JavaScript, 168 octets
Enregistrer dans un fichier
s.php
, appeler dans le navigateur avecs.php?n=<n>
.S'appelle avec de nouveaux paramètres pour chaque trame, sans délai.
Je pourrais économiser 5 de plus avec
index.php
; mais je ne veux pas aller aussi loin.la source
C AB|─|DE ──|─|── $c",EABCD,$s),($c+=!$f)<$n?"
.short_open_tag
désactivé. Activez-le (par défaut) ou ajoutezphp
+ espace après<?
.Tcl, 168 octets
Version utilisant un écran de 10 rangées de haut. (Remplacez ce qui
7
suit par la hauteur de votre écran dans les colonnes moins quatre.)Cela fonctionne très rapidement, vous pouvez donc ajouter une pause sur la ligne deux:
Tcl, 177 octets
Cela fonctionne en réutilisant la chaîne en haut pour deux choses différentes:
Le modèle lui-même est l'image de chaîne à afficher. Tout d'abord, nous mappons (remplacement de chaîne) le chiffre de position actuelle du mouton (boucle intérieure) sur un «o». Ensuite, nous mappons les chiffres restants aux espaces. Ensuite, nous imprimons la chaîne résultante.
(La chaîne elle-même commence après la dernière {sur la troisième ligne et se termine par l'extrême gauche} sur la dernière ligne.)
la source
QBasic, 110 octets
Boucles sur les
5*n
tiques. À chaque tick, efface l'écran, imprime le nombre de stiles et de moutons, puis utiliseLOCATE
pour imprimer leo
à l'endroit approprié. Avecx
étant le code de position entre 0 et 4:(x=2)+2
x=2
est vrai,-1+2
=1
x=2
est faux,0+2
=2
1+x-(x>1)+x\3
x
est0
ou1
,x>1
est faux etx\3
est0
:1+x-0+0
=1
ou2
x
est2
,x>1
est vrai etx\3
est0
:1+x-(-1)+0
=4
x
est3
ou4
,x>1
est vrai etx\3
est1
:1+x-(-1)+1
=6
ou7
Enfin,
SLEEP
pendant 1 seconde et boucle. Si cela ne vous dérange pas d'appuyer sur Entrée à chaque trame, je peux raser deux octets en supprimant l'argument deSLEEP
.la source
PHP,
132131 octetsModifications après commentaires (merci!):
Ce qui n'est pas golfé:
Message d'origine
Testé sur Ubuntu (ne sais pas, si
system("clear")
fonctionne sur Windows)Non golfé:
la source
clear
n'a pas besoin de devis.cls
sous DOS.$i=0;
, les avertissements ne sont généralement pas affichés dans le code golf (-5 octets). Pour la même raison, vous n'avez pas besoin de guillemets autourclear
eto
(-4 octets). Remplacez le\n
s par de vrais retours à la ligne (-2 octets). Puisque vous n'avez que des expressions, pas des instructions, vous pouvez tout mettre sauf la dernière dans votrefor
boucle, vous permettant de supprimer les crochets (for(;;system(clear),$c=…)sleep(1);
) (-2 octets). Et enfin, vous oubliez d'ajouter la condition$i<$argv[0]
(+ 11 octets).node.js + sleep , 169 octets
Solution originale
node.js,
146142185 octetsTesté avec le terminal ubuntu uniquement (et maintenant avec n moutons):
Eh bien, c'est une trame toutes les 9 ms. Une version plus apaisante pour le sommeil (cadre toutes les 1 s):
Et non golfé:
la source
05AB1E ,
666059 octetsUtilise l' encodage CP-1252 .
Explication
L'itération se réfère à l'itération intérieure (0 -> 4) du voyage des moutons.
Boucles principales
Générer la ligne supérieure
Générer la ligne du milieu
Générer la ligne du bas
la source
Gelée ,
55 5453 octetsTryItOnline
Imprime les cadres séparés par des sauts de ligne.
Comment?
la source
Python 2,
171159 159144 octets,163151136 caractèresSolution utilisant une fonction récursive. Appeler comme f (int)
MODIFIER
-12 après avoir relu les commentaires et vu que le décompte n'a pas à augmenter lorsque le mouton atteint la fin du champ
-15 en itérant directement dans la liste d'index et en perdant une variable
Remarques
Suppose un codage UTF-8
L'utilisation de - au lieu de ─ (comme dans la réponse @Luis MATL) réduirait le nombre d'octets de 8 pour correspondre au nombre de caractères et perdrait la dépendance UTF-8
50 nouvelles lignes ajoutées - la sortie est en bas sur la console (moins cher que l'importation et l'utilisation d'os.system ("clear") et fonctionne sous Windows et Linux)
Version avec 1 seconde de retard entre les sorties (170 octets, 162 caractères)
la source
Utilitaires Linux Bash + standard (339 octets)
la source