Перетасовать колоду карт сложно для детей, поэтому они должны найти способы получить разумно хорошо перетасованную колоду как можно проще.
Один из способов сделать это, который дает достаточно хорошие результаты:
- Выньте верхнюю карту и вставьте ее случайным образом в колоду.
- Выньте нижнюю карту и вставьте ее в случайное место в колоде.
- Продолжайте, пока не поверите, что это достаточно хорошо.
Обратите внимание, что вы никогда не должны вставлять карту в верхнем или нижнем месте, она должна быть помещена где-то в колоде.
Вместо перетасовки карт, мы будем тасовать буквенно - цифровые знаки: 0-9
, A-J
, a-j
, q-z
и Q-Z
.
Начните со строки, показанной ниже, и перетасуйте символы так, как описано выше. Вы можете выбрать, хотите ли вы продолжать перетасовку бесконечно или перемешать карты 100 раундов (100 карт сверху и 100 карт снизу).
0123456789abcdefghijqrstuvwxyzABCDEFGHIJQRSTUVWXYZ
Задача состоит в том, чтобы отобразить перетасовываемых персонажей. Каждое «перемешивание» (извлечение и вставка карты) занимает от 0,25 до 0,35 секунды.
GIF ниже показывает пример вывода:
Это код-гольф, поэтому выигрывает самый короткий код в байтах.
«Почему бы вам не a-t
вместо a-j
, q-z
?» Потому что это должно иллюстрировать масти карт, а не только персонажей. И да, есть 5 костюмов.
Примечание: я решил прекратить использование галочки на вызовах code-golf . Соответствующие мета посты здесь и здесь .
0-9
,A-J
,a-j
,q-z
иQ-Z
, по этому вопросу.Ответы:
JavaScript (ES6),
192188185 байтРедактировать: 4 байта сохранены благодаря @ L.Serné. Сохранено 3 байта благодаря @Arnauld.
источник
e^=1
в пустых скобкахMath.random
вызова. Вы также можете изменить textContent на innerHTML, так как вы не передаете никаких специальных символов. Вы также можете установитьe
на 0 внутриtoLowerCase
вызова.e
. Вы могли бы просто использоватьs
. (Потому что('some_string'^1) === 1
)MATL,
625856 байт2 байта сохранены благодаря @Luis
Эта версия будет работать бесконечно. Попробуйте онлайн-демонстрацию в MATL Online , экспериментальном онлайн-переводчике, который поддерживает динамический вывод. Это будет работать в течение 30 секунд (жесткий лимит, налагаемый онлайн-версией), если он не был убит первым.
объяснение
источник
Perl, 117 байт
Чтобы запустить это:
Пояснения:
-
@F=(0..9,a..j,"q"..z,A..J,Q..Z)
создает начальную колоду и сохраняет ее в@F
.-
{...;redo}
выполняет...
навсегда.-
splice@F,++$|+rand(@F-2),0,++$v%2?shift@F:pop@F
альтернативно удалите первый / последний элемент из колоды и вставьте в произвольном положении (при увеличении$|
, чтобы отпечатки не буферизировались),-
print"\r",@F
печатает колоду,-
select$,,$,,$,,.3
спит в течение 0,3 секунды (Perl неsleep
может спать меньше, чем 1 секунда),источник
0..9
нет1..9
, и ваша начальная колода также вышла из строя :)Python 3,
199196192186 байтСохранено 4 байта благодаря TuukkaX и 6 байтов благодаря FlipTack!
Использует
print
функцию Python 3 для подавления новой строки, короче, чем Python 2sys.stdout.write
.Использует переменную триггера для переключения между перемещением верхней и нижней карт.
Ungolfed:
источник
import random,time
короче?C
290285 байтUngolfed:
источник
Swift, 288 байт
Гольф в Свифте - это всегда вызов, так как одним из его преимуществ является выразительность.
источник
Рубин (
138119 байт)Не такой короткий, как @PaulPrestidge, но, по крайней мере, я это понимаю. Также здорово узнать, что ruby - это бесконечный туннель удивительного!
источник
Рубин,
111101 персонажПетли бесконечно.
источник
Noodel , неконкурентный 41 байт
Попытайся:)
Как это устроено
источник
bash, 170 байт
здесь '^' (в первой строке) представляет
ctrl-m
: вводится в командной строке какctrl-v
enter
или в редакторе в зависимости от того, как работает ваш редактор (при условии, что ваш редактор работает)источник