W grze Stratego główną mechaniką gry jest atakowanie pionka przeciwnika swoim. W tym wyzwaniu Twoim zadaniem jest zasymulowanie jednej z tych bitew i określenie, kto przeżyje.
Okular
Otrzymasz jako dane wejściowe parę sznurków reprezentujących kawałki Stratego. Kawałki są jednym z "S 1 2 3 4 5 6 7 8 9 10 B"
( S
jest Szpiegiem i B
jest bombą). Pierwszą z nich będzie atakujący, a drugą zaatakowany.
Oto zasady określania wyników bitwy:
- Im wyższa liczba bije niższą liczbę:
["4", "6"] -> ["6"]
. - Jeśli oba są takie same, to zarówno matryca:
["7", "7"] -> []
. - Szpiedzy są na dole, pod spodem jeszcze
1
:["S", "2"] -> ["2"]
. - Jednakże, jeśli szpiegiem atakuje
10
, to szpieg wygrywa:["S", "10"] -> ["S"]
. - Ale normalne zasady nadal obowiązują, jeśli
10
jest jeden atakuje:["10", "S"] -> ["10"]
. - Jeśli coś atakuje bomba, bomba wygrywa:
["5", "B"] -> ["B"]
. - Jednak górnik (a
3
), można rozbroić bomby["3", "B"] -> ["3"]
. - Bomba nigdy nie będzie atakującym.
- Spotter (a
1
) może atakować za pomocą normalnego mechanizmu, ale może także próbować „odgadnąć” pozycję drugiego gracza, którą można oznaczyć dowolnym rozsądnym zapisem. - Jeśli oni odgadnąć poprawnie, drugi kawałek pieczątki:
["1(5)", "5"] -> ["1"]
. - Jeśli źle się domyślić, nic się nie dzieje:
["1(3)", "5"] -> ["1", "5"]
. - Spotters można dostrzec bomby:
["1(B)", "B"] -> ["1"]
.
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach !
(Możesz użyć tych przykładów jako przypadków testowych, ponieważ jestem zbyt leniwy, aby zebrać je wszystkie w jedną listę).
code-golf
game
board-game
Maltysen
źródło
źródło
"Victory!"
dla nich, ale nie chciałem zbytnio komplikować rzeczy2
s i nie było żadnych1
s w mojej grze Stratego ... (czy są one tylko modyfikowane na potrzeby wyzwania?)Odpowiedzi:
Haskell, 131 bajtów
To rozwiązanie ma postać funkcji infiksowej
#
z typemString -> String -> String
Dane wejściowe są akceptowane przez dwa argumenty łańcuchowe. Format wejścia Spotter to
1 x
gdziex
jest guess.Output jest podana jako ciąg znaków. W przypadku, gdy obie jednostki przetrwają, zwrócony ciąg zawiera obie oddzielone spacją.Moje oryginalne rozwiązanie zostało niestety naprawione, a poprawka kosztowała mnie kilka bajtów.
źródło
Python,
180153 bajtówTa funkcja przyjmuje argumenty atakującego, obrońcy i opcjonalnie zgadywającego (jeśli atakujący jest obserwatorem). Zwraca tablicę zawierającą żywe fragmenty, które pozostały.
Nie golfił
Próbny
https://repl.it/C6Oz/2
źródło
([a,d],[a])[g==d]
->[a,d][:(g!=d)+1]
JavaScript ES6,
9886 bajtówAkceptuje 3 argumenty (atakujący, obrońca, zgadywanie).
Przykładowe przebiegi:
źródło
f("1","10") -> ["1","10"]
raczej niż"10"
.JavaScript,
179166160 bajtówTa funkcja przyjmuje 3 argumenty - pierwszy to atakujący, drugi służy do obserwatorów (ich przypuszczenie), a trzeci to obrońca.
Pokaż fragment kodu
Ikona miecza pochodzi z cliparts.co
źródło
TSQL,
162124 bajtyGra w golfa:
Nie golfowany:
Skrzypce
źródło