To wyzwanie jest inspirowane tą odpowiedzią na Ask Ubuntu Stack Exchange.
Wprowadzenie
Pamiętasz wygaszacz ekranu Windows ME z potokami ? Czas przywrócić nostalgię!
Wyzwanie
Powinieneś napisać program lub funkcję, która wyświetli reprezentację wygaszacza ekranu ASCII. W wygaszaczu ekranu powinna znajdować się pojedyncza rura, która będzie rosła w pół losowych kierunkach.
Początek rury zostanie losowo umieszczony na dowolnej krawędzi ekranu, a element rury powinien być prostopadły do granicy (pierwsze narożne rury mogą być poziome lub pionowe). Przy każdym kleszczu rura będzie rosła w kierunku, w którym jest skierowana (poziomo / pionowo), przy 80%okazji lub rzutu rożnego przy 20%okazji.
Reprezentacja rur
Do utworzenia potoku zostanie użytych 6 znaków Unicode
─ \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
Wejście
Program / funkcja pobierze 3 wartości wejściowe, które można zebrać na podstawie parametrów funkcji lub zapytać użytkownika.
- Ilość kleszczy
- Szerokość ekranu
- Wysokość ekranu
Ilość kleszczy
Dla każdego tiku do ekranu zostanie dodany kawałek rury. Rury zastąpią stare elementy rur, jeśli odradzają się w tej samej pozycji.
Na przykład weź ekran o rozmiarze 3x3
ticks == 3
─┐
┘
ticks == 4
─┐
└┘
ticks == 5
│┐
└┘
Za każdym razem, gdy rura wychodzi z ekranu, jak w ostatnim przykładzie z 5 tyknięciami, nowa rura odradza się na losowej granicy. Na przykład:
ticks == 6
│┐
└┘
─
Nowa rura powinna mieć 50% szansy, że będzie pozioma lub pionowa.
Szerokość / wysokość ekranu
Szerokość i wysokość ekranu można połączyć w jedną wartość, jeśli jest to preferowane w wybranym języku. Szerokość i wysokość ekranu zawsze będą miały minimalną wartość 1 i maksymalną wartość 255. Jeśli wybrany język obsługuje ekran konsoli lub wyjścia, który jest mniejszy niż siatka znaków 255 x 255, możesz założyć, że szerokość i wysokość będą nigdy nie przekraczaj granic konsoli. (Przykład: okno systemu Windows 80x25 cmd)
Wynik
Dane wyjściowe programu / funkcji powinny zostać wydrukowane na ekranie lub zwrócone z funkcji. Dla każdego uruchomienia programu należy wygenerować inny zestaw potoków.
Przypadki testowe
Poniższe przypadki testowe są przypadkowymi przykładami prawidłowych wyników
f(4, 3, 3)
│
─┘
│
f(5, 3, 3)
│
─┘┌
│
f(6, 3, 3)
─│
─┘┌
│
f(7, 3, 3)
──
─┘┌
│
Oczywiście, im więcej tyknięć miało miejsce, tym trudniej jest udowodnić ważność twojego programu. Dlatego preferowane będzie opublikowanie gif z uruchomionym wyjściem. Jeśli nie jest to możliwe, proszę opublikować wersję kodu, która obejmuje wydruk danych wyjściowych. Oczywiście nie będzie to wliczane do twojego wyniku.
Zasady
- To jest golf golfowy , wygrywa najmniejsza ilość bajtów
- Obowiązują standardowe luki
- Jeśli użyjesz znaków potoku Unicode w kodzie źródłowym, możesz je policzyć jako jeden bajt
Jest to dość trudne wyzwanie, które można rozwiązać na wiele kreatywnych sposobów, zachęcamy do napisania odpowiedzi w bardziej szczegółowym języku, nawet jeśli odpowiedzi są już w krótkich esolangach. Spowoduje to utworzenie katalogu najkrótszych odpowiedzi dla każdego języka. Dodatkowe głosy za fantazyjne kolorowe gify;)
Miłej gry w golfa!
Uwaga: Zdaję sobie sprawę, że znaki Unicode nie są ASCII, ale ze względu na brak lepszej nazwy po prostu nazywam to sztuką ASCII. Sugestie są mile widziane :)



