Первая волшебная карточная уловка, которую я когда-либо изучал, будучи ребенком, была следующей:
- Имейте 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
.
- Если вы выбираете заглавные костюмы (
- Это код-гольф , победитель младших байтов.