W grze Pickomino na środku stołu leży kilka płytek, każdy z inną dodatnią liczbą całkowitą. W każdej turze gracze rzucają kośćmi w określony sposób i otrzymują wynik, który jest nieujemną liczbą całkowitą.
Teraz gracz bierze żeton o najwyższym numerze, który jest nadal niższy lub równy jego punktowi, usuwając żeton ze środka i dodając go do swojego stosu. Jeśli nie jest to możliwe, ponieważ wszystkie liczby na środku są wyższe niż wynik gracza, gracz traci najwyższą płytkę ze stosu (który został dodany jako ostatni), który jest zwracany na środek. Jeśli graczowi nie pozostały żadne płytki, nic się nie dzieje.
Wyzwanie
Symuluj gracza grającego przeciwko sobie. Otrzymasz listę kafelków pośrodku i listę wyników uzyskanych przez gracza. Zwróć listę płytek gracza po ocenie wszystkich tur.
Zasady wyzwania
- Możesz założyć, że lista z kafelkami jest uporządkowana i nie zawiera żadnej liczby całkowitej dwa razy.
- Możesz wziąć obie listy danych wejściowych w dowolnej kolejności
- Dane wyjściowe muszą być utrzymywane w kolejności płytek na stosie, ale możesz zdecydować, czy lista jest sortowana od góry do dołu, czy od dołu do góry.
Główne zasady
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki kod-golfowe zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły z domyślnymi regułami We / Wy , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i typem zwracanych, pełnych programów.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem kodu (tj. TIO ).
- Zalecane jest wyjaśnienie swojej odpowiedzi.
Przykład
(wzięte z 6. próby)
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]
Pierwszy wynik to 22, więc weź najwyższy kafelek na środku <= 22, czyli sam 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]
Następny wynik to 22, więc weź najwyższy kafelek na środku <= 22. Ponieważ 22 jest już zajęty, gracz musi wziąć 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]
Następny wynik to 22, ale wszystkie liczby <= 22 są już zajęte. Dlatego gracz traci najwyższą płytkę na stosie (21), która jest zwracana na środek.
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]
Kolejne wyniki to 23, 21 i 24, więc gracz bierze te płytki ze środka.
Middle: [25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Stack: [22, 23, 21, 24]
Remaining scores: [0, 22]
Gracz psuje się i otrzymuje zero. Dlatego płytka z liczbą 24 (najwyższa pozycja na stosie) jest zwracana na środek.
Middle: [24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Stack: [22, 23, 21]
Remaining scores: [22]
Ostatni wynik to 22, ale wszystkie płytki <= 22 są już zajęte, więc gracz traci najwyższą płytkę na stosie (21).
Middle: [21, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36]
Final Stack and Output: [22, 23]
Przypadki testowe
(z najwyższym kafelkiem na końcu listy wyników)
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: []