Dice Cricket adalah permainan yang saya perkenalkan sejak kecil dan telah digunakan sebagai cara untuk menghabiskan waktu bertahun-tahun sejak itu. Saya tidak dapat menemukan halaman Wikipedia jadi saya akan menjelaskan aturan di bawah ini.
Aturan Kriket Dadu
Premis
Dice Cricket adalah permainan yang mirip dengan mencetak permainan kriket saat Anda menontonnya, alih-alih menonton dan merekam hasilnya, Anda menggulirkan dadu dan merekam hasilnya.
Hasilnya dicatat dalam tabel seperti yang ditampilkan di bagian bawah.
Tampilan
Dice Cricket menggunakan tampilan khusus untuk menunjukkan semua informasi yang terjadi.
Tabel memiliki 11 baris. Setiap baris mewakili adonan. Tata letak baris dijelaskan di bawah ini.
+------+------------------------------+---------+-----+
| Name | Runs | How Out |Score|
+------+------------------------------+---------+-----+
- Nama: Nama harus berupa string yang seluruhnya terdiri dari huruf, huruf besar atau kecil
- Berlari: Sebuah adonan dapat menghadapi 30 bola. Setiap bola bisa menjadi salah satunya
1 2 4 6 . /
. Ini akan dijelaskan secara lebih rinci di bawah ini - How Out: Cara adonan keluar. Bisa dari siapa saja
Bowled, LBW (Leg Before Wicket), Caught, Retired or Not Out
- Nilai: Jumlah semua angka dalam
Runs
Cara Kerja Game
Dalam sebuah permainan, selalu ada 2 batters di atas lapangan. Pemain pertama secara default adonan saat ini dan yang kedua di adonan "off".
Sebuah permainan terdiri dari "bola": setiap bola dalam pertandingan kriket diwakili oleh dadu roll. Setiap gulungan melakukan perintah yang berbeda:
- 1,2,4 dan 6 membuat skor adonan sebanyak itu. Jika 1 digulung, adonan saat ini menjadi adonan "off" dan adonan "off" menjadi arus
- 3 adalah "bola dot", artinya tidak ada yang terjadi. Ini diwakili dalam
Runs
bagian sebagai a.
dan skor 0. A0
tidak dapat digunakan untuk mewakilinya. - 5 adalah gawang. Jika 5 digulung, adonan saat ini "keluar", ini berarti bahwa a
/
ditambahkan ke run dan sejak saat itu, adonan tidak dapat mencetak run lagi. Adonan kemudian ditukar dengan adonan berikutnya yang belum bertempur. TheHow Out
Bagian adalah pilihan acak dari cara yang mungkin untuk keluar:Bowled, LBW, Caught
Contoh untuk gawang (ini hanya untuk kejelasan, ini bukan bagaimana yang dihasilkan)
player a is on 4,6,2,6,4
player b is on 6,4,2,6,6
player c hasn't batted
player a is current batter
WICKET!!!
player a is on 4,6,2,6,4,/
player b in on 6,4,2,6,6
player c is on NOTHING
player c is current batter
Setiap 6 bola, dua batter beralih; adonan saat ini menjadi adonan "off" dan adonan "off" menjadi adonan saat ini
Jika Runs
bagian diisi (30 bola), adonan keluar dan How Out
bagian diatur ke Retired
. A /
tidak ditempatkan di ujung Runs
kotak.
Tantangan Aktual (ya semua itu aturan main)
Tantangan Anda adalah menampilkan tabel yang lengkap (seperti contoh di akhir), diberi daftar nama. Isi dari output harus hanya berisi tabel dan / atau spasi putih depan atau belakang.
Aturan
- Celah standar tidak diijinkan
- Semua 11 pemain harus memiliki sesuatu di
Runs
bagian tersebut. - Hanya 1 pemain yang bisa
Not Out
. Setiap pemain yang tidak pensiun harus keluar dari pilihan[Bowled, LBW, Caught]
- Nama bisa panjang antara 1 dan 6 yang cocok dengan regex
A-Za-z
- Baris terakhir dalam tabel harus menjadi garis total (lihat contoh)
- Anda tidak perlu menyelaraskan teks dalam tabel dengan cara apa pun, tetapi pemisah baris dan kolom harus disejajarkan.
Contoh
Input:
['Fred', 'Sonya', 'David', 'Ben', 'Cody', 'Hazel', 'Nina', 'Kim', 'Cath', 'Lena', 'Will']
Output:
+------+------------------------------+---------+-----+
| Name | Runs | How Out |Total|
+------+------------------------------+---------+-----+
|Fred |.662/ | Caught | 14 |
+------+------------------------------+---------+-----+
|Sonya |1164/ | Caught | 12 |
+------+------------------------------+---------+-----+
|David |/ | LBW | 0 |
+------+------------------------------+---------+-----+
|Ben |424/ | LBW | 10 |
+------+------------------------------+---------+-----+
|Cody |62/ | Bowled | 8 |
+------+------------------------------+---------+-----+
|Hazel |/ | LBW | 0 |
+------+------------------------------+---------+-----+
|Nina |161.6226166..44261442/ | Caught | 64 |
+------+------------------------------+---------+-----+
|Kim |11/ | Caught | 2 |
+------+------------------------------+---------+-----+
|Cath |6.21/ | LBW | 9 |
+------+------------------------------+---------+-----+
|Lena |/ | Bowled | 0 |
+------+------------------------------+---------+-----+
|Will |2 | Not Out | 2 |
+------+------------------------------+---------+-----+
| Total Runs | 121 |
+-----------------------------------------------+-----+
Jawaban:
Python 3 ,
650621582572588 byteCobalah online!
Yah, sudah lebih dari 24 jam dan ini membuat saya sekitar satu jam untuk menyiapkan, jadi saya harap saya tidak MENYENANGKAN siapa pun, dan saya belum bermain golf dengan Python dalam beberapa saat, jadi ini menyenangkan (walaupun ini menyenangkan kedua kalinya saya telah menjawab salah satu pertanyaan saya sendiri dengan jawaban Python panjang)
Jangan ragu untuk mengirim saran golf, Python bukan bahasa terbaik saya untuk bermain golf.
-68 byte berkat FlipTack !
-8 byte terima kasih kepada Tn. Xcoder
+16 byte karena bug
sumber
print
sebagai gantinyaP
. 2)sum
dapat langsung mengambilmap
objek, tidak perlu mengubahnya ke daftar. 3) Daripada menulisyield x
dua kali, mengapa tidakyield x
dan kemudian istirahat jika perlu? 4)T=0
dapat ditempatkan di dalam header fungsi. 5) Dalam fungsi terakhir Anda, Anda telah menggunakan beberapa baris baru di mana Anda bisa menggunakan satu baris dengan titik koma, misalnya tiga pernyataan pertama, tiga pernyataan terakhir, dan pernyataan dalam for loop.s
sangat ...def s(i=30):
dan kemudianwhile i:x=choice('12.4/6');yield x;i=('/'!=x)*~-i
. Juga, Anda hanya menelepono()
sekali, jadi tidak perlu menyatakannya, cukup gunakan pernyataan itu secara langsung.b
^^Arang ,
277.225byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Baca dalam 11 nama (input fleksibel: JSON, spasi terpisah, atau baris baru dipisahkan) dan buat larik
q
11 batter, diwakili oleh bola mereka (sebagai larik), status (sebagai bilangan bulat) dan nama.Buat salinan terbalik dari batter
h
. Ini mewakili batter yang tidak keluar. Dua elemen terakhir adalah batter off dan current.Ulangi sementara setidaknya ada dua batter tersedia.
Ekstrak adonan saat ini ke
i
.Hasilkan bola acak di
z
.Tambahkan ke daftar keseluruhan bola menggunakan daftar kosong yang telah ditentukan
u
.Tambahkan ke bola adonan saat ini.
Jika bola adalah a
/
, maka hasilkan status acak2..4
, sebaliknya jika ini adalah bola ke-30 adonan maka atur status ke1
sebaliknya0
.Jika adonan habis maka simpan status adonan jika tidak, masukkan kembali adonan ke bat.
Jika setidaknya ada dua batter yang tersisa, dan adonan habis atau 6 bola telah dimainkan, maka ...
... lepaskan batter off dan saat ini dan kembalikan ke urutan terbalik.
Cetak tajuk.
Loop di atas batter.
Cetak nama adonan.
Cetak bola adonan.
Cetak status adonan dengan mengindeks ke dalam string yang
Not OutRetiredBowled Caught LBW
dibagi menjadi substring dengan panjang 7.Cetak skor adonan.
Pindah ke awal baris berikutnya kecuali satu.
Cetak totalnya.
Gambar kotak di sekitar semuanya.
sumber