Первая волшебная карточная уловка, которую я когда-либо изучал, будучи ребенком, была следующей:
- Имейте 1 колоду карт, где рисунок на спине не является вертикально симметричным.
- Организуйте все карты в одном направлении.
- Попросите человека: «Выберите карту, любую карту, запомните ее и верните вам».
- Продолжайте помещать это в колоду (в неправильном направлении).
- Перемешайте энергично, создавая иллюзию, что вы не будете знать, где находится их карта.
- Изготовить их карту к их изумлению.
Этот трюк, по-видимому, в настоящее время немного лишен блеска в природе, однако он делает хороший вызов. Напишите программу, которая при отсутствии ввода выводит случайно перетасованную колоду карт, при этом одна из выбранных случайным образом карт переворачивается. Однако, когда вход представляет собой колоду карт с одной перевернутой картой, необходимо вывести перевернутую карту (в правильном порядке).
Колода карт
Колода карт определяется как:
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,4C,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]
Карта определяется как ее номер, а затем первая буква ее масти. Обратная сторона карты - полная противоположность, первая буква ее масти, за которой следует число.
Нарисованная карта
Например, если бы карта, которую мы случайно выбрали для реверса, была 4 of Clubs (4C)
, то мы бы в итоге (без тасования, очевидно):
[2S,3S,4S,5S,6S,7S,8S,9S,TS,JS,QS,KS,AS,
2D,3D,4D,5D,6D,7D,8D,9D,TD,JD,QD,KD,AD,
2H,3H,4H,5H,6H,7H,8H,9H,TH,JH,QH,KH,AH,
2C,3C,C4,5C,6C,7C,8C,9C,TC,JC,QC,KC,AC]
Перемешивание
Затем после перетасовки:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]
Это действительный вывод при пустом вводе.
The Deck Input
Однако, наоборот, когда наша программа получает вышеуказанный вывод в качестве входных данных, она должна выводить 4C
. То есть для ввода:
[2H,2C,6S,4D,QH,6C,TD,8C,7H,5H,C4,3D,7S,7C,KC,QD,QC,JS,7D,6D,2S,5C,KD,3C,3S,2D,8H,KH,6H,AH,8S,JH,TS,AD,5D,9H,4H,JD,QS,4S,JC,3H,8D,TC,AS,TH,KS,AC,9C,9S,5S,9D]
Вы перебираете, пока не найдете перевернутую карту, и возвращаете ее обратно в нормальное состояние. Итак, здесь мы нашли бы C4
, знали, что C не является числом, и возвращали его как 4C
, что правильно.
правила
- Вы не можете загружать колоду из каких-либо внешних источников.
- Пустой ввод должен привести к случайному перемешиванию колоды с 1 случайной картой в обратном порядке.
- Колода карт с 1 картой, обращенной в качестве ввода, должна привести к обратной карте.
- Любые другие входы могут привести к взрывным ламам, едущим на сигвеях через футуристическую трубу.
- Или что-нибудь еще, в этом отношении.
- Как выбранная карта, так и порядок перемешивания должны быть равномерно случайными.
- То есть все карты имеют равные шансы быть выбранными для реверса.
- То есть все комбинации карт имеют одинаковый шанс появления.
- Вы можете использовать
SHCD
илиshcd
для костюмов, но будьте последовательны:- Если вы выбираете заглавные костюмы (
SHCD
), вы также должны использоватьTJQKA
. - Если вы выбираете строчные буквы (
shcd
), вы также должны использоватьtjqka
.
- Если вы выбираете заглавные костюмы (
- Это код-гольф , победитель младших байтов.
источник
Ответы:
Retina ,
616059 байтПопробуйте онлайн! Изменить: Сохранено
12 байта благодаря @MartinEnder. Объяснение:Удалите все необратимые карты. Это должно оставить одну перевернутую карту или нет карт.
Если вход (сейчас) пуст, создайте колоду карт.
Произвольно выберите одну карту и поверните ее в обратном направлении (не переворачивает одну перевернутую карту).
Перемешайте карту (и).
источник
05AB1E , 29 байт
Попробуйте онлайн!
источник
1
и другоеa
.Y9ŸJ
как9LJ
PowerShell v2 или новее, 175 байт
Длинная версия:
Использование:
Создайте перемешанную колоду и сохраните ее в переменной:
Проверьте переменную по желанию, например
Верните колоду обратно в скрипт:
источник
Python 2 , 175 байт
Попробуйте онлайн! пустой ввод обозначается как
[]
источник
> <> ,
215193 байтаПопробуйте онлайн!
Принимает ввод как неразделенные карты и выводит как то же самое (например,
KCAC5C6S...
)Чтобы упростить тестирование, вот версия, в которой ввод вводится через запятую, а вывод - как перевод строки.
Все
x0
это просто попытка создать полуоднородный генератор случайных чисел. Больше из них увеличивает диапазон возможных значений, а наоборот - меньше. 10 из них - то, где я оценил это как достаточно случайное.Обратите внимание, что это следует правилам в этом:
Но не все перемешанные комбинации являются возможными выходами (и на самом деле, подавляющее большинство не являются).
источник
Желе , 26 байт
Монадическая ссылка, принимающая список списков символов (заглушка из 0 карт или полная колода из 52 карт с перевернутой одной картой) и возвращающая список списков символов (заглушка из 1 перевернутой карты, но вперед или полный колода с одной случайной картой перевернуто).
Попробуйте онлайн! (нижний колонтитул для согласования входных и выходных представлений - как полный программный код Jelly Python - обнуляет аргумент и разбивает символы вместе для вывода)
Как?
источник
Ẋ
доU
(возможно, я могу исправить для нулевого байта вместо этого), но придется сделать это позже ...[[number, suit]]
вместо[number, suit]
представления одной карты, когда ввод не пуст.Ruby , 95 (или 100) байтов
Учитывая пустой массив в качестве входных данных, возвращает колоду в виде массива строк. Учитывая непустой массив в качестве входных данных, возвращает перевернутую карту в виде массива, содержащего одну строку. Если перевернутая карта требуется в виде строки, а не одноэлементного массива, содержащего строку, следующее добавляет 5 байтов: измените
s-n
на(s-n)[0]
Попробуйте онлайн!
Первая строка генерирует стандартную колоду. Вторая строка разбивается следующим образом
источник
Java 8,
275274259 байтВвод - это строка, выход - это строка или
java.util.List
зависимости от ввода.Объяснение:
Попробуйте онлайн.
источник
Pyth, 45 байт
Принимает пустой список для пустого ввода.
Попробуйте онлайн
объяснение
источник
R ,
177171 байтПопробуйте онлайн!
Учитывая пустой ввод (вызов
f
без ввода), мы используем по умолчаниюl=1
и таким образом создаем случайную перестановкуm
колоды. Предполагая, чтоsample
это действительно случайно, есть равная вероятность того, что любая карта будет первой в этом списке. Таким образом, мы модифицируем первый, а затем снова перемешиваем, возвращая список.В
SDHC
обратном порядке ищем карту, начинающуюся с одного из, и переворачиваем ее.источник
Python 2 , 135 байт
Попробуйте онлайн!
Карты являются кортежами
(value,suit)
Пустой вход
[]
источник