Herausforderung:
In einem hypothetischen Szenario hat der Countdown-Timer für ein Rennen zufällige Intervalle zwischen den Zählungen, um ein vorzeitiges Starten zu verhindern, z
3 (0.82 seconds pass), 2 (0.67 seconds pass), 1
Eingang:
nichts
Ausgabe:
Schreiben Sie ein Programm (oder eine Funktion), das die 3 Zahlen mit einem zufälligen Zeitintervall von 0,50 Sekunden bis 1 Sekunde zwischen jeder Zählung druckt.
Hinweis:
- Das Programm muss jede Zahl (3, 2, 1) mit dem zufälligen Zeitintervall ( jede Zahl zwischen 0,50 und 1 bis Hundertstel; keine Hardcodierung) zwischen jeder Zahl ausgeben . Die Genauigkeit des Zufallsintervalls muss Hunderte betragen (z. B. 0,52). Sie müssen nicht das Intervall ausgeben, sondern nur die Anzahl.
- Wie @JoKing klarstellte, meine ich einheitlich zufällig (Sie können den Pseudozufallsgenerator Ihrer Sprache verwenden.
- Wie viele Leute klargestellt haben, meine ich wirklich jede 2-Dezimalzahl zwischen 0,5 und 1. (0,50, 0,51 usw. bis 0,98, 0,99, 1)
Dies ist Code-Golf , also gewinnt das Programm mit der niedrigsten Byteanzahl.
Antworten:
05AB1E , 12 Bytes
Probieren Sie es online aus!
Probieren Sie es mit aktiviertem Debug aus: Probieren Sie es online aus!
quelle
SmileBASIC,
6462 BytesLeider kann ich WAIT nicht verwenden, da dies nur Intervalle von 1/60 Sekunde unterstützt (alles andere ist normalerweise nicht nützlich, da die Eingabe / Ausgabe nur einmal pro Frame aktualisiert wird).
Dies erfordert eine Anpassung in Abhängigkeit von der Geschwindigkeit des Systems, auf dem es ausgeführt wird, sodass es möglicherweise nicht gültig ist (46 Byte):
Ungültige WAIT-Version (36 Byte):
quelle
R ,
4644 Bytesfür einen tatsächlichen Countdown:
Probieren Sie es online aus!
Druckintervall, da ich die Herausforderung anfangs falsch verstanden habe (46 Byte) Vielen Dank an Giuseppe für das Speichern von 2 Zeichen.
Probieren Sie es online aus!
quelle
runif()
hat in der Standardeinstellung die linken und rechten Endpunkte wie0
und1
jeweils sorunif(1,.5)
sollte für -2 Bytes in beide arbeiten.Python 2 , 58 Bytes
Probieren Sie es online aus!
Ich habe einen sehr einfachen Zufallszahlengenerator erstellt, der die Startzeit in Anspruch nimmt (wie viele Leute auch).
Verbesserungen
quelle
1-time()%.5
sollte den Trick machen. (Sie brauchen[3,2,1]
übrigens)for a in'321'
spart zwei weitereAPL + WIN, 37 Bytes
quelle
Java 8, 86 Bytes
Druckt ohne Trennzeichen. Wenn dies nicht zulässig ist, werden +2 Bytes durch Ändern
print
inprintln
(Trennzeichen für neue Zeilen) verwendet.Probieren Sie es online aus.
Beweisen Sie, dass die Intervalle im richtigen Bereich von
[500, 1000)
ms liegen.Erläuterung:
quelle
Python 3, 122 Bytes
Probieren Sie es online aus!
quelle
JavaScript (Node.js) ,
756560 ByteProbieren Sie es online aus!
quelle
*1000%500+500
? Sie können einfach verwenden*500+500
.Perl 5 , 39 Bytes
Dank @ jonathan-allan + @xcali schrittweise auf 39 Byte reduziert.
Probieren Sie es online aus!
quelle
1-rand(.5)
funktionieren?1-rand.5
.Chip
-wingjj
, 33 BytesProbieren Sie es online aus!
In Chip, können wir nicht genau warten 1 / 100 eine Sekunde, aber wir können warten , 1 / 256 eine Sekunde, so dass wir das hier verwenden.
p
Wenn bat, wird die Ausführung für den Stapelkopf pausieren (ein Byte) * 1 / 256 Sekunden. Bei jedem Zyklus, wir immer das hohe Bit des Stapels (Set 128 / 256 ) und stellen Sie alle anderen Stapel Bits zufällig (mit dem?
‚s). Dies ergibt eine gleichmäßige Verteilung zwischen 0,50 und 1,00 Sekunden.Einige der Argumente
-w
und-gjj
geben an, dass die Eingabe anstelle von stdin ein Countdown von0xFF
bis0x00
(dann ein Umbruch) sein soll. Wir verwenden dies, um die niedrigen zwei Bits für den Countdown bereitzustellen. Alle anderen Ausgangsbits bleiben konstant (auf dem Wert, der ASCII entspricht0
).Sobald wir fertig sind, beenden wir das Programm mit
t
und verhindern eine Pause nach der letzten Nummer.quelle
[GAWK], 57 Bytes
Probieren Sie es online aus!
quelle