В игре Pickomino в центре стола лежат несколько фишек , каждая с разным положительным целым числом. Каждый ход игроки бросают кубики определенным образом и получают счет, который является неотрицательным целым числом.
Теперь игрок берет плитку с наибольшим числом, которое все еще меньше или равно его счету, удаляя плитку из середины и добавляя ее в свой стек. Если это невозможно, потому что все числа в середине выше, чем оценка игрока, игрок теряет самый верхний тайл из своего стека (который был добавлен последним), который возвращается в середину. Если у игрока не осталось плиток, ничего не происходит.
Соревнование
Имитация игрока, играющего в игру против себя. Вы получаете список плиток в середине и список оценок, которые получил игрок. Вернуть список тайлов игрока после того, как все ходы были оценены.
Правила вызова
- Вы можете предположить, что список с плитками упорядочен и не содержит целых чисел дважды.
- Вы можете взять оба списка ввода в любом порядке, который вы хотите
- Выходные данные должны сохранять порядок листов в стеке, но вы можете решить, будет ли список отсортирован сверху вниз или снизу вверх.
Основные правила
- Это код-гольф , поэтому выигрывает самый короткий ответ в байтах.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - Стандартные правила применяются к вашему ответу с правилами ввода / вывода по умолчанию , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода (например, TIO ).
- Добавление объяснения для вашего ответа рекомендуется.
пример
(взято из 6-го теста)
Tiles: [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Scores: [22, 22, 22, 23, 21, 24, 0, 22]
Первый результат - 22, поэтому возьмите самый высокий тайл в середине <= 22, то есть сам 22.
Middle: [21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Stack: [22]
Remaining scores: [22, 22, 23, 21, 24, 0, 22]
Следующий результат - 22, поэтому возьмите самый высокий тайл в середине <= 22. Поскольку 22 уже взято, игрок должен взять 21.
Middle: [23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Stack: [22, 21]
Remaining scores: [22, 23, 21, 24, 0, 22]
Следующая оценка - 22, но все числа <= 22 уже заняты. Поэтому игрок теряет самый верхний тайл в стеке (21), который возвращается в середину.
Middle: [21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Stack: [22]
Remaining scores: [23, 21, 24, 0, 22]
Следующие оценки 23, 21 и 24, поэтому игрок берет эти плитки с середины.
Middle: [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Stack: [22, 23, 21, 24]
Remaining scores: [0, 22]
Игрок обанкротился и набрал ноль. Поэтому тайл с номером 24 (самый верхний в стеке) возвращается в середину.
Middle: [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Stack: [22, 23, 21]
Remaining scores: [22]
Последний результат - 22, но все плитки <= 22 уже заняты, поэтому игрок теряет самый верхний блок в стеке (21).
Middle: [21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Final Stack and Output: [22, 23]
Контрольные примеры
(с самой верхней плиткой последней в списке вывода)
Tiles: [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Scores: [26, 30, 21]
Output: [26, 30, 21]
Tiles: [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Scores: [35, 35, 36, 36]
Output: [35, 34, 36, 33]
Tiles: [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Scores: [22, 17, 23, 19, 23]
Output: [23]
Tiles: [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Scores: []
Output: []
Tiles: [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Scores: [22, 17, 23, 19, 23, 0]
Output: []
Tiles: [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Scores: [22, 22, 22, 23, 21, 24, 0, 22]
Output: [22, 23]
Tiles: [1, 5, 9, 13, 17, 21, 26]
Scores: [6, 10, 23, 23, 23, 1, 0, 15]
Output: [5, 9, 21, 17, 13, 1]
Tiles: []
Scores: [4, 6, 1, 6]
Output: []