Malam ini adalah malam permainan kartu! Anda adalah dealer dan tugas Anda adalah menulis program untuk memberikan kartu kepada para pemain.
Diberikan berbagai kartu dan jumlah pemain, Anda perlu membagi array kartu menjadi satu tangan untuk setiap pemain.
Aturan
Program Anda akan menerima larik non-kosong A
, serta bilangan bulat positif tidak nol n
. Array kemudian harus dibagi menjadi n
tangan. Jika panjang tali tidak dapat dibagi oleh n
kartu sisa di akhir harus dibagikan serata mungkin.
- Jika
n==1
, Anda harus mengembalikan array denganA
karena hanya elemen Jika
n
lebih besar dari panjangnyaA
, Anda harus mengembalikan setiap tangan dan tangan kosong. jikan = 4
danarray A = [1,2,3]
, Anda harus kembali[[1],[2],[3]]
atau[[1],[2],[3],[]]
. Anda bebas menangani tangan kosong dengan kosong, tidak terdefinisi atau nol.Array dapat berisi jenis apa saja dan bukan angka.
Anda seharusnya tidak mengubah urutan array saat berhadapan. Sebagai contoh
if n = 2
danA= [1,2,3]
, hasil apa pun alih-alih[[1,3],[2]]
akan tidak valid.
Uji Kasus
n A Output
1 [1,2,3,4,5,6] [[1,2,3,4,5,6]]
2 [1,2,3,4,5,6] [[1,3,5],[2,4,6]]
3 [1,2,3,4,5,6] [[1,4],[2,5],[3,6]]
4 [1,2,3,4,5,6] [[1,5],[2,6],[3],[4]]
7 [1,2,3,4,5,6] [[1],[2],[3],[4],[5],[6]] // or [[1],[2],[3],[4],[5],[6],[]]
Program Demo
def deal(cards, n):
i = 0
players = [[] for _ in range(n)]
for card in cards:
players[i % n].append(card)
i += 1
return players
hands = deal([1,2,3,4,5,6], 2)
print(hands)
Ini adalah kode-golf , sehingga Anda byte terpendek dari setiap bahasa akan menjadi pemenangnya.
Terinspirasi dari Buat potongan dari array oleh chau giang
sumber
0
?Jawaban:
05AB1E ,
31 byteDisimpan 2 byte berkat Adnan
Cobalah online! atau sebagai Test Suite
Penjelasan
Melakukan apa yang diminta tantangan
sumber
ι
n=7
, tapi itu adalah format output yang dapat diterima. Saya benar-benar merindukan built-in: /R ,
4625 byteCobalah online!
split
sA
ke dalam kelompok yang ditentukan oleh1:n
, didaur ulang1:n
sampai cocok dengan panjangnyaA
.sumber
Perl 6 ,
3324 byteCobalah online!
Blok kode kari anonim yang mengambil nomor dan mengembalikan lambda apa pun yang mengambil daftar dan mengembalikan daftar daftar. Ini mengambil opsi kedua ketika diberi nomor yang lebih besar dari panjang daftar, misalnya
f(4)([1,2,3])
pengembalian[[1],[2],[3]]
Penjelasan:
sumber
Bahasa Wolfram (Mathematica) , 28 byte
Cobalah online!
sumber
Japt, 2 byte
Mengambil array sebagai input pertama.
Cobalah
sumber
Python 2 , 37 byte
Kode:
Cobalah online!
sumber
Jelly ,
62 byteCobalah online!
Terima kasih kepada @JonathanAllan karena telah menghemat 4 byte
sumber
sZ
bekerjaJ ,
13,11,10, 9 byteCobalah online!
bagaimana (penjelasan sebelumnya, pada dasarnya sama)
sumber
Arang , 9 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Mengambil input dalam urutan
[n, A]
dan mengeluarkan setiap nilai pada barisnya masing-masing dan masing-masing spasi ganda dari sebelumnya. Penjelasan:sumber
Haskell , 39 byte
Catatan:
Data.Lists
berasal dari daftar perpustakaan pihak ketiga , yang tidak ada di Stackage dan karenanya tidak akan muncul di Hoogle.sumber
Data.Lists
sepertinya tidak ada. Saya akan berasumsi bahwa Anda berartiData.List
, tetapi tidak mengandungchunksOf
.chunksOf
sepertinya hanya muncul dengan tanda tanganInt -> Text -> [Text]
. 1lists
paket.split
paket dan diekspor kembali olehlists
paket. Ada versichunksOf
untuk daftar, teks, urutan, dan mungkin hal-hal lain.Kotlin ,
535149 byteSolusi lama dan salah hanya bekerja untuk pembagi panjang array. Saya yakin ini bisa diturunkan.
Cobalah online!
sumber
n
bukan merupakan pembagi dari panjang daftarJavaScript (Node.js) , 51 byte
Cobalah online!
JavaScript (Node.js) , 53 byte
Cobalah online!
sumber
APL + WIN 26 atau 31 byte
Jika masing-masing tangan dapat direpresentasikan sebagai kolom dari matriks 2D maka 26 byte jika array array kemudian tambahkan 5 byte.
Cobalah online! ourtesy dari Dyalog Classic
atau
Cobalah online! Atas perkenan Dyalog Classic
Penjelasan:
← ⎕ prompt untuk array kartu
((l ← ⌈ (⍴a) ÷ n) × n ← ⎕) ↑ meminta integer, pad a dengan nol untuk diberikan tangan yang rata
(l, n) ⍴ buat matriks 2D dengan setiap kolom mewakili masing-masing tangan
⊂ [1] jika perlu dikonversi ke vektor bersarang - array array APL
sumber
TSQL, 44 byte
Cobalah
sumber
MathGolf , 9 byte
Cobalah online!
Penjelasan
sumber
Java (JDK) , 90 byte
Cobalah online!
Terima kasih Olivier Grégoire untuk lambda dan peningkatan yang lebih baik saat iterasi.
sumber
Ruby, 81 byte
Cobalah secara Online
sumber
each_with_index
cukup mahal dibandingkan dengan penghitung tambahan,map{[]}
pada dasarnya melakukan hal yang sama sepertimap(&:dup)
trik Anda , Proc anonim, dll. yang dapat mengurangi kode Anda hingga 59 byte. Cobalah online! Lihat juga halaman tips RubyPHP ,
858382 byteCobalah online!
Ini bukan entri terpendek, tapi saya pikir akan menyenangkan untuk mencoba dan melakukannya menggunakan fungsi array PHP built-in. Hasil: panjang.
Keluaran
sumber
print_flat
Anda hanya dapat melakukanjson_encode
sandbox - jangan benar-benar mengubah jawabannya, hanya berpikir saya akan menyebutkannya, tepuk tangan!Bahasa Wolfram (Mathematica) , 25 byte
Cobalah online!
sumber
;; ;;
hanya sepotong, kira-kira setara dengan python: :
; ini mendapat irisan setiap;;
bukan;
lol. sedang melihat ini "wth isi ; ; ; ; #
"C # (Visual C # Interactive Compiler) , 43 byte
Cobalah online!
sumber
[1,2,3], 4
harus menampilkan[[1],[2],[3]]
. Anda memberikan 3 kartu kepada 4 pemain. Saya akan memperbarui pertanyaan utama.C (gcc), 5 byte
Bendera kompiler
-Df=
(req. Leading space) memenuhi spesifikasi.f(n_cards,n_hands,card_ptr)
mengevaluasi ke penunjuk ke daftar tangan.Penjelasan
Di C, itu adalah praktik umum untuk mengimplementasikan daftar daftar sebagai satu array yang disisipkan, ketika jumlah daftar tetap konstan tetapi semua daftar dapat diperpanjang. Sebagai contoh, dalam kasus kartu yang bertransaksi ini, lebih banyak kartu yang ditambahkan pada masing-masing tangan daripada lebih banyak tangan yang ditambahkan, sehingga masuk akal untuk mengimplementasikan daftar tangan sebagai daftar yang disisipkan. Secara kebetulan, "dek" adalah daftar seperti itu, dan dengan demikian kita mengembalikan parameter yang tidak dimodifikasi.
Tantangan ini mungkin seharusnya sudah di-sandbox.
sumber
Perl 5
-la
,6656 bytesCobalah online!
sumber