Wprowadzenie
Briscola to jedna z najpopularniejszych gier karcianych we Włoszech. Jest to gra karciana polegająca na podchodzeniu do lew, jak Bridge. Briscola jest dobrze znany ze swojego dziwnego systemu punktowego. W tym wyzwaniu, biorąc pod uwagę dwie karty, wyjdziesz, czy pierwsza zdobędzie więcej, mniej lub tyle samo punktów, co druga w systemie punktowym Briscoli.
Wyzwanie
W Briscola gra się talią włoskich kart do gry. W talii znajduje się czterdzieści kart, 1-10 w każdym z czterech kolorów: puchary, miecze, maczugi i monety. Będziemy ignorować kolory tego wyzwania. Karty 2–7 to karty numeryczne, a karty 8, 9 i 10 to karty twarzy. Ranking kart, od najwyższego do najniższego, to:
+------------------------+-------------+
| Cards, by Rank | Point Value |
+------------------------+-------------+
| Ace (1) | 11 |
| Three (3) | 10 |
| King (10) | 4 |
| Knight (9) | 3 |
| Jack (8) | 2 |
| Numeric Cards (2, 4-7) | 0 |
+------------------------+-------------+
Dzięki Orphevs za miły stół! :)
Twoim zadaniem jest utworzenie pełnego programu lub funkcji, która akceptuje dwie liczby 1-10 reprezentujące rangi kart i wysyła (lub zwraca), czy wartość punktowa pierwszej karty jest większa, mniejsza niż lub równa wartości punktowej druga karta. Dodatkowe uwagi:
- Twój program może wypisać dowolne trzy wartości, aby wskazać wartość mniejszą, większą niż i równą, jednak za każdym razem musi wypisywać tę samą wartość dla każdego warunku.
- Twój program może używać dowolnych ustawień domyślnych we / wy .
- Standardowe luki są niedozwolone.
- Dozwolona jest pełna funkcja lub program.
To pytanie dotyczy gry w golfa , więc wygrywa najmniej bajtów.
Oto kilka przykładowych danych wejściowych i wyjściowych:
1, 4 => więcej niż (as 11 punktów, 4 wyniki 0 punktów, pierwszy to więcej niż drugi. 8, 3 => mniej niż (8 wyników 2, 3 wyniki 10, pierwszy jest mniejszy niż drugi. 5, 2 => równe (5 i 2 oba mają wynik 0)
Jeśli masz jakieś pytania, nie wahaj się zapytać. Powodzenia!
źródło
Odpowiedzi:
Galaretka ,
1211 bajtówWypróbuj online!
Wyjścia
0
dla równych,-1
większych i1
mniejszych. Używa indeksu strony kodowej,“®µ½¤¢‘
który ocenia[8, 9, 10, 3, 1]
.Pobiera dane wejściowe jako parę kart. Użyj
1,2
jako przykładu.źródło
MATL , 12 bajtów
Dane wejściowe to tablica dwóch liczb. Wyjście jest
-1
,0
i1
odpowiednio do ponad , równą lub mniejszą niż .Wypróbuj online!
Wyjaśnienie
Rozważ dane wejściowe
[1 4]
jako przykład.źródło
JavaScript (ES6), 42 bajty
Zajmuje obie pozycje w składni curry
(a)(b)
. Zwraca 1 dla większej niż , -1 dla mniejszej lub 0 dla równej .Wypróbuj online!
Przy użyciu formuły 48 bajtów
Jest to zdecydowanie dłużej niż przy użyciu tabeli odnośników, ale jest też nieco bardziej interesujące.
Ten sam format we / wy.
Wypróbuj online!
W jaki sposób?
Chcemy teraz przekształcić pozostałe niezerowe wartości w taki sposób, aby można je było sortować we właściwej kolejności. Używamy:
źródło
Japt ,
252116 bajtówWypróbuj online!
źródło
-g
flagi, aby zapisać 2 bajty.-g
flagi, jeśli chcesz spróbować).[8,9,10,3,1]
konwersji tablicy i bazy)Japt
-g
, 13 bajtówWyjścia
-1
dla>
,1
dla<
i0
dla===
.Wypróbuj lub uruchom wiele testów (drugi wiersz replikuje funkcjonalność
-g
flagi, aby umożliwić użycie flag do przetwarzania wielu danych wejściowych)Wyjaśnienie
źródło
R , 35 bajtów
Wypróbuj online!
Program zwraca
2
dla'greater than'
,1
dla'less than'
,1.5
dla'equal'
Objaśnienie:
źródło
rank(c(6,0,5,1:4*0,1:3)[scan()])[1]
(pełny program) pozwoli Ci zaoszczędzić 6 bajtówJava 8,
6966 bajtówLambda biorąc parametry w składni curry, port odpowiedzi JavaScript Arnaulda .
Zwroty
0.0
są równe ,1.0
na większy niż , a-1.0
za mniej niż . Wypróbuj online tutaj .Dzięki Kevin Cruijssen za grę w golfa 3 bajty.
źródło
"05040000123".charAt(...)
zamiast tablicy liczb całkowitych:a->b->Math.signum("05040000123".charAt(a)-"05040000123".charAt(b))
MarioLANG ,
578 548530 bajtówWypróbuj online!
Wyjaśnienie:
0
(brak danych). To zakłada, że na wejściu będą tylko dwie wartości ściśle dodatnie.[1-5]
aby pomóc obliczyć, która karta ma najwięcej wartości punktowych.1
jeśli pierwsza wartość punktu jest większa niż druga,-1
jeśli druga wartość punktu jest większa niż pierwsza i0
jeśli wartości punktu są takie same.źródło
Python 2 , 41 bajtów
Wyjścia 1 dla więcej niż, -1 dla mniej niż, 0 dla równości.
Wypróbuj online!
źródło
C (gcc) , 57 bajtów
Zwraca zwykłe [-1..1] odpowiednio dla <, = i>.
Wypróbuj online!
źródło
*s=L"...
zamiastchar*s="...
ia=(s[a]>s[b])-(s[a]<s[b])
zamiasta=s[a];b=s[b];b=(a>b)-(a<b)
05AB1E , 14 bajtów
Powroty
1
,-1
lub0
dla więcej niż; mniej niż; lub odpowiednio równe.Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
PHP ,
5145 bajtówWypróbuj online!
Aby uruchomić:
Przykład:
Uwaga: ten kod używa operatora statku kosmicznego PHP 7 . Więc nie będzie działać na żadnej wersji PHP wcześniejszej niż 7.
Wynik:
card1 > card2
)card1 == card2
)card1 < card2
)W jaki sposób?
Takie samo podejście jak w wielu innych odpowiedziach, ale w PHP. Tworzy mapę wartości dla kart i porównuje z niej wartości kart. Pozycja wartości na mapie jest taka sama jak numer karty.
źródło
JavaScript ES2016 +, 73 znaki
Nie najkrótszy, ale mam nadzieję, że interesujący ze względu na matematykę i przepełnienie :)
I inna wersja z 74 znakami, niestety:
Test
Otwórz konsolę przeglądarki przed uruchomieniem
źródło