Twój ptak swędzi od niektórych ćwiczeń i ma dość ciągłego trzymania się w pozycji statycznej. Napisz program, który wyświetli losowo tańczącego ptaka ascii, aktualizując co 100ms * n lub 200ms * n w zależności od ruchu tanecznego. Ptak zawsze zaczyna się od tańca <(")>
.
Program powinien zaakceptować jedno wejście, które jest liczbą pomnożoną przedziału uśpienia przez ( n >= 0 && n <= 50
).
100ms ruchów
^(")v
v(")^
^(")^
v(")v
200ms Moves
(>")>
<(")>
<("<)
Dodatkowe informacje
- Losowość nie musi być jednolita, ale każdy ruch taneczny powinien mieć uzasadnioną szansę na wystąpienie (co najmniej 1 na 60 wydaje się sprawiedliwy, jest OK, jeśli ten sam ruch występuje dwa razy z rzędu)
- Jednocześnie powinien być wyświetlany tylko jeden ptak, a nie wiele ptaków
- Końcowe białe znaki są dozwolone (ale inne końcowe znaki nie są)
- Ptak powinien być wystawiony przed snem
Przykład w Python 3
import random, time, sys
birds = """(>")>
<(")>
<("<)
^(")v
v(")^
^(")^
v(")v"""
birds = birds.split()
interval = int(input("Sleep for 100ms*"))
selection = -1
while True:
if selection == -1:
selection = 1
else:
selection = random.randint(0, len(birds)-1)
sys.stdout.write('\r'+birds[selection])
if selection > 2:
time.sleep(0.1*interval)
else:
time.sleep(0.2*interval)
Zwycięski
- To jest golf golfowy, więc najmniej bajtów wygrywa!
\r
ucieczka Lua wydaje się działać jak\n
. Nie mogę teżos.execute("cls")
tam użyć . @redstarcoderOdpowiedzi:
MATL , 53 bajty
Ruchy są jednolicie losowe.
Poniżej znajduje się przykładowy przebieg z
n = 2
. Lub spróbuj w MATL Online! (Tłumacz jest eksperymentalny. Jeśli nie działa, spróbuj ponownie nacisnąć „Uruchom” lub odświeżyć stronę).Wyjaśnienie
źródło
Matlab,
125117 bajtówNiestety nie można tego wyświetlić w TIO, ponieważ nie ma „streamingu” wyjścia. Oto gif dla danych wejściowych
1
zamiast:Dzięki @LuisMendo za -8 bajtów!
źródło
*> <> ,
103101 bajtówWypróbuj tutaj! (napisz
n
na początkowym stosie, inaczej pojawi się błąd)Zdecydowałem się rzucić wyzwanie na moje wyzwanie, ponieważ nie było odpowiedzi poniżej 100 bajtów. Umieść
n
na stosie i gotowe! Spowoduje to ponowne użycie(")
znaków do zapisania niektórych bajtów.Wyjaśnienie
Inicjalizacja
<vD[3'(")'
Tutaj przechowujemy
(")
do późniejszego wykorzystania.Wybór tańca
Jest to często wykonywane, aby wybrać rodzaj tańca, który będziemy generować.
Jest
v
powyżejx
i<
na prawo od niego zbyt. Powodują onex
ponowne uruchomienie, jeśli spróbuje przesunąć adres IP w złym kierunku.Wygeneruj taniec 100ms
Tutaj generujemy i generujemy jeden ze 100ms ruchów tanecznych.
43C - Wygeneruj „^” lub „v”
Jest to prosta funkcja, która generuje „^” lub „v”, a następnie zwraca. Działa podobnie do selektora tańca, gdzie ma instrukcje,
x
aby zapewnić, że IP porusza się tylko w lewo lub w prawo.Generuj taniec 200ms
To kolejny, który zaczyna się od
x
. Zostanie on podzielony na dwie sekcje:<(")>
i drugą(>")> and <("<)
, ponieważ są to dwie odrębne sekcje ix
to jedyna rzecz, którą dzielą.<(")>
Zasadniczo robi to początek
generate 100ms dance
rutyny, ale wypełnia ręce ptaka jak><
przypadkowe^v
połączenie.n
Tym razem mnoży się również przez dwa. To sprawia, że wszystko jest skonfigurowane do użyciagenerate 100ms dance
procedury, aby wyprowadzić cały ptak i zamiast tego poczekać 200 ms.(>")>
i<("<)
To małe wyjaśnienie dotyczy generowania
(>")>
i<("<)
generowania, chociażx
może wysyłać adres IP poza nim (wyjaśniony poniżej).źródło
JavaScript (ES6) + HTML5:
118116 + 8 = 124 bajtyJavaScript: 119 bajtów
Używam milisekund od epoki do generowania liczb losowych. Teoretycznie zawsze generowałoby to ten sam (zbiór) numer (y), ale test na moim komputerze dał mi dość losowy wynik (większość liczb wyglądała mniej więcej tak samo). Również korzystanie z faktu, że elementy HTML z identyfikatorem są dodawane do globalnego obiektu okna w JavaScript, więc
document.getElementById()
nie jest potrzebne.HTML: 8 bajtów
Pomijam cytaty tutaj i nie zamykam
b
tagu. To nie jest poprawny HTML, ale mimo to wszystkie przeglądarki automatycznie zamykają tag. Zrobiłem to odważnie, ponieważb
jest to jednoznakowy element HTML i dlatego, że taniec mojego ptaka zasługuje na zauważenie.źródło
PowerShell ,
124117 bajtów(Dzięki TimmyD )
Wypróbuj online! (Nie żeby działało w TIO ...)
źródło
$b
i użyć pseudo-trójki, aby zejść do 117 -for(){(-split'^(")v v(")^ ^(")^ v(")v (>")> <(")> <("<)')[($i=0..6|random)];sleep -m((100,200)[$i-gt3]*$args[0]);cls}
... Myślę, że krótszy jest możliwy; Nadal się na to szturcham.Noodel , niekonkurencyjne 67 bajtów
To wyzwanie było bardzo trudne dla Noodel, ponieważ nie ma żadnych inteligentnych operatorów arytmetycznych lub porównawczych. Ale po wykonaniu tego wyzwania myślę, że Noodel jest gotowy na pierwsze wydanie.
Spróbuj:)
Jak to działa
64 bajty
Oto wersja, która działa jak fragment kodu.
źródło
Python, 157 bajtów
Próbowałem też to zrobić bez sztuki ascii z kurczaka, ale to było o wiele dłużej.
źródło
Rubinowy, 97 + 1 = 98 bajtów
+1 bajt z
-n
flagi.źródło
Clojure,
185178 bajtów+18 bajtów, ponieważ nie zaczynało się od
<(")>
.-7 bajtów poprzez wstawienie
birds
i pozbycie sięlet
.Po prostu dzieli ptaki na spacje, wybiera losowy indeks od 0-6, wyświetla wybranego ptaka, a jeśli wybrany wskaźnik jest większy niż 2, czeka na 100 ms, w przeciwnym razie 200 ms.
Clojure naprawdę potrzebuje
split
metody strunowej w rdzeniu.Nie golfowany:
źródło