Я смотрел чемпионат мира по снукеру, и это заставило меня задуматься ..
Снукер забил
В игре в снукер есть определенные правила, которых вы также должны придерживаться:
- Когда на столе есть красные шары, во время своего хода вы должны сначала забрать красный шар
- После того, как вы бросили каждый красный шар, вы должны забрать цветной (не красный) шар (затем цветной горшок затем ставится на стол)
- После того, как все красные шары подняты (их 15), вы можете сначала выбрать цветной шар, а затем начать с наименьшего забитого мяча и продвинуться до самого высокого забивающего мяча (они не заменяются)
- Не пот в любой точке заканчивается ваш ход.
- Очки за мяч
- Красный шар: 1 очко
- Желтый шар: 2 очка
- Зеленый шар: 3 очка
- Коричневый шар: 4 очка
- Синий шар: 5 баллов
- Розовый шар: 6 очков
- Черный шар: 7 очков
Вопрос
Вы начинаете со стола, в котором все шары по-прежнему на нем - 15 красных и по одному из всех других цветных шаров - и после первого хода вы получаете очки игрока в снукере, как они могли этого добиться? Гол?
Вводом будет счет от 1 до 147. Вы можете выбрать, является ли оно целым числом или строкой. Выходными данными должны быть различные комбинации количества раз, когда вы забили каждый мяч.
Тестовые случаи:
Input: 4
Output:
1r 1g
2r 1y
Input: 25
Output:
4r 3b
5r 2b 1br 1y
5r 2b 2g
...
9r 8y
Правила:
- Вы можете выбрать, выводить ли вы возможности, разделенные новой строкой или каким-либо разделителем (/ ,; | \ или другими, которые мне не хватает)
Это Codegolf, поэтому выигрывает самый короткий код.
"5r 3b 2g"
можно было бы вывести как[5,0,2,0,3,0,0]
(при условии, что это соответствует)?b
для коричневого иbl
для синего; такbk
по черному? Можем ли мы использоватьn
,e
иk
(последние буквы) для этих трех? Как насчетdleruna
идентификации всех восьми цветов (3-я буква каждого)?Ответы:
Желе , 66 байт
Ну, это слишком медленно для TIO сейчас!
... так вот паста из 2636 способов сделать ровно 100 произведенных в автономном режиме.
... и вот версия, которая будет работать там только с шестью красными (максимальный перерыв = 75)
Печатает сетку чисел, каждая строка представляет собой список значений шариков, разделенных пробелами (например, три красных и два зеленых будут в строке
1 1 1 3 3
).Для версии с группировкой значений, которая печатает строки отсчетов вместе с полными именами шаров в 102 байта:
Как?
источник
JavaScript (ES7),
188180178 байтВозвращает массив массивов (отсортированных от красного до черного).
комментарии
Примечание . Эта версия не включает в себя последнюю оптимизацию
p
(теперь инициализированную до 7), что затрудняет понимание логики.Пример вывода
Ниже приведен вывод для n = 140:
демонстрация
Это слишком медленно для фрагмента. Вы можете попробовать это здесь вместо этого. (Вы можете получить одно или два неотзывчивых предупреждения скрипта , но это должно в конечном итоге завершиться.)
источник