Ce défi est inspiré de cette réponse sur Ask Ubuntu Stack Exchange.
Intro
Rappelez-vous l' économiseur d'écran Windows ME avec les tuyaux ? Il est temps de ramener la nostalgie!
Défi
Vous devez écrire un programme ou une fonction qui produira une représentation ASCII de l'économiseur d'écran. Dans l'économiseur d'écran, il devrait y avoir un seul tuyau qui se développera dans des directions semi-aléatoires.
Le début du tuyau sera placé au hasard sur l'une des bordures de l'écran et le morceau de tuyau doit être perpendiculaire à la bordure (les premiers tuyaux d'angle peuvent être horizontaux ou verticaux). À chaque tique, le tuyau se développera dans la direction à laquelle il fait face (horizontal / vertical) 80%
ou prendra un coin au 20%
hasard.
Représentation des tuyaux
Pour créer la pipe, 6 caractères Unicode seront utilisés
─ \u2500 horizontal pipe
│ \u2502 vertical pipe
┌ \u250C upper left corner pipe
┐ \u2510 upper right corner pipe
└ \u2514 lower left corner pipe
┘ \u2518 lower right corner pipe
Contribution
Le programme / la fonction prendra 3 valeurs d'entrée, qui peuvent être rassemblées via les paramètres de fonction ou demandées à l'utilisateur.
- Nombre de ticks
- Largeur de l'écran
- Hauteur de l'écran
Nombre de ticks
Pour chaque tick, un morceau de pipe sera ajouté à l'écran. Les tuyaux remplaceront les vieux morceaux de tuyaux s'ils apparaissent à la même position.
Par exemple, prenez un écran de taille 3x3
ticks == 3
─┐
┘
ticks == 4
─┐
└┘
ticks == 5
│┐
└┘
Chaque fois qu'un tuyau quitte l'écran, comme dans le dernier exemple à 5 ticks, un nouveau tuyau apparaîtra à une bordure aléatoire. Par exemple:
ticks == 6
│┐
└┘
─
Le nouveau tuyau devrait avoir 50% de chances d'être horizontal ou vertical.
Largeur / hauteur de l'écran
La largeur et la hauteur de l'écran peuvent être combinées en une seule valeur si cela est préférable dans la langue de votre choix. La largeur et la hauteur de l'écran auront toujours une valeur minimale de 1 et une valeur maximale de 255. Si la langue de votre choix prend en charge une console ou un écran de sortie qui est plus petit qu'une grille de 255x255 caractères, vous pouvez supposer que la largeur et la hauteur seront ne dépassez jamais les limites de votre console. (Exemple: fenêtre Windows 80x25 cmd)
Production
La sortie de votre programme / fonction doit être imprimée à l'écran ou renvoyée par une fonction. Pour chaque exécution de votre programme, un ensemble différent de canaux doit être généré.
Cas de test
Les cas de test suivants sont tous des exemples aléatoires de sorties valides
f(4, 3, 3)
│
─┘
│
f(5, 3, 3)
│
─┘┌
│
f(6, 3, 3)
─│
─┘┌
│
f(7, 3, 3)
──
─┘┌
│
De toute évidence, plus il y a de tiques, plus il devient difficile de prouver la validité de votre programme. Par conséquent, la publication d'un gif de votre sortie en cours d'exécution sera préférée. Si cela n'est pas possible, veuillez publier une version de votre code qui comprend l'impression de la sortie. De toute évidence, cela ne comptera pas dans votre score.
Règles
- Ceci est le code-golf , le plus petit nombre d'octets gagne
- Des échappatoires standard s'appliquent
- Si vous utilisez les caractères de canal unicode dans votre code source, vous pouvez les compter comme un seul octet
C'est un défi assez difficile qui peut éventuellement être résolu de nombreuses manières créatives, vous êtes encouragé à écrire une réponse dans une langue plus verbeuse même s'il existe déjà des réponses dans de courts esolangs. Cela créera un catalogue des réponses les plus courtes par langue. Upvotes bonus pour les gifs colorés fantaisie;)
Bon golf!
Avertissement: je suis conscient que les caractères Unicode ne sont pas ASCII, mais en l'absence d'un meilleur nom, je l'appelle simplement de l'art ASCII. Les suggestions sont les bienvenues :)