объяснение
Идеальное перемешивание - это когда колода карт делится ровно пополам, а карты из каждой колоды чередуются. Оригинальные нижние карты и оригинальная верхняя карта должны быть сохранены после идеального перемешивания.
После 8 совершенных перетасовок стандартная колода из 52 карт возвращается в исходный порядок.
Вызов
Напишите программу, которая отображает состояние колоды карт, когда она проходит 8 последовательных совершенных перемешиваний. Вы можете использовать любое удобочитаемое представление колоды при условии, что оно отображает номер и масть каждой карты в колоде в последовательном порядке. Он должен отображать представление всех карт для всех девяти штатов.
Это код гольф , поэтому выигрывает самое короткое решение.
Пример вывода
Вот пример выходных данных, созданных в этом примере реализации в 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
источник
Ответы:
J,
66655452504743 знаковВыход:
Я вынужден все больше и больше в учебниках и справочниках J, чтобы оставаться здесь впереди. : -S
источник
AS
и последняя всегдаKH
.Хаскелл, 103
Выход:
Не знаю, есть ли здесь какие-нибудь проблемы с UTF-8, не стоит ... это шестнадцатеричный дамп программы
и первой строки вывода
( Юникод игральные карты )
источник
Python 2, 79 символов
Вывод немного уродливый, но я считаю, что он должен рассчитывать.
источник
product
!Python2, 104
Это похоже на решение Ev_Genus. Я ставлю костюм перед рангом, потому что это позволяет мне спасти персонажа.
Выход
источник
[r,'10'][r>"Q"]
изящный Я не думаю, что вам нужны неприятности во всем10
. С цитатами все будет в порядке.exec'print d;d=d[::2]+d[1::2];'*9
.sum
.APL (42)
Вывод идет сверху вниз, а не слева направо (но он все еще читается человеком, так что, я думаю, это не противоречит правилам).
Выход:
источник
К,
555351Побрил 2 символа, изменив представление символа на строку
выход
источник
(2;26)
на2 26
Рубин 1.9 (
959387)Выход:
источник
a=(0..51).map{|i|:A23456789TJQK[i/4]+:SCDH[i%4]}
pop
вместоslice!
6 символов и сохранять их.9.times{p a;a=a.zip(a.pop 26).flatten}
Python3,
180179Выводит строки как в задании.
Родной формат 151
Вывод как в версии Ruby.
источник
import
и*
: ideone.com/kQTbsGolfScript,
515046 символовЭтот код GolfScript дает следующий вывод (см. Здесь ):
источник
{...}%
на4*
.Perl, 91 символ
Какие-нибудь предложения по более краткому способу создания начальной колоды? Мой подход использует 2 замены для построения
$_
и затем глобальное совпадение в контексте списка для инициализации@_
.Перетасовки затем выполняется повторно
splice
ИНГ@_
на@a
и перемежения два списка сmap
задней в@_
.источник
Mathematica
13112912011410086 символовС помощью Mr.Wizard:
Выход:
источник
NestList[Riffle@@#~Partition~26&,#<>""&/@Tuples@Characters@{"A23456789TJQK","HDCS"},8]
StringJoin
.CJam, 34 байта
CJam новее, чем вопрос, поэтому этот ответ не конкурирует с зеленой галочкой, но я подумал, что это будет хорошей проблемой, чтобы попробовать в CJam.
Проверьте это здесь.
Выводит вывод как
объяснение
источник
A,2>
чтобы получить цифры, хорошее мышление!R , 97 байт
Сохранено несколько байтов с помощью удобной колоды
Попробуйте онлайн!
источник
/// , 753 байта
Попробуйте онлайн!
Использует пример выходных данных (он вполне подходит для этой цели) без конечных пробелов.
источник
05AB1E , 24 байта
Использует строчные карты для сохранения 2 байтов со сжатием, поскольку разрешен любой читабельный вывод.
Начальная / конечная колода:
Попробуйте онлайн (PS: использует устаревший TIO, потому что он намного быстрее. Однако все встроенные функции, которые использовались в этом ответе, одинаковы как в устаревшей версии Python, так и в Elixir в версии 05AB1E).
Объяснение:
Посмотрите эту подсказку 05AB1E (раздел Как сжимать строки, не являющиеся частью словаря? ), Чтобы понять, почему
.•-Ÿ•
есть"ajqk"
и.•ôì•
есть"cdhs"
.источник
Japt , 31 байт
Попытайся!
Хотя Japt имеет разумную функцию «чередовать два списка», у него нет отличной опции «разделить пополам». Вместо этого я решил сбросить колоду и просто отобразить эти шаги в обратном порядке.
Объяснение:
Я мог бы сохранить 2 байта, если бы мог использовать 1 для тузов вместо A, но ни один из других ответов не сделал этого
источник
Perl 6 , 69 байт
Попробуйте онлайн!
{ .say; .[flat ^26 Z 26..*] }
является анонимной функцией, которая печатает свой список аргументов, а затем возвращает идеальный случай перемешивания этого спискаxx 9
создает список, содержащий девять копий этой анонимной функции[o]
сокращает этот список с помощью оператора композиции функцийo
, создавая функцию, которая вызывает исходную анонимную функцию девять раз, передавая перемешанный список вниз на каждый уровень«A {2..10} J Q K»
представляет собой список рангов,<S C D H>
представляет собой список исков иX~
вырабатывает перекрестное произведение этих списков с помощью оператора конкатенации строк~
.источник