No jogo Pickomino , existem várias peças no meio da mesa, cada uma com um número inteiro positivo diferente. A cada turno, os jogadores jogam dados de uma certa maneira e recebem uma pontuação, que é um número inteiro não negativo.
Agora o jogador pega o ladrilho com o número mais alto que ainda é menor ou igual à sua pontuação, removendo o ladrilho do meio e adicionando-o à sua pilha. Se isso não for possível, porque todos os números no meio são maiores que a pontuação do jogador, o jogador perde o bloco mais alto da pilha (que foi adicionada mais recentemente), que é retornada ao meio. Se o jogador não tiver mais peças, nada acontece.
O desafio
Simule um jogador jogando o jogo contra si mesmo. Você recebe uma lista dos ladrilhos no meio e uma lista das pontuações que o jogador obteve. Retorne uma lista dos ladrilhos do jogador após todos os turnos terem sido avaliados.
Regras do desafio
- Você pode assumir que a lista com os blocos é ordenada e não contém nenhum número inteiro duas vezes.
- Você pode pegar as duas listas de entrada na ordem que desejar
- A saída deve manter a ordem dos blocos na pilha, mas você pode decidir se a lista é classificada de cima para baixo ou de baixo para cima.
Regras gerais
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta com as regras de E / S padrão , para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código (ou seja, TIO ).
- É recomendável adicionar uma explicação para sua resposta.
Exemplo
(retirado do 6º caso de teste)
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]
A primeira pontuação é 22, portanto, pegue o bloco mais alto no meio <= 22, que é o próprio 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]
A pontuação seguinte é 22, portanto, pegue o ladrilho mais alto no meio <= 22. Como 22 já foi tirado, o jogador deve levar 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]
A próxima pontuação é 22, mas todos os números <= 22 já estão sendo usados. Portanto, o jogador perde o bloco mais alto da pilha (21), que é devolvido ao meio.
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]
As próximas pontuações são 23, 21 e 24, então o jogador pega essas peças do meio.
Middle: [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Stack: [22, 23, 21, 24]
Remaining scores: [0, 22]
O jogador rebenta e marca zero. Portanto, o bloco com o número 24 (no topo da pilha) é retornado para o meio.
Middle: [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Stack: [22, 23, 21]
Remaining scores: [22]
A última pontuação é 22, mas todas as peças <= 22 já estão ocupadas, então o jogador perde a peça mais alta da pilha (21).
Middle: [21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Final Stack and Output: [22, 23]
Casos de teste
(com o bloco mais alto último na lista de saída)
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: []