Vous avez peut-être vu l'échelle de Jacob dans les musées de sciences pour enfants. Si vous ne savez pas à quoi ils ressemblent, il existe plusieurs images et exemples de vidéos sur Wikimedia Commons . Le défi aujourd'hui est de créer une version ASCII animée du gadget électrique. En fin de compte, cela devrait ressembler à ceci:
Construction d'échelle
Voici la forme de base d'une échelle d'une hauteur ( H ) de 6:
6 \ /
5 \ /
4 \ /
3 \ /
2 \ /
1 \ /
0 ¯¯
Les chiffres à gauche indiquent simplement le numéro de ligne pour cet exemple et ne doivent pas être inclus dans la sortie. Nous ferons référence à une ligne donnée par son numéro ( R ). La ligne 0 est le bas ¯¯
. Chaque ligne 1 à H comprend quatre parties:
- Un espace
(U + 0020) répété ( H - R ) fois
- Une barre oblique
\
inverse (U + 005C) - Un espace
(U + 0020) répété (2 * R ) fois
- Une barre oblique
/
(U + 002F)
La ligne 0 est identique, sauf que les deux barres obliques sont remplacées par un macron ¯
(U + 00AF). L'espace de fuite à la fin de chaque ligne ou en dessous de l'échelle est OK. Les espaces blancs de premier plan ne le sont pas.
Construction d'arc
Une fois l'échelle construite, vous pouvez créer des arcs entre le côté gauche et le côté droit. Un arc est entièrement dans une rangée et remplace les espaces entre le début \
et la fin /
. Par conséquent, la ligne 2 aura 4 caractères dans son arc, la ligne 3 aura 6, et ainsi de suite. Chaque arc est composé en utilisant les règles suivantes:
- Les seuls caractères autorisés sont
_/¯\
(U + 005F, U + 002F, U + 00AF, U + 005C) - Afin d'assurer un aspect lisse, tout
¯
ou/
doit être suivi d'un¯
ou\
- Afin d'assurer un aspect lisse, tout
_
ou\
doit être suivi d'un_
ou/
- Les deux règles ci-dessus s'appliquent également aux bords de l'échelle
- Les trois règles ci-dessus signifient effectivement que le premier caractère de l'arc doit être
_
ou/
et le dernier caractère doit être_
ou\
(\¯\_//
n'est pas valide aux deux extrémités mais\_/¯\/
est OK) - Il doit y avoir une chance non nulle que chaque caractère autorisé se produise à un point donné
- Chaque arc est indépendant de tout autre arc
Animation
La durée de vie d'un seul arc est créée en le commençant à la ligne 1 et en le «déplaçant» d'une ligne à la fois jusqu'à ce qu'il atteigne le sommet. IE, générez d'abord un arc à la ligne 1, puis réglez-le sur des espaces et générez un arc à la ligne 2, et ainsi de suite. Étant donné le nombre d'arcs à afficher ( N ), affichez la durée de vie complète de ce nombre d'arcs un à la fois en utilisant les directives suivantes:
- Un seul arc doit être "vivant" à la fois. L'arc suivant ne peut pas démarrer jusqu'à ce que l'arc actuel atteigne le sommet puis s'éteigne.
- Chaque ligne de la durée de vie de l'arc doit être affichée pour exactement une image
- Il doit y avoir une seule image de l'échelle de base (sans arcs) avant le début d'un nouvel arc (facultatif avant le premier arc)
- L'animation doit montrer la durée de vie complète de N arcs. Si N = 0, il devrait animer des arcs aléatoires pour toujours jusqu'à l'arrêt.
- Si N > 0, vous pouvez toujours boucler l'animation pour toujours mais ce doit être une boucle des mêmes arcs encore et encore. (L'exemple GIF en haut de ce post a H = 6 et N = 3 mais il boucle pour toujours.)
- L'animation doit se produire sur place. Autrement dit, chaque image doit remplacer complètement l'image suivante et être au même emplacement.
- La longueur de chaque image peut être celle que vous voulez, mais la rendre visible par un humain (IE, utilisez votre bon sens: 0,01 s / image et 30 s / image sont tous deux inacceptables.)
Entrée sortie
- L'entrée et la sortie peuvent être dans n'importe quel format standard
- Vous pouvez exporter un GIF, écrire du texte à l'écran, produire un seul fichier pour chaque image ou tout autre moyen raisonnable
- Les failles standard sont interdites
- La hauteur de l'échelle H sera un entier positif
- Le nombre d'arcs pour afficher N sera un entier non négatif
- Les deux H et N sont prises comme entrées dans l'ordre que vous choisissez (S'il vous plaît inclure l'ordre dans votre réponse)
Condition gagnante
C'est le code-golf donc le code le plus court l'emporte.
the first character in the arc must be _ or / and the last character must be _ or \
etThere must be a non-zero chance for each allowable character to occur at a given point
. Pour être symétrique, le premier et le dernier caractère doivent être à_
chaque fois, ce qui signifie qu'il n'y a aucune chance que l'un/
ou l' autre se produise.0xAF
trouve le point de code»
.Réponses:
Python 2 ,
287271270276275 octetsEssayez-le en ligne!
N'efface pas l'écran sur tio, mais fonctionne dans une console.
Gif de fonctionnement:
la source
print'\n'*99
place deos.system('cls')
et perdre l'os
importation. Ne fonctionne toujours pas sur TIO mais fonctionne sur les consoles Windows et Linux.JavaScript (ES6), 245 octets
Le nombre d'octets suppose un codage ISO-8859-1.
la source
A=x=>[...Array(x)].map;
au début et en remplaçant les deux usages.map
, c'est juste une propriétéArray.prototype
et aucune utilité en soi. J'ai essayé des versions de travail, mais elles sortaient toutes plus de 245 octets.C (gcc) , 406 octets
Essayez-le en ligne!
La description:
la source
\--/
. C'est probablement une solution facile. Pouvez-vous capturer et publier un GIF de celui-ci en travaillant dans Xterm?PowerShell ,
347319 octetsEssayez-le en ligne! Impossible
$args
de jouer correctement, donc le lien appelle la fonction sans effacer la console.Non golfé
la source
$l=(($h..1)|%{"$(" "*($h-$_))\$(" "*$_*2)/"})+"$(" "*$h)¯¯"
for($x=0;$x-ne$n;$x++)
peut êtrefor($x=0;$x++-ne$n;)
. Je l'ai réduit à 324 octets (321 caractères) . Les conseils pour jouer au golf dans <toutes les langues> et les conseils pour jouer au golf dans PowerShell peuvent également être intéressants à lire.sleep 1
enregistre un peu (il prend par défaut -secondes) mais est assez lent mais reste raisonnable-ish,sleep -m 99
est assez rapide mais aussi raisonnable. Enregistre 5/1 octets selon ce que vous aimez. N'a pas vérifié la tentative de Kevin , maisfunction
àfilter
est un octet libre aussi bien.Rubis , 293 octets
Essayez-le en ligne!
Je suis sur Windows donc il imprime juste beaucoup de "\ n" pour effacer la console. Prend 2 arguments
n
eth
deux lignes sur stdin.la source