Tantangan
Saya sedang diserang oleh Midnight Crew yang berbahaya dan saya perlu memanggil Daten Cascading Doomsday Dicesday untuk mempertahankan diri. Karena saya kekurangan ruang, saya perlu kode sesingkat mungkin.
Algoritma untuk Catenative Doomsday Dice Cascader adalah sebagai berikut:
Pertama, dadu bersisi enam dalam Gelembung Utama digulirkan, dan hasilnya akan menentukan berapa banyak iterasi pada langkah berikutnya yang terjadi.
Mulailah dengan dadu enam sisi. Untuk sebanyak gulungan Prime Bubble die, gandakan jumlah sisi pada die berikutnya dengan hasil dari roll die saat ini. Misalnya, jika pada gulungan pertama Anda dari dadu enam sisi, gulungan Anda adalah 2, maka dadu Anda berikutnya akan memiliki 6 * 2 = 12 sisi.
Tujuan Anda adalah untuk menulis suatu fungsi atau program yang tidak mengambil input dan mengeluarkan hasil akhir dari die roll terakhir. Karena ini adalah kode-golf , jumlah byte terendah dalam setiap bahasa menang!
Contohnya
Contoh # 1 (Diambil langsung dari tautan di atas):
The Prime Bubble rolls a 6, meaning that the Cascader will iterate six times
#1: We always start with a 6 sided die, and it rolls a 2, so the next die has 6x2=12 sides
#2: The 12 sided die rolls an 8, meaning that the third die has 12x8=96 sides
#3: The 96 sided die rolls a 35, meaning that die 4 has 96x35=3360 sides
#4: The 3360 sided die rolls a 2922, so die 5 has 3360x2922 = 9,817,920 sides
#5: The 9.8 million sided die rolls a 5,101,894, so the final die has 50,089,987,140,480 sides
#6: The 50 trillion sided die rolls a one. Hooray.
Since the last die rolled gave a 1, your function or program should output 1.
Contoh # 2
The Prime Bubble rolls a 2, meaning that the Cascader will iterate twice.
#1: We always start with a 6 sided die, and it rolls a 4, so the next die has 6x4 = 24 sides
#2: The 24 sided die rolls a 14
Since the last die rolled gave a 14, your function or program should output 14.
Jawaban:
Python 2 ,
7669 byteCobalah online!
sumber
Perl 6 ,
4337 byte-6 byte terima kasih kepada nwellnhof
Cobalah online!
Blok kode anonim yang mengembalikan hasil dadu kiamat.
Penjelasan:
sumber
Bahasa Wolfram (Mathematica) , 43 byte
Cobalah online!
sumber
J , 21 byte
Cobalah online!
+6 byte berkat masalah logika yang terlihat oleh FrownyFrog
CATATAN: J tidak memiliki kata kerja niladik. Namun, kata kerja ini akan bekerja sama tidak peduli apa argumen yang Anda berikan. Dalam contoh TIO, saya menyebutnya dengan
0
, tetapi saya bisa menggunakan99
atau''
hanya juga.bagaimana
1+
tambahkan satu ke ...[:?
satu gulungan dadu bersisi-n (sisi membaca0
ken-1
), di mana jumlahnyan
ditentukan oleh ...(*1+?)
ambil argumen saat iniy
dan gulung?
untuk menghasilkan angka acak antara0
dany-1
.1+
membuat itu1
menjadiy
, inklusif. Akhirnya*
menciptakan hook J, yang akan mengalikannyay
lagi.^:
lakukan hal di atas ini berkali-kali ...(?`])
?
gulung argumen awal, yaitu6
, untuk menentukan berapa kali mengulangi. Jika kita menggulung0
(sesuai dengan a1
di Bubble Prime), argumen akan melewati tidak berubah. The]
menunjukkan bahwa6
, tidak berubah, akan menjadi nilai mulai dari mengulangi(*1+?)
kata kerja yang menentukan nilai mati untuk roll akhir.@6x
menempelkan kata kerja konstan6
, sehingga kita dapat menyebutnya dengan apa saja, danx
gaya J untuk menggunakan komputasi bilangan bulat diperluas yang kita butuhkan untuk angka yang mungkin sangat besar.sumber
in this case 0 executes the previous verb once, 1 twice, etc
mengapa demikian?K (oK) , 32 byte
Larutan:
Cobalah online!
Mulailah dengan 6 dan "1 pilih 6", ulangi kali "1 pilih 6":
Anda dapat melihat iterasi dengan mengalihkan over untuk pemindaian , misalnya
sumber
(*).x
->*/x
dan{
}/[*a;6,a:1+1?6]
->a{
}/6,a:*1+1?6
Jelly , 9 byte
Tautan niladik yang menghasilkan bilangan bulat positif.
Cobalah online!
Menyimpan byte lebih jelas
6X×$6X’¤¡X
Bagaimana?
sumber
05AB1E , 10 byte
Pilihan acak bawaan untuk daftar besar cukup lambat, sehingga dapat mengakibatkan waktu habis jika gulungan Prime Bubble misalnya 6.
Cobalah online atau coba online dengan cetakan yang ditambahkan untuk melihat gulungan . (TIO menggunakan versi lawas 05AB1E, karena sedikit lebih cepat.)
Penjelasan:
sumber
Jelly , 9 byte
Cobalah online!
Jawaban Jonathan Allan mengklaim itu
. Sebenarnya, kita tidak perlu melakukan modifikasi sebesar itu. Oleh karena itu, ini adalah pendekatan alternatif untuk jawaban Jonathan Allan, dan, juga, tempat istirahat untuk 6-byter awal saya yang tidak valid. :(
sumber
Perl 5 , 54 byte
Cobalah online!
sumber
Arang , 16 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Tekan 6 ke daftar yang telah ditentukan.
Ulangi beberapa kali secara acak dari 1 hingga 6 ...
... dorong nomor acak antara 1 dan produk dari daftar ke daftar.
Keluarkan nomor terakhir yang didorong ke daftar.
Pendekatan alternatif, juga 16 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Atur jumlah sisi menjadi 6.
Ulangi angka acak antara 0 dan 5 kali ...
... gandakan jumlah sisi dengan angka acak dari 1 ke jumlah sisi.
Cetak angka acak dari 1 hingga jumlah sisi.
sumber
Python 3 , 76 byte
Cobalah online!
-2 byte berkat TFeld
sumber
R , 43 byte
Cobalah online!
k
melacak jumlah wajah saat ini pada cetakan. Menggunakan fakta yangT
diinisialisasi sebagai1
.Saya mencoba beberapa hal lain, tetapi tidak bisa mengalahkan pendekatan yang sederhana dan langsung ini.
sumber
Jelly , 10 byte
Cobalah online!
Penjelasan
sumber
Ruby , 41 byte
Cobalah online!
Penjelasan
sumber
Java 10,
2149386 byteCobalah secara online atau coba online dengan jalur cetak tambahan untuk melihat langkah-langkahnya .
int
java.math.BigInteger
int
long
BigInteger
int
BigIntegers
Penjelasan:
sumber
int
int
tipenya.PHP , 59 byte
diperluas:
Tidak yakin apakah saya harus menyertakan tag terbuka.
Di komputer saya, crash jika
$s*$r
terlalu besar, sehingga$q>=5
kadang-kadang tidak mencetak ... karena jumlahnya menjadi sangat besar. Tidak yakin dengan perbaikan.sumber
Pyth , 14 byte
Cobalah online!
sumber
C # (.NET Core) , 136 byte
Cobalah online!
Saya cukup yakin ini berhasil, dengan asumsi panjang integer tak terbatas yang kita sukai di sini. Jika saya harus benar-benar menangani overflow, saya harus mengeluarkan kelas yang sama sekali berbeda.
sumber
System.ArgumentOutOfRangeException: 'maxValue' must be greater than zero
int
long
BigIntegers
Julia 1.0 , 60 byte
b=big(6)
membuatnya bekerja dengan bilangan bulat berukuran sembarang Coba online!sumber
Gaia , 13 byte
Cobalah online!
sumber