Einführung
Briscola ist eines der beliebtesten Kartenspiele Italiens. Es ist ein Trickspiel wie Bridge. Briscola ist bekannt für sein bizarres Punktesystem. Bei dieser Herausforderung geben Sie bei zwei Karten aus, ob die erste mehr, weniger oder die gleiche Anzahl von Punkten wie die zweite im Punktesystem von Briscola erzielt.
Herausforderung
Briscola wird mit einem Kartenspiel italienischer Spielkarten gespielt. Es gibt vierzig Karten in einem Deck, 1-10 in jeder der vier Farben: Tassen, Schwerter, Keulen und Münzen. Wir werden die Anzüge für diese Herausforderung ignorieren. Die Karten 2 - 7 sind die numerischen Karten und die Karten 8, 9 und 10 sind die Bildkarten. Die Rangfolge der Karten vom höchsten zum niedrigsten ist:
+------------------------+-------------+
| 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 |
+------------------------+-------------+
Danke an Orphevs für den schönen Tisch! :) :)
Ihre Aufgabe ist es, ein vollständiges Programm oder eine Funktion zu erstellen, die zwei Zahlen 1-10 akzeptiert, die Kartenränge darstellen, und ausgibt (oder zurückgibt), ob der Punktwert der ersten Karte größer, kleiner oder gleich dem Punktwert der Karte ist zweite Karte. Zusätzliche Bemerkungen:
- Ihr Programm kann drei beliebige Werte ausgeben, um kleiner als, größer als und gleich anzuzeigen. Es muss jedoch jedes Mal für jede Bedingung den gleichen Wert ausgeben.
- Ihr Programm verwendet möglicherweise alle E / A-Standardeinstellungen .
- Standardlücken sind nicht zulässig.
- Es ist entweder eine Vollfunktion oder ein Programm zulässig.
Diese Frage ist Code-Golf , also gewinnt die niedrigste Byte-Anzahl.
Hier sind einige Beispiele für Ein- und Ausgänge:
1, 4 => mehr als (Ass erzielt 11 Punkte, 4 Punkte 0 Punkte, erster ist mehr als zweiter. 8, 3 => kleiner als (8 Punkte 2, 3 Punkte 10, erstens ist kleiner als zweitens. 5, 2 => gleich (5 und 2 beide erzielen 0)
Wenn Sie Fragen haben, zögern Sie nicht zu fragen. Viel Glück!
quelle
Antworten:
Gelee ,
1211 BytesProbieren Sie es online aus!
Ausgaben
0
für gleich,-1
für größer als und1
für kleiner als. Verwendet den Codepage-Index,“®µ½¤¢‘
der ausgewertet wird[8, 9, 10, 3, 1]
.Nimmt die Eingabe als Kartenpaar entgegen. Verwenden Sie
1,2
als Beispiel.quelle
MATL , 12 Bytes
Die Eingabe besteht aus zwei Zahlen. Die Ausgabe ist
-1
,0
und die1
jeweils für mehr als , gleich zu oder weniger als .Probieren Sie es online aus!
Erläuterung
Betrachten Sie die Eingabe
[1 4]
als Beispiel.quelle
JavaScript (ES6), 42 Byte
Nimmt die beiden Ränge in der Curry-Syntax ein
(a)(b)
. Gibt 1 für mehr als , -1 für weniger als oder 0 für gleich zurück .Probieren Sie es online aus!
Mit einer Formel 48 Bytes
Dies ist definitiv länger als die Verwendung einer Nachschlagetabelle, aber auch etwas interessanter.
Gleiches E / A-Format.
Probieren Sie es online aus!
Wie?
Wir wollen nun die verbleibenden Werte ungleich Null so transformieren, dass sie in der richtigen Reihenfolge sortiert werden können. Wir gebrauchen:
quelle
Japt ,
252116 BytesProbieren Sie es online aus!
quelle
-g
Flag können Sie 2 Bytes speichern.-g
Flag, wenn Sie es versuchen möchten).[8,9,10,3,1]
Array- und Basiskonvertierung)Japt
-g
, 13 BytesAusgänge
-1
für>
,1
für<
und0
für===
.Probieren Sie es aus oder führen Sie mehrere Tests durch (In der zweiten Zeile wird die Funktionalität des
-g
Flags repliziert , damit die Flags zur Verarbeitung mehrerer Eingaben verwendet werden können.)Erläuterung
quelle
R , 35 Bytes
Probieren Sie es online aus!
Das Programm gibt
2
für'greater than'
,1
für'less than'
,1.5
für zurück'equal'
Erklärung:
quelle
rank(c(6,0,5,1:4*0,1:3)[scan()])[1]
(vollständiges Programm) spart Ihnen 6 BytesJava 8,
6966 BytesLambda nimmt Parameter in der Curry-Syntax, Port der JavaScript- Antwort von Arnauld .
Gibt
0.0
gleich zurück ,1.0
für größer als und-1.0
für kleiner als . Probieren Sie es hier online aus .Vielen Dank an Kevin Cruijssen für das Golfen von 3 Bytes.
quelle
"05040000123".charAt(...)
anstelle des Integer-Arrays durchführen:a->b->Math.signum("05040000123".charAt(a)-"05040000123".charAt(b))
MarioLANG ,
578 548530 BytesProbieren Sie es online aus!
Erläuterung:
0
(keine Eingabe). Dies setzt voraus, dass nur zwei streng positive Werte als Eingabe vorliegen.[1-5]
, um zu berechnen, welche Karte die meisten Punktwerte hat.1
wenn der erste Punktwert größer als der zweite ist,-1
wenn der zweite Punktwert größer als der erste ist und0
wenn die Punktwerte gleich sind.quelle
Python 2 , 41 Bytes
Gibt 1 für mehr als, -1 für weniger als, 0 für gleich aus.
Probieren Sie es online aus!
quelle
C (gcc) , 57 Bytes
Gibt das übliche [-1..1] für <, = bzw.> zurück.
Probieren Sie es online aus!
quelle
*s=L"...
anstelle vonchar*s="...
unda=(s[a]>s[b])-(s[a]<s[b])
anstelle vona=s[a];b=s[b];b=(a>b)-(a<b)
05AB1E , 14 Bytes
Returns
1
,-1
oder0
für mehr als; weniger als; bzw. gleich.Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
PHP ,
5145 BytesProbieren Sie es online aus!
Um es auszuführen:
Beispiel:
Hinweis: Dieser Code verwendet den Raumschiffoperator von PHP 7 . Es funktioniert also auf keiner PHP-Version vor 7.
Ausgabe:
card1 > card2
)card1 == card2
)card1 < card2
)Wie?
Entspricht dem Ansatz, der in vielen anderen Antworten verwendet wird, jedoch in PHP. Erstellt eine Wertekarte für Karten und vergleicht die Kartenwerte daraus. Die Position des Werts auf der Karte entspricht der Kartennummer.
quelle
Javascript ES2016 +, 73 Zeichen
Nicht die kürzeste, aber ich hoffe interessant wegen Mathe und Überlauf :)
Und die andere Version mit 74 Zeichen leider:
Prüfung
Öffnen Sie die Browserkonsole, bevor Sie sie ausführen
quelle