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 \
et There 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.