Poker memiliki etiket dalam cara Anda mengatur chip Anda, sering kali diberlakukan di turnamen - chip Anda mungkin tidak "disembunyikan" dari lawan Anda dengan berada di belakang yang lain, kebanyakan untuk tidak menyembunyikan beberapa chip denominasi besar.
Tantangan
Kami akan bermain poker di ASCII, jadi kami perlu menulis fungsi atau program yang akan menarik susunan chip ASCII kami dengan nilai totalnya n
,.
Input
- Bilangan bulat positif, n
(hingga 2**32-1
harus ditangani)
Output
- Representasi ASCII dari pengaturan stack seperti yang didefinisikan di bawah ini.
Ini mungkin berisi spasi putih di sebelah kanan setiap baris sehingga tidak ada garis yang lebih panjang dari satu karakter lebih dari panjang yang digunakan oleh karakter yang dapat dicetak dalam garis terpanjang (bawah);
Ini mungkin mengandung satu baris baru yang tertinggal; dan
Karakter yang mewakili chip mungkin dalam huruf kecil jika Anda mau.
Pengaturan tumpukan akan:
- Mengandung keripik sesedikit mungkin, mengingat denominasi (lihat di bawah);
- Akan memiliki chip bernilai sama di "tumpukan" (kolom);
- Diperintahkan sedemikian rupa sehingga tumpukan yang lebih pendek berada di sebelah kanan tumpukan yang lebih tinggi; dan
- Diperintahkan sedemikian rupa sehingga tumpukan dengan chip denominasi yang lebih besar akan berada di sebelah kanan tumpukan yang berukuran sama dari denominasi yang lebih rendah (menyatakan bahwa mereka dapat dilihat oleh lawan kami di sebelah kanan)
Chip itu sendiri harus direpresentasikan sebagai karakter individu yang mengidentifikasi warna mereka:
White : 1 = W
Red : 5 = R
Green : 25 = G
Black : 100 = B
Yellow : 500 = Y
Pink : 1K = P
Orange : 5K = O
Cyan : 25K = C
Magenta : 100K = M
Aqua-blue : 500K = A
Lavender : 1M = L
Indigo : 5M = I
Turquoise : 25M = T
Violet : 100M = V
Silver : 500M = S
Contoh
Untuk n = 276,352
jumlah chip terkecil adalah:
2 * 100K + 3 * 25K + 1 * 1K + 3 * 100 + 2 * 25 + 2 * 1
MM CCC P BBB GG WW
Satu P
harus pergi di paling kanan,
maka tiga tumpukan ukuran 2
harus pergi berikutnya,
- tetapi MM
harus pergi terjauh ke kanan diikuti oleh GG
dan kemudian WW
sejak 100K > 25 > 1
itu dua tumpukan ukuran 3
pergi ke kiri,
- tetapi CCC
harus pergi ke kanan BBB
sejak saat itu25K > 100
Sekarang kita harus menempatkan chip ini ke tumpukan yang sebenarnya, untuk menghasilkan output:
BC
BCWGM
BCWGMP
Uji Kasus
Input:
1
Output:
W
Input:
9378278
Output:
L
LWGPCM
LWGPCMB
LWGPCMBI
Input:
22222222
Output:
ROI
ROI
ROIWBPML
ROIWBPML
Input:
1342185143
Output:
WRCIV
WRCIVOLS
WRCIVOLSGBMT
Input:
2147483647
Output:
RMIS
RMISPC
RMISPCWL
RMISPCWLGBYOTV
Input:
4294967295
Output:
S
S
S
S
SRML
SRMLGOIT
SRMLGOITBPCV
SRMLGOITBPCVA
Ini adalah kode-golf , jadi kode terpendek dalam byte menang. Tidak ada celah, yada yada, Anda tahu bornya.
2**31-1
, atau maksud Anda lebih besar dari kebanyakanint
tipe yang ditandatangani ?2**32-1
adalah ujian, tapi saya bersedia menurunkannya. (Fakta menarik: PokerStars memiliki25B
chip di folder gambar mereka.)Jawaban:
Pyth,
565552 byteKode ini mengandung beberapa unsintables, jadi inilah
xxd
hexdump yang dapat dibalik.Cobalah online. Suite uji.
Kiat pro: untuk bermain golf
1
di akhir program yang menerima angka bukan nolQ
, cukup tambahkan/
./QQ
, yang dalam Python akanQ // Q
, adalah 1 untuk nolQ
.Tanpa kompresi dan unsintables (55 byte):
sumber
JavaScript (ES6),
185177... 171 byteDiformat dan dikomentari
Demo
sumber
Rubi,
181177 byteTes pada Ideone .
sumber
Python 2.7,
282248238 bytePenjelasan:
Isi daftar
L
dengan elemen-elemen yang[quanity, chip_order, chip_character]
menunjukkan jumlah masing-masing jenis chip, di manachip_order
memastikan chip dengan jumlah yang sama disortir dalam urutan terbalik (chip bernilai lebih tinggi terlebih dahulu ). Ambil chip dariL
terbalik untuk membangun string untuk setiap baris. Cetak garis secara terbalik untuk mendapatkan garis terkecil di atas.Terima kasih kepada Blue untuk beberapa perbaikannya.
sumber
for
loop pertama ), Anda bisa mengganti nilai mentah untuk menghemat beberapa byte. Untuk tips lebih lanjut, lihat codegolf.stackexchange.com/questions/54/…input
akan membuat Anda bilangan bulat tanpa harus mengonversi, danX[0]>0
dapat disingkat menjadiX[0]
Mathematica, 440 byte
Representasi ASCI dan urutan kanan menelan sebagian besar kode.
* Hanya berfungsi dengan Version11 dan lebih tinggi (penggunaan Tidak Ada) *
sumber
PHP, 274 Bytes
sumber