Lubię wyzwania związane z grami karcianymi, więc zrobiłem to dla włoskiej gry karcianej Scopa. Moja rodzina gra w tę grę od niepamiętnych czasów. Ma bardzo interesujący system punktacji, który powinien sprawiać przyjemność golfowi. Wyślę odpowiedź w R, aby rozpocząć zabawę, jestem pewien, że ludzie poprawią się.
Wyzwanie: obliczyć liczbę punktów zdobytych w rundzie Scopa, biorąc pod uwagę karty, które gracz złapał podczas rundy jako wkład.
W talii Scopa znajduje się 40 kart. Jeśli używasz talii międzynarodowej, usuwasz 8s, 9s i 10s, pozostawiając A, 2,3,4,5,6,7, Q, J, K w każdym kolorze. 1 Jest dwóch graczy lub partnerów, a po każdej rundzie wszystkie karty zostają schwytane przez jednego lub dwóch graczy. Wynik liczony jest w następujący sposób (więcej informacji tutaj ):
- Gracz z największą liczbą kart zdobywa 1 punkt.
- Gracz z największą ilością diamentów (lub monet, jeśli używa talii włoskiej) zdobywa 1 punkt.
- Gracz z 7 diamentami (lub monetami), znany jako Sette Bello lub Beautiful Seven, zdobywa 1 punkt.
- Gracz z najwyższą primierą zdobywa 1 punkt. Wynik Primiera gracza jest sumą wyników karty o najwyższej wartości, którą gracz przechwycił w każdym kolorze (patrz tabela poniżej). Jeśli nie masz co najmniej jednej karty w każdym kolorze, domyślnie przegrywasz, nawet jeśli Twój wynik przekroczy wynik przeciwnika. W niezwykle rzadkim przypadku, gdy żaden z graczy nie ma co najmniej jednej karty w każdym kolorze, gracz z wyższą sumą primiera zdobywa punkt. 2)
Tabela wyników primiera
| Rank | Value |
| ----- | ----- |
| 7 | 21 |
| 6 | 18 |
| A | 16 |
| 5 | 15 |
| 4 | 14 |
| 3 | 13 |
| 2 | 12 |
| Q,J,K | 10 |
Gracz może więc zdobyć maksymalnie 4 punkty w rundzie. 3 Jeśli jest remis, który jest możliwy dla kart, diamentów lub primiera , nikt nie zdobywa punktu.
Ważne jest, aby zdawać sobie sprawę, że ponieważ każda karta musi zostać schwytana przez jednego z dwóch graczy, możesz wywnioskować, jakie karty musiał wziąć drugi gracz, nawet jeśli wiesz tylko, jakie karty wziął jeden gracz. Musisz to zrobić, aby poprawnie zdobyć Primiera .
Zasady wyzwania
Wejście
Twój kod powinien pobierać jako dane wejściowe karty przechwycone przez jednego gracza podczas rundy Scopa.
Dane wejściowe muszą być w postaci łańcucha, w którym jeden znak reprezentuje rangę każdej karty, a jeden znak w jej kolorze. Usuwa to potencjalną lukę w przekazywaniuwyników primiera bezpośrednio jako danych wejściowych. Konwersja rang kart nawyniki Primiera musi odbywać się w programie. Możesz jednak użyć pojedynczego ciągu oddzielonego spacjami lub przecinkami, tablicy ciągów lub dowolnego innego formatu. Na przykład, jeśli zdecydujesz się zakodować rangi jako76A5432QJK
i kolory, jakDCHS
możesz użyć danych wejściowych takich jak['7D', '6H', 'QD', 'JS']
lub'7D,6H,QD,JS'
.
Wynik
Liczba całkowita od 0 do 4 reprezentująca wynik gracza.
Zwycięski
Najkrótsza odpowiedź w bajtach wygrywa!
Przypadki testowe
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "7C", "6C", "4C", "3C", "2C", "7H", "4H", "2H", "5S", "3S", "QS", "JS", "KS"]
Zdobywa 4 : 1 punkt za> 20 kart, 1 punkt za> 5 diamentów, 1 punkt za 7 diamentów i 1 punkt za zdobycie 78 w primiera (7,7,7,5, gdy przeciwnik ma 7,6,5, K dla 64)
["3D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "QC", "4H", "7S"]
Wyniki 0 : <= 20 kart, <= 5 karo, nr 7 karo, i zdobywa tylko 69 w primiera (7,7,4,3, gdy przeciwnik ma 7,7,6, K dla 70)
[7D", "6D", "AD", "5D", "4D", "3D", "2D", "7C", "6C", "AC", "5C", "4C", "3C", "2C", "7H", "6H", "AH", "5H", "4H", "3H", "2H"]
Wyniki 3 : 1 punkt za> 20 kart, 1 punkt za> 5 diamentów, 1 punkt za 7 diamentów. Primiera byłoby 63 (7,7,7), a przeciwnik może zdobyć tylko 51 (7, P, Q, Q), ale ponieważ ta ręka nie ma piki traci punkt domyślnie.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH", "QS"]
Wyniki 3 : <= 20 kart, 1 punkt za> 5 diamentów, 1 punkt za 7 diamentów. Primiera tylko zdobywa 51 (7, P, Q, Q), a przeciwnik może zdobyć 63 (7,7,7), ale od ręki przeciwnika nie ma diamentów ta ręka wygrywa primiera punkt domyślnie.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "7C", "7H"]
Wyniki 3 : <= 20 kart, 1 punkt za> 5 diamentów, 1 punkt za 7 diamentów. Chociaż ta ręka nie ma pik, nadal wygrywa Primiera wynikiem od 63 do 57 (7,7,7 kontra 7,6,6), ponieważ ręka przeciwnika nie ma diamentów.
["7D", "6D", "AD", "5D", "4D", "3D", "2D", "QD", "JD", "KD", "QC", "QH"]
Wyniki 2 : <= 20 kart, 1 punkt za> 5 diamentów, 1 punkt za 7 diamentów. Ta ręka nie ma pik, a ręka przeciwnika nie ma diamentów. Przeciwnik wygrywa primiera wynikiem 63 do 41 (7,7,7 w porównaniu z 7, Q, Q).
[]
(pusta tablica)
Wyniki 0
1: Przynajmniej w naszej rodzinie Jack przewyższa Królową w Scopie, ale nie ma to znaczenia dla punktacji.
2: Gram w tę grę od dzieciństwa i nigdy tego nie widziałem, ale twój kod lepiej poradziłby sobie z tą sprawą!
3: Podczas rundy są punkty bonusowe za „zamiatanie”, które ignoruję na potrzeby tego wyzwania.