У покера есть этикет в том, как вы расставляете свои фишки, часто применяемые в турнирах - ваши фишки не могут быть «спрятаны» от ваших оппонентов, будучи позади других, в основном, чтобы не прятать некоторые крупные фишки.
Соревнование
Мы собираемся играть в покер в ASCII, поэтому нам нужно написать функцию или программу, которая будет рисовать нашу схему стека ASCII, учитывая ее общее значение n
.
Ввод
- положительное целое число n
( 2**32-1
должно обрабатываться до)
Вывод
- ASCII-представление стекового устройства, как определено ниже.
Это может содержать пробел справа от каждой строки, так что ни одна строка не может быть длиннее на один символ больше, чем длина, используемая печатаемыми символами в самой длинной (нижней) строке;
Это может содержать одну завершающую новую строку; и
символы, представляющие фишки, могут быть в нижнем регистре, если вы предпочитаете.
Расположение стека будет:
- Содержать как можно меньше фишек, учитывая номиналы (см. Ниже);
- Будет иметь одинаковые фишки в «стопках» (столбцах);
- Заказывайте так, чтобы короткие стопки находились справа от более высоких стопок; и
- Заказывайте так, чтобы стеки с более крупными фишками были справа от одинаковых по размеру стеков более низких номиналов (что означает, что они видны нашему оппоненту (ам) справа)
Сами фишки должны быть представлены в виде отдельных символов, обозначающих их цвет:
White : 1 = W
Red : 5 = R
Green : 25 = G
Black : 100 = B
Yellow : 500 = Y
Pink : 1K = P
Orange : 5K = O
Cyan : 25K = C
Magenta : 100K = M
Aqua-blue : 500K = A
Lavender : 1M = L
Indigo : 5M = I
Turquoise : 25M = T
Violet : 100M = V
Silver : 500M = S
пример
Для n = 276,352
наименьшего количества фишек будет:
2 * 100K + 3 * 25K + 1 * 1K + 3 * 100 + 2 * 25 + 2 * 1
MM CCC P BBB GG WW
Сингл P
должен идти в крайнем правом положении,
затем 2
должны идти три стека по размеру ,
- но MM
должны идти дальше вправо, затем следуют GG
и затем с WW
тех 100K > 25 > 1
пор два стека по размеру 3
идут слева,
- но CCC
должны перейти к справа от BBB
момента25K > 100
Теперь мы должны поместить эти чипы в реальные стеки, чтобы сделать наш вывод:
BC
BCWGM
BCWGMP
Тестовые случаи
Input:
1
Output:
W
Input:
9378278
Output:
L
LWGPCM
LWGPCMB
LWGPCMBI
Input:
22222222
Output:
ROI
ROI
ROIWBPML
ROIWBPML
Input:
1342185143
Output:
WRCIV
WRCIVOLS
WRCIVOLSGBMT
Input:
2147483647
Output:
RMIS
RMISPC
RMISPCWL
RMISPCWLGBYOTV
Input:
4294967295
Output:
S
S
S
S
SRML
SRMLGOIT
SRMLGOITBPCV
SRMLGOITBPCVA
Это код-гольф , поэтому выигрывает самый короткий код в байтах. Никаких лазеек, Яда Яда, ты знаешь тренировку.
2**31-1
имели в виду , или вы намерены быть больше, чем большинство подписанныхint
типов?2**32-1
, это тестовый пример, но я готов понизить его. (Интересный факт: у PokerStars есть25B
фишка в папке с изображениями.)Ответы:
Pyth,
565552 байтаКод содержит некоторые непечатаемые, так что вот обратимый
xxd
hexdump.Попробуйте онлайн. Тестирование.
Совет от профессионала: в гольф
1
в конце программы, которая принимает ненулевой номерQ
, просто добавьте/
./QQ
, который в Python был быQ // Q
, равен 1 для ненулевого значенияQ
.Без сжатия и печати (55 байт):
источник
JavaScript (ES6),
185177... 171 байтОтформатировано и прокомментировано
демонстрация
источник
Рубин,
181177 байтТесты на Ideone .
источник
Python 2,7,
282248238 байтОбъяснение:
Заполните список
L
элементами,[quanity, chip_order, chip_character]
указывающими количество чипов каждого типа, гдеchip_order
обеспечивается сортировка чипов равного количества в обратном порядке ( сначала чипы с более высоким значением ). Возьмите фишкиL
в обратном порядке, чтобы построить строки для каждой строки. Печатайте строки в обратном порядке, чтобы получить наименьшие линии сверху.Спасибо Blue за некоторые улучшения.
источник
for
цикле), вы можете просто заменить необработанное значение, чтобы сохранить несколько байтов. Дополнительные советы можно найти на codegolf.stackexchange.com/questions/54/…input
получит целое число без необходимости преобразования, иX[0]>0
его можно сократить доX[0]
Mathematica, 440 байт
ASCI-представление и правильный порядок поглощают большую часть кода.
* Работает только с версией 11 и выше (использование Nothing) *
источник
PHP, 274 байта
источник