Tidak pernah ada tantangan ASCII-card yang pasti AFAIK. Jadi, gunakan dek kartu ASCII berikut:
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) || (\/) |
| :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------''------'
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: |
| :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: || :\/: |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------'
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: || :/\: |
| (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) || (__) |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------''------'
.------..------..------..------..------..------..------..------..------..------..------..------..------.
|2.--. ||3.--. ||4.--. ||5.--. ||6.--. ||7.--. ||8.--. ||9.--. ||T.--. ||J.--. ||Q.--. ||K.--. ||A.--. |
| :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): || :(): |
| ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() || ()() |
| '--'2|| '--'3|| '--'4|| '--'5|| '--'6|| '--'7|| '--'8|| '--'9|| '--'T|| '--'J|| '--'Q|| '--'K|| '--'A|
'------''------''------''------''------''------''------''------''------''------''------''------''------'
Ambil dua bilangan bulat, p
dan q
sebagai input; di mana p
jumlah pemain dan q
jumlah kartu yang didapat setiap pemain.
- Acak tumpukan kartu secara acak (ini ambigu, tetapi berarti bahwa semua kartu harus memiliki kemungkinan yang sama muncul di mana saja sekali).
- Menangani 1 putaran kartu per pemain, menghasilkan
q
barisp
kartu setiap baris.
Aturan:
- Hasilnya harus acak secara acak, setiap kartu harus memiliki kemungkinan yang sama untuk muncul di mana saja.
- Dijamin bahwa
0 < p*q <= 52 and p < 10
, Anda mungkin memiliki perilaku yang tidak ditentukan untuk skenario di mana ini tidak terpenuhi. - Anda harus menampilkan
q
deretan kartu denganp
kartu per baris. - Setiap kolom harus dipisahkan oleh
|
(char pipa dikelilingi oleh spasi); jika Anda memilih char yang berbeda dari ini, jelaskan alasannya. Ruang di sekitar sini BUKAN opsional. - Setiap baris harus memiliki 1 atau lebih baris baru di antara mereka, lebih dari satu dapat diterima, 0 tidak (1 baris berarti baris baru di sana secara default).
- Setiap baris harus diberi label dengan pemain yang memilikinya dalam format "Player N" (0 atau 1-diindeks baik-baik saja).
- Tidak ada satu kartu pun yang muncul lebih dari satu kali.
T
adalah untuk Sepuluh.
Contoh:
Fungsi ( p=1,q=1
):
Player 1 # Can also be 0.
.------.
|2.--. |
| (\/) |
| :\/: |
| '--'2|
'------'
Fungsi ( p=2,q=1
):
Player 1 | Player 2 # Can also be "Player 0 | Player 1"
.------. | .------.
|2.--. | | |T.--. |
| (\/) | | | (\/) |
| :\/: | | | :\/: |
| '--'2| | | '--'T|
'------' | '------'
Fungsi ( p=2,q=2
):
Player 1 | Player 2 # Can also be "Player 0 | Player 1"
.------. | .------.
|J.--. | | |3.--. |
| (\/) | | | :/\: |
| :\/: | | | :\/: |
| '--'J| | | '--'3|
'------' | '------'
.------. | .------.
|8.--. | | |6.--. |
| :(): | | | :/\: |
| ()() | | | (__) |
| '--'8| | | '--'6|
'------' | '------'
Penghargaan artistik untuk font di: http://patorjk.com/software/taag
code-golf
ascii-art
random
card-games
Guci Gurita Ajaib
sumber
sumber
Each row must have 1 or more newlines inbetween them, more than one is acceptable, 0 is not.
... Tetapi kotak uji Anda tidak memiliki garis baru di antara kartu ..?Jawaban:
Charcoal ,
142133125 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan 9 byte dengan meningkatkan kode pengambilan sampel acak saya. Menyimpan 8 byte lebih lanjut dengan meningkatkan kode pencetakan setelan saya. Penjelasan:
Baca jumlah kartu
q
.Ulangi setiap pemain.
Jika ini bukan pemain pertama, cetak garis vertikal antara pemain sebelumnya dan ini.
Cetak nomor pemain.
Lingkari setiap kartu.
Cetak tepi kartu.
Pilih indeks kartu yang belum diambil, dan tambahkan ke daftar indeks kartu yang dipilih.
Pilih dan cetak peringkat kartu dengan melakukan pengindeksan secara siklis ke serangkaian peringkat kartu yang valid (
2-9, T, J, Q, K, A
).Cetak bagian atas jas.
Cetak bagian tengah jas dengan mengiris tali. Iris dimulai pada kartu indeks modulo 4 dan mengambil setiap 4 karakter sampai string habis (atau
f
= 1000 tercapai). Karena 4 dan 13 adalah koprime, ini memastikan bahwa semua 52 kartu dimungkinkan.Cetak bagian bawah jas dan salinan pangkat, dan kemudian pindah ke titik yang nyaman tidak terlalu jauh dari salinan pangkat, awal kartu berikutnya, atau awal garis pemisah untuk pemain selanjutnya.
sumber
Python 2 , 357 byte
Cobalah online!
Saya tidak punya ide.
sumber
Jelly , 126 byte
Cobalah online!
sumber
JavaScript (ES6),
328... 312 byteMengambil input dalam sintaks currying
(p)(q)
. Pemain diindeks 0.Demo
Tampilkan cuplikan kode
Bagaimana?
Ini adalah fungsi rekursif, membangun output dari bawah ke atas. Selama bagian utama di mana kartu ditarik,
i
diinisialisasi kep*q*6
dan dikurangi hingga mencapai0
. Kami kemudian menggambar header dengan menurunkan lebih lanjuti
sampai mencapai-p
.Seni ASCII dibagi menjadi beberapa bagian kecil yang disimpan ke dalam array
a[]
. Tabel di bawah ini menjelaskan kontena[]
, yang membuat sisa kode lebih mudah dimengerti.Diformat dan dikomentari
sumber
Python 2 ,
382358346338332 byteCobalah online!
sumber
SOGL V0.12 , 106 byte
Coba Di Sini!
Menghasilkan kartu:
Mengocok:
Berurusan:
sumber
Ruby, 262 byte
Sulit untuk diikuti, tetapi lebih pendek!
Ruby, 279 byte
Buat format untuk setiap baris, lalu gunakan
%
seperti operatorsprintf
untuk mengisinya.Fakta bahwa nilai kartu muncul di setiap baris ke-3 berguna. Nilai kartu disajikan dalam heksadesimal dengan digit yang
01BC
digantiTJQK
.Menyimpan 4 byte dari simbol suit dengan mempertimbangkan bahwa bagian atas berlian dan sekop adalah sama tetapi ditambahkan 2 kembali pada
-4
pada akhirj%4*4-4
kode Suit adalah -4 0 4 atau 8 di mana[-4,4]
berarti 4 karakter memulai karakter terakhir ke-4 dalam tali.Mungkin bisa menyimpan beberapa byte lagi. Harus mengulang kode untuk identifikasi pemain itu jelek.
sumber
PHP, 509 byte
Cobalah online!
Ini adalah upaya pertama saya di kode golf, jadi mungkin bisa banyak ditingkatkan. Saya pikir saya harus mulai dari suatu tempat. :)
sumber
Java (OpenJDK 8) ,
784835843826815781775 byteCobalah online!
Mengapa downvote, itu sesuai dengan spek
sumber
Function<String,String>
: yang terakhir sangat, sangat mahal. Baik saat pembuatan dan saat digunakan.n[c]=t<2?"A":t<10?""+t:""+"TJQK".charAt(t-10)
;for(j=0;j<p;j++){o+=...;l++;}
bisafor(j=0;j<p;l++,j++)o+=...;
; Anda bisareturn o;
bukannyaSystem.out.print(o);
menggunakan satu detikFunction
bukannyaConsumer
;,y=p*q
dapat dihapus dan Anda dapat menggunakanp*q
dua kali secara langsung, bukany
. Tidak ada keraguan lagi untuk bermain golf, tapi saya tidak punya waktu untuk melihatnya sekarangs[l]<2?":/\\:":s[l]<3?":/\\:"
bisas[l]<3?":/\\:"
dans[i*p+j]<1?":\\/:":s[i*p+j]<2?":\\/:"
bisas[i*p+j]<2?":\\/:"
. @ OlivierGrégoire Dan saya sadar kemungkinan besar hampir setengahnya, jadi saya mengerti downvote. Tapi ini kebanyakan kurangnya pengalaman, dan memang tidak membaca semua tips beberapa kali. Beberapa hal dalam jawaban yang telah saya lakukan di masa lalu juga, dan ini bukan tantangan mudah khusus untuk Jawa. Btw, jika Anda memiliki jawaban 400-450 byte, mengapa Anda tidak mempostingnya sebagai jawaban yang terpisah (jika cukup berbeda)? Anda akan memiliki upvote saya. ;)Python 3, 332 Bytes
sumber