Beberapa kartu perdagangan memiliki nilai nyata dan dapat dijual dengan uang. Membungkuk kartu disukai karena mengambil nilainya dan membuat mereka terlihat kurang baru. Katakanlah Anda memiliki setumpuk kartu perdagangan (Pokemon, Magic, dll.) Dan Anda ingin mengocoknya. Alih-alih melakukan jembatan yang menekuk semua kartu, cara sederhana lain untuk mengocok kartu adalah dengan menumpuknya. Inilah yang saya maksud.
Latar Belakang
Dengan setumpuk 60 kartu yang perlu diacak, Anda dapat memisahkan 60 kartu menjadi tiga tumpukan 20 kartu. Ada beberapa cara untuk melakukan ini, yang paling sederhana adalah dengan meletakkan kartu ke tumpukan A, lalu satu ke tumpukan B, lalu satu ke tumpukan C. Cara lain adalah dengan memasukkan kartu ke tumpukan C, lalu B, lalu A. Ada juga cara untuk menyebarkan kartu ke tumpukan tidak merata. Ini salah satunya: letakkan kartu di tumpukan A, masukkan kartu lain di A, lalu masukkan kartu di tumpukan B, lalu masukkan kartu di tumpukan C.
Tantangan
Buat program lengkap yang akan menampilkan even
jika cara tertentu untuk mengocok tumpukan menyebar kartu di tumpukan secara merata, dan keluaran uneven
dan jumlah kartu di setiap tumpukan sebaliknya.
Memasukkan
Input akan diambil melalui STDIN atau alternatif terdekat (tidak ada fungsi).
[sequence] [deck size]
sequence
adalah serangkaian karakter. Ini memberitahu pola kartu diletakkan ke dalam tumpukan. Setiap karakter yang berbeda sesuai dengan satu tumpukan. String ini akan selalu berada di bawah ukuran dek dan hanya akan berisi huruf kapital AZ.deck size
adalah bilangan bulat yang menentukan jumlah kartu di dalam kartu. Jika ukuran dek adalah 60, jumlah kartu di dek adalah 60.
Keluaran
even
Jika jumlah kartu di setiap tumpukan di ujung acak adalah sama, program Anda harus menampilkan ini.
uneven [pile1] [pile2] [...]
Jika jumlah kartu di setiap tumpukan di ujung pengocokan tidak sama, program Anda harus menampilkan uneven
dan jumlah kartu di setiap tumpukan seperti ini: uneven 20 30
jika tumpukan A berisi 20 canrds dan tumpukan B berisi 30. Urutan dari nomor tumpukan tidak masalah.
Informasi lainnya
- Ini adalah tantangan kode golf, jadi kode terpendek dalam byte pada 25 September menang. Jika ada ikatan dalam jumlah byte, kode yang diajukan pertama kali menang.
- Program Anda harus berupa program, bukan fungsi.
- Jika memungkinkan, harap sertakan tautan ke juru bahasa online atau tautan ke tempat saya dapat mengunduh juru bahasa untuk bahasa Anda dalam jawaban Anda.
- Apa pun yang saya tidak tentukan dalam tantangan ini adalah permainan yang adil, artinya jika saya tidak mengatakannya, terserah Anda. Jika ada yang kabur, beri tahu saya dan saya akan mengedit jawaban sesuai. (Semoga ini berjalan lebih lancar dari tantangan terakhir saya.)
Contohnya
Input | Output | Alternate outputs (if uneven)
|
ABC 30 | even
ABC 31 | uneven 11 10 10 | uneven 10 11 10 | uneven 10 10 11
BCA 60 | even
BBA 24 | uneven 8 16 | uneven 16 8
ABACBC 120 | even
BBABA 50 | uneven 20 30 | uneven 30 20
AABBB 12 | even
sequence
seperti apa atau bagaimana cara kerjanya. Bisakah Anda menambahkan beberapa test case?:P
ABDD 12
input yang valid? Apa yang seharusnya menjadi output? Juga, apakah saya mengerti benar itu adilAABBB 12
?Jawaban:
Pyth,
3331 byteInput contoh:
sumber
Python 3.x, 106
128138byteIni menggandakan urutan input (lebih banyak dari yang dibutuhkan, yang cukup baik) dan kemudian hanya mengambil
n
karakter pertama . Ini dihitung dan salahuneven
ataueven
dipilih, dan jika yang pertama, jumlah juga dicetak denganprint(*z)
, yang secara otomatis membongkarz
untuk saya.Disimpan 32 byte berkat xnor dan Sp3000!
Juga, Python 3.5 memiliki fitur baru yang memungkinkan solusi 102 byte ini:
len({*z})>1
membongkar daftarz
, membuat satu set dari itu, lalu memeriksa untuk melihat apakah ia memiliki lebih dari satu elemen. Hal ini{*z}
khusus yang baru.sumber
[t.count(x) for x in set(t)]
bisa dilakukan sebagaimap
:map(t.count,set(t))
. Pertanyaannya memungkinkan tumpukan dalam urutan apa pun, jadi saya pikir Anda dapat menghindari melakukansorted
, bahkan jika itu berarti Anda harus melakukan sesuatu yang sedikit lebih lama daripadaz==z[::-1]
sukaz[1:]==z[:-1]
.print*
untuk mencetak elemen-elemen daftar yang dipisahkan oleh ruang. Ini biasanya lebih pendek dari' '.join
.CJam, 35 byte
Cobalah online di penerjemah CJam .
Bagaimana itu bekerja
sumber