Wyzwanie:
W hipotetycznym scenariuszu licznik czasu dla wyścigu ma losowe odstępy między liczeniami, aby zapobiec przedwczesnemu uruchomieniu, np.
3 (0.82 seconds pass), 2 (0.67 seconds pass), 1
Wejście:
nic
Wynik:
Napisz program (lub funkcję), który drukuje 3 liczby w losowym przedziale czasowym od 0,50 sekundy do 1 sekundy między każdą liczbą.
Uwaga:
- Program musi wypisać każdą liczbę (3, 2, 1) z losowym ( dowolna liczba między 0,50 a 1 do setnych; brak kodowania) przedział czasu między nimi. Precyzja losowego interwału musi wynosić setki (np. 0,52). Nie musisz podawać interwału, tylko liczbę.
- Jak wyjaśnił @JoKing, mam na myśli jednakowo losowy (możesz użyć pseudolosowego generatora swojego języka.
- Jak wyjaśniło wiele osób, naprawdę mam na myśli dowolną liczbę 2-dziesiętną między 0,5 a 1. (0,50, 0,51 itd., Aż do 0,98, 0,99, 1)
To jest golf golfowy , więc wygrywa program o najniższej liczbie bajtów.
Odpowiedzi:
05AB1E , 12 bajtów
Wypróbuj online!
Wypróbuj z włączonym debugowaniem: Wypróbuj online!
źródło
SmileBASIC,
6462 bajtówNiestety nie mogę użyć opcji OCZEKIWANIA, ponieważ obsługuje ona tylko interwały 1/60 sekundy (nic mniej zwykle nie jest przydatne, ponieważ dane wejściowe / wyjściowe są aktualizowane tylko raz na klatkę)
Wymaga to dostosowania w zależności od prędkości systemu, na którym działa, więc może być niepoprawne (46 bajtów):
Nieprawidłowa wersja WAIT (36 bajtów):
źródło
R ,
4644 bajtówdo faktycznego odliczania:
Wypróbuj online!
interwał drukowania, gdy początkowo źle zrozumiałem wyzwanie (46 bajtów) Dziękujemy Giuseppe za zapisanie 2 znaków.
Wypróbuj online!
źródło
runif()
domyślnie ma lewy i prawy punktów końcowych jak0
i1
odpowiednio, więcrunif(1,.5)
powinien działać tak samo na -2 bajtów w obu.Python 2 , 58 bajtów
Wypróbuj online!
Stworzyłem bardzo prosty generator liczb losowych, który zajmuje czas początkowy (tak jak wiele osób).
Ulepszenia
źródło
1-time()%.5
powinien załatwić sprawę. (Przy okazji, potrzebujesz[3,2,1]
)for a in'321'
RatujeAPL + WIN, 37 bajtów
źródło
Java 8, 86 bajtów
Drukuje bez ogranicznika. Jeśli nie jest to dozwolone, zmienia
print
się na +2 bajty, zmieniając naprintln
(separator nowej linii).Wypróbuj online.
Udowodnij, że odstępy są w prawidłowym zakresie
[500, 1000)
ms.Wyjaśnienie:
źródło
Python 3, 122 bajty
Wypróbuj online!
źródło
JavaScript (Node.js) ,
756560 bajtówWypróbuj online!
źródło
*1000%500+500
? Możesz po prostu użyć*500+500
.Perl 5 , 39 bajtów
Stopniowo zmniejszono do 39 bajtów, dzięki @ jonathan-allan + @xcali.
Wypróbuj online!
źródło
1-rand(.5)
działać?1-rand.5
też użyć .Chip
-wingjj
, 33 bajtyWypróbuj online!
W chip, nie możemy czekać na dokładnie 1 / 100 sekundy, ale możemy czekać do 1 / 256 sekundy, tak że używamy tutaj.
p
Pytany, zatrzyma realizacji dla głowicy stosu (jeden bajt) * 1 / 256 sek. W każdym cyklu, zawsze ustawione na wysoki bitu stosu ( 128 / 256 ) i ustawienie wszystkich innych bitów stosu losowo (przy?
„e). Daje to równomierny rozkład między 0,50 a 1,00 sekundy.Niektóre argumenty
-w
i-gjj
, określ, że wejście, zamiast używania standardowego wejścia, powinno być odliczaniem od0xFF
do0x00
(następnie zawijaniem). Używamy tego, aby zapewnić niskie dwa bity do odliczania. Wszystkie inne bity wyjściowe pozostają stałe (przy wartości odpowiadającej ASCII0
).Wreszcie, gdy skończymy, kończymy program za pomocą
t
, zapobiegając pauzie po ostatnim numerze.źródło
[GAWK], 57 bajtów
Wypróbuj online!
źródło