pengantar
Briscola adalah salah satu permainan kartu paling populer di Italia. Ini adalah permainan kartu pengambilan trik, seperti Bridge. Briscola terkenal dengan sistem poin anehnya. Dalam tantangan ini, diberikan dua kartu, Anda akan menampilkan apakah yang pertama skor lebih banyak, lebih sedikit, atau jumlah poin yang sama dengan yang kedua dalam sistem poin Briscola.
Tantangan
Briscola dimainkan dengan setumpuk kartu remi Italia. Ada empat puluh kartu di dalam geladak, 1-10 di masing-masing dari empat kartu: piala, pedang, tongkat, dan koin. Kami akan mengabaikan jas untuk tantangan ini. Kartu 2 - 7 adalah kartu numerik, dan kartu 8, 9, dan 10 adalah kartu wajah. Peringkat kartu, dari tertinggi ke terendah, adalah:
+------------------------+-------------+
| 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 |
+------------------------+-------------+
Terima kasih kepada Orphevs untuk meja yang bagus! :)
Tugas Anda adalah membuat program atau fungsi lengkap yang menerima dua angka 1-10 yang mewakili peringkat kartu, dan menghasilkan (atau mengembalikan) apakah nilai poin kartu pertama lebih besar dari, lebih kecil dari, atau sama dengan nilai poin dari kartu. kartu kedua. Catatan tambahan:
- Program Anda dapat menampilkan tiga nilai untuk menunjukkan kurang dari, lebih besar dari, dan sama dengan, namun, harus menghasilkan nilai yang sama untuk setiap kondisi setiap kali.
- Program Anda dapat menggunakan standar IO apa pun .
- Celah standar tidak diijinkan.
- Baik fungsi penuh atau program diizinkan.
Pertanyaan ini adalah kode-golf , sehingga byte-count terendah menang.
Berikut beberapa contoh input dan output:
1, 4 => lebih dari (ace skor 11 poin, 4 skor 0 poin, pertama lebih dari kedua. 8, 3 => kurang dari (8 skor 2, 3 skor 10, pertama kurang dari kedua. 5, 2 => sama (5 dan 2 keduanya skor 0)
Jika Anda memiliki pertanyaan, jangan ragu untuk bertanya. Semoga berhasil!
sumber
Jawaban:
Jelly ,
1211 byteCobalah online!
Outputs
0
sama,-1
lebih besar dari dan1
kurang dari. Menggunakan indeks halaman kode“®µ½¤¢‘
yang dievaluasi menjadi[8, 9, 10, 3, 1]
.Mengambil input sebagai sepasang kartu. Gunakan
1,2
sebagai contoh.sumber
MATL , 12 byte
Input adalah array dari dua angka. Output adalah
-1
,0
dan1
masing-masing lebih dari , sama dengan atau kurang dari .Cobalah online!
Penjelasan
Pertimbangkan input
[1 4]
sebagai contoh.sumber
JavaScript (ES6), 42 byte
Membawa dua peringkat dalam sintaks currying
(a)(b)
. Mengembalikan 1 untuk lebih dari , -1 untuk kurang dari atau 0 untuk sama .Cobalah online!
Menggunakan rumus, 48 byte
Ini jelas lebih lama daripada menggunakan tabel pencarian tetapi juga sedikit lebih menarik.
Format I / O yang sama.
Cobalah online!
Bagaimana?
Kami sekarang ingin mengubah nilai-nilai non-nol yang tersisa sedemikian rupa sehingga mereka dapat diurutkan dalam urutan yang benar. Kita gunakan:
sumber
Japt ,
252116 byteCobalah online!
sumber
-g
bendera untuk menyimpan 2 byte.-g
flag, jika Anda ingin mencobanya).[8,9,10,3,1]
konversi array dan basis)Japt
-g
, 13 byteOutput
-1
untuk>
,1
untuk<
dan0
untuk===
.Cobalah atau jalankan beberapa tes (Baris kedua mereplikasi fungsi
-g
flag untuk memungkinkan flag digunakan untuk memproses beberapa input)Penjelasan
sumber
R , 35 byte
Cobalah online!
Program kembali
2
untuk'greater than'
,1
untuk'less than'
,1.5
untuk'equal'
Penjelasan:
sumber
rank(c(6,0,5,1:4*0,1:3)[scan()])[1]
(program lengkap) akan menghemat 6 byteJava 8,
6966 byteLambda mengambil parameter dalam sintaks currying, port dari jawaban JavaScript Arnauld .
Pengembalian
0.0
sama ,1.0
untuk lebih besar dari , dan-1.0
untuk kurang dari . Cobalah online sini .Terima kasih kepada Kevin Cruijssen untuk bermain golf 3 byte.
sumber
"05040000123".charAt(...)
alih-alih integer-array:a->b->Math.signum("05040000123".charAt(a)-"05040000123".charAt(b))
MarioLANG ,
578 548530 byteCobalah online!
Penjelasan:
0
(tidak ada input). Ini mengandaikan bahwa hanya akan ada dua nilai yang benar-benar positif sebagai input.[1-5]
untuk membantu menghitung kartu mana yang memiliki nilai poin terbanyak.1
jika nilai titik pertama lebih besar dari yang kedua,-1
jika nilai titik kedua lebih besar dari yang pertama, dan0
jika nilai titik sama.sumber
Python 2 , 41 byte
Output 1 untuk lebih dari, -1 untuk kurang dari, 0 untuk sama.
Cobalah online!
sumber
C (gcc) , 57 byte
Mengembalikan [-1..1] yang biasa untuk masing-masing <, = dan>.
Cobalah online!
sumber
*s=L"...
alih-alihchar*s="...
dana=(s[a]>s[b])-(s[a]<s[b])
bukannyaa=s[a];b=s[b];b=(a>b)-(a<b)
05AB1E , 14 byte
Pengembalian
1
,,-1
atau0
lebih dari; kurang dari; atau sama dengan masing-masing.Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
PHP ,
5145 byteCobalah online!
Untuk menjalankannya:
Contoh:
Catatan: Kode ini menggunakan operator pesawat ruang angkasa PHP 7 . Jadi itu tidak akan berfungsi pada versi PHP apa pun sebelum 7.
Keluaran:
card1 > card2
)card1 == card2
)card1 < card2
)Bagaimana?
Sama seperti pendekatan yang digunakan dalam banyak jawaban lain, tetapi dalam PHP. Membuat peta nilai untuk kartu dan membandingkan nilai kartu dari itu. Posisi nilai di peta sama dengan nomor kartu.
sumber
Javascript ES2016 +, 73 karakter
Bukan yang terpendek, tapi saya harap menarik karena matematika dan melimpah :)
Dan versi lainnya dengan 74 karakter, sayangnya:
Uji
Buka konsol browser sebelum dijalankan
sumber