Tasowanie talii kart jest trudne dla dzieci, dlatego muszą wymyślić sposoby uzyskania rozsądnej, dobrze przetasowanej talii tak prosto, jak to możliwe.
Jednym ze sposobów osiągnięcia tego, który daje dość dobre wyniki, jest:
- Wyjmij górną kartę i włóż ją losowo do talii
- Wyjmij dolną kartę i włóż ją w losowe miejsce w talii
- Kontynuuj, aż uwierzysz, że jest wystarczająco dobry.
Pamiętaj, że nigdy nie należy wkładać karty w górne lub dolne miejsce, należy ją umieścić gdzieś w talii.
Zamiast tasowanie kart, będziemy losowe znaki alfanumeryczne: 0-9
, A-J
, a-j
, q-z
i Q-Z
.
Zacznij od ciągu pokazanego poniżej i potasuj znaki w sposób opisany powyżej. Możesz wybrać, czy chcesz dalej tasować nieskończenie, czy tasować karty 100 rund (100 kart od góry i 100 kart od dołu).
0123456789abcdefghijqrstuvwxyzABCDEFGHIJQRSTUVWXYZ
Wyzwanie polega na wyświetleniu tasowanych postaci. Każde „tasowanie” (wyjmowanie i wkładanie karty) zajmuje od 0,25 do 0,35 sekundy.
Poniższy gif pokazuje przykładowy wynik:
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach.
„Dlaczego nie masz a-t
zamiast a-j
, q-z
?” Bo to zilustruje kolory kart, a nie tylko postaci. I tak, jest 5 kolorów.
Uwaga: postanowiłem przestać używać znacznika wyboru na wyzwaniach Code-Golf . Odpowiednie posty na meta tutaj i tutaj .
0-9
,A-J
,a-j
,q-z
iQ-Z
, zgodnie z pytaniem.Odpowiedzi:
JavaScript (ES6),
192188185 bajtówEdycja: Zapisano 4 bajty dzięki @ L.Serné. Zaoszczędzono 3 bajty dzięki @Arnauld.
źródło
e^=1
do pustych nawiasówMath.random
wywołania. Możesz także zmienić textContent na innerHTML, ponieważ nie przekazujesz żadnych specjalnych znaków. Możesz również ustawiće
na 0 w trakcietoLowerCase
połączenia.e
. Możesz po prostu użyćs
. (Ponieważ('some_string'^1) === 1
)MATL,
625856 bajtów2 bajty zapisane dzięki @Luis
Ta wersja będzie działać przez czas nieokreślony. Wypróbuj demo online w MATL Online , eksperymentalnym tłumaczu online , który obsługuje dynamiczne wyjście. Będzie działać przez 30 sekund (twardy limit narzucony przez wersję online), jeśli nie zostanie zabity jako pierwszy.
Wyjaśnienie
źródło
Perl, 117 bajtów
Aby uruchomić:
Objaśnienia:
-
@F=(0..9,a..j,"q"..z,A..J,Q..Z)
tworzy początkową talię i przechowuje ją@F
.-
{...;redo}
działa...
wiecznie.-
splice@F,++$|+rand(@F-2),0,++$v%2?shift@F:pop@F
alternatywnie wyjmij pierwszy / ostatni element z talii i włóż w losowej pozycji (zwiększając$|
, aby wydruki nie były buforowane),-
print"\r",@F
drukuje talię,-
select$,,$,,$,,.3
śpi przez 0,3 sekundy (Perlsleep
nie może spać krócej niż 1 sekunda),źródło
0..9
, a nie1..9
, a twoja początkowa talia również jestPython 3,
199196192186 bajtówZaoszczędź 4 bajty dzięki TuukkaX i 6 bajtów dzięki FlipTack!
Używa funkcji Pythona 3
print
do tłumienia nowej linii, krótszej niż Python 2sys.stdout.write
.Wykorzystuje zmienną flip-flop do przełączania między przesunięciem górnej i dolnej karty.
Nie golfowany:
źródło
import random,time
krótszy?C,
290285 bajtówNie golfowany:
źródło
Szybki, 288 bajtów
Gra w Swift jest zawsze wyzwaniem, ponieważ jednym z jej atutów jest ekspresja.
źródło
Rubinowy (
138119 bajtów)Nie tak krótki jak @PaulPrestidge, ale przynajmniej rozumiem to. Wspaniale jest też dowiedzieć się, że rubin jest jak niekończący się tunel niesamowitości!
źródło
Rubin,
111101 znakówPętle nieskończone.
źródło
Noodel , niekonkurencyjne 41 bajtów
Spróbuj:)
Jak to działa
źródło
bash, 170 bajtów
tutaj „^” (w pierwszym wierszu) reprezentuje
ctrl-m
: wprowadzony w wierszu polecenia jakoctrl-v
enter
lub w edytorze zgodnie z działaniem edytora (przy założeniu, że edytor działa)źródło