Wyjaśnienie
Idealnym tasowaniem jest sytuacja, w której talia kart jest dzielona dokładnie na pół, a karty z każdego stosu są na przemian przeplatane. Oryginalne dolne karty i oryginalna górna karta muszą zostać zachowane po doskonałym przetasowaniu.
Po 8 idealnych tasowaniach standardowa talia 52 kart powraca do pierwotnej kolejności.
Wyzwanie
Napisz program, który wyświetla stan talii kart, gdy przechodzi przez 8 kolejnych idealnych przetasowań. Możesz użyć dowolnej czytelnej dla człowieka reprezentacji talii, pod warunkiem, że wyświetla ona liczbę i kolor każdej karty w talii w kolejności sekwencyjnej. Musi wyświetlać reprezentację wszystkich kart dla wszystkich dziewięciu stanów.
To jest golf golfowy , więc wygrywa najkrótsze rozwiązanie.
Przykładowy wynik
Oto przykładowe dane wyjściowe wygenerowane przez tę przykładową implementację w JavaScript
AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH
AS,7D,AC,7H,AD,8S,AH,8C,2S,8D,2C,8H,2D,9S,2H,9C,3S,9D,3C,9H,3D,10S,3H,10C,4S,10D,4C,10H,4D,JS,4H,JC,5S,JD,5C,JH,5D,QS,5H,QC,6S,QD,6C,QH,6D,KS,6H,KC,7S,KD,7C,KH
AS,4C,7D,10H,AC,4D,7H,JS,AD,4H,8S,JC,AH,5S,8C,JD,2S,5C,8D,JH,2C,5D,8H,QS,2D,5H,9S,QC,2H,6S,9C,QD,3S,6C,9D,QH,3C,6D,9H,KS,3D,6H,10S,KC,3H,7S,10C,KD,4S,7C,10D,KH
AS,9S,4C,QC,7D,2H,10H,6S,AC,9C,4D,QD,7H,3S,JS,6C,AD,9D,4H,QH,8S,3C,JC,6D,AH,9H,5S,KS,8C,3D,JD,6H,2S,10S,5C,KC,8D,3H,JH,7S,2C,10C,5D,KD,8H,4S,QS,7C,2D,10D,5H,KH
AS,5S,9S,KS,4C,8C,QC,3D,7D,JD,2H,6H,10H,2S,6S,10S,AC,5C,9C,KC,4D,8D,QD,3H,7H,JH,3S,7S,JS,2C,6C,10C,AD,5D,9D,KD,4H,8H,QH,4S,8S,QS,3C,7C,JC,2D,6D,10D,AH,5H,9H,KH
AS,3S,5S,7S,9S,JS,KS,2C,4C,6C,8C,10C,QC,AD,3D,5D,7D,9D,JD,KD,2H,4H,6H,8H,10H,QH,2S,4S,6S,8S,10S,QS,AC,3C,5C,7C,9C,JC,KC,2D,4D,6D,8D,10D,QD,AH,3H,5H,7H,9H,JH,KH
AS,2S,3S,4S,5S,6S,7S,8S,9S,10S,JS,QS,KS,AC,2C,3C,4C,5C,6C,7C,8C,9C,10C,JC,QC,KC,AD,2D,3D,4D,5D,6D,7D,8D,9D,10D,JD,QD,KD,AH,2H,3H,4H,5H,6H,7H,8H,9H,10H,JH,QH,KH
AS,AD,2S,2D,3S,3D,4S,4D,5S,5D,6S,6D,7S,7D,8S,8D,9S,9D,10S,10D,JS,JD,QS,QD,KS,KD,AC,AH,2C,2H,3C,3H,4C,4H,5C,5H,6C,6H,7C,7H,8C,8H,9C,9H,10C,10H,JC,JH,QC,QH,KC,KH
AS,AC,AD,AH,2S,2C,2D,2H,3S,3C,3D,3H,4S,4C,4D,4H,5S,5C,5D,5H,6S,6C,6D,6H,7S,7C,7D,7H,8S,8C,8D,8H,9S,9C,9D,9H,10S,10C,10D,10H,JS,JC,JD,JH,QS,QC,QD,QH,KS,KC,KD,KH
źródło
Odpowiedzi:
J,
66655452504743 znakówWynik:
Muszę się coraz bardziej zmuszać do korzystania z samouczków i podręczników J, aby pozostać na czele. : -S
źródło
AS
i ostatnia jest przez cały czasKH
.Haskell, 103
Wynik:
Nie wiem, czy są tu jakieś problemy z UTF-8, nie powinieneś ... to zrzut heksowy programu
i pierwszego wiersza wyjściowego
( karty do gry w Unicode )
źródło
Python 2, 79 znaków
Wynik jest nieco brzydki, ale uważam, że powinien się liczyć.
źródło
product
!Python2, 104
Jest to podobne do rozwiązania Ev_Genus. Stawiam kolor przed rangą, ponieważ pozwala mi to uratować postać.
Wynik
źródło
[r,'10'][r>"Q"]
jest fajny. Nie sądzę, żebyś potrzebował backticków w okolicy10
. Cytaty byłyby w porządku.exec'print d;d=d[::2]+d[1::2];'*9
.sum
.APL (42)
Dane wyjściowe są z góry na dół zamiast z lewej-prawej (ale nadal są czytelne dla człowieka, więc chyba nie jest to niezgodne z regułami).
Wynik:
źródło
K,
555351Ogolono 2 znaki, zmieniając reprezentację symboli na ciąg znaków
wynik
źródło
(2;26)
na2 26
Ruby 1.9 (
959387)Wynik:
źródło
a=(0..51).map{|i|:A23456789TJQK[i/4]+:SCDH[i%4]}
pop
zamiastslice!
6 znaków i zapisać je.9.times{p a;a=a.zip(a.pop 26).flatten}
Python3,
180179Wyprowadza wiersze jak w zadaniu.
Format macierzysty 151
Wyjście jest jak w wersji Ruby.
źródło
import
i*
: ideone.com/kQTbsGolfScript,
515046 znakówTen kod GolfScript daje następujące dane wyjściowe (patrz tutaj ):
źródło
{...}%
przez4*
.Perl, 91 znaków
Wszelkie sugestie dotyczące bardziej zwięzłego sposobu budowy początkowej talii? Moje podejście wykorzystuje 2 podstawienia do zbudowania,
$_
a następnie globalne dopasowanie w kontekście listy w celu zainicjowania@_
.Tasowanie odbywa się wtedy przez wielokrotnie
splice
ing@_
na@a
i przeplatania dwóch list zmap
powrotem do@_
.źródło
Mathematica
13112912011410086 znakówZ pomocą Mr.Wizard:
Wynik:
źródło
NestList[Riffle@@#~Partition~26&,#<>""&/@Tuples@Characters@{"A23456789TJQK","HDCS"},8]
StringJoin
.CJam, 34 bajty
CJam jest nowszy od pytania, więc ta odpowiedź nie konkuruje o zielony znacznik wyboru, ale pomyślałem, że fajnie byłoby spróbować w CJam.
Sprawdź to tutaj.
Drukuje dane wyjściowe jak
Wyjaśnienie
źródło
A,2>
dostawać liczby, dobre myślenie!R , 97 bajtów
Zaoszczędzono kilka bajtów dzięki wygodnej talii nieczynnej
Wypróbuj online!
źródło
/// , 753 bajtów
Wypróbuj online!
Wykorzystuje przykładowe wyjście (jest całkiem odpowiednie do tego celu) bez końcowych spacji.
źródło
05AB1E , 24 bajty
Używa małych liter, aby zaoszczędzić 2 bajty z kompresją, ponieważ dozwolone są wszelkie dane wyjściowe czytelne dla człowieka.
Talia początkowa / końcowa to:
Wypróbuj online (PS: używa starszego TIO, ponieważ jest ono znacznie szybsze. Wszystkie wbudowane elementy użyte w tej odpowiedzi są jednakowe zarówno w starszej wersji Pythona, jak i w wersji EABRAIR przepisującej wersję 05AB1E.)
Wyjaśnienie:
Zobacz moją wskazówkę 05AB1E (sekcja Jak kompresować ciągi znaków nie będące częścią słownika? ), Aby zrozumieć, dlaczego
.•-Ÿ•
jest"ajqk"
i.•ôì•
jest"cdhs"
.źródło
Japt , 31 bajtów
Spróbuj!
Chociaż Japt ma sensowną funkcję „przeplatania dwóch list”, nie ma świetnej opcji „podziel na pół”. Zamiast tego zdecydowałem się przetasować talię i po prostu wyświetlić te kroki w odwrotnej kolejności.
Wyjaśnienie:
Mógłbym zapisać 2 bajty, gdybym mógł użyć 1 dla asów zamiast A, ale żadna inna odpowiedź tego nie zrobiła
źródło
Perl 6 , 69 bajtów
Wypróbuj online!
{ .say; .[flat ^26 Z 26..*] }
jest anonimową funkcją, która drukuje listę argumentów, a następnie zwraca idealne przetasowanie tej listyxx 9
tworzy listę zawierającą dziewięć kopii tej anonimowej funkcji[o]
zmniejsza tę listę za pomocą operatora kompozycji funkcjio
, tworząc funkcję, która wywołuje oryginalną funkcję anonimową dziewięć razy, przekazując listę losową w dół na każdym poziomie«A {2..10} J Q K»
jest listą stopni,<S C D H>
jest listą kolorów iX~
tworzy iloczyn krzyżowy tych list z operatorem konkatenacji łańcucha~
.źródło