У грі 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: []