Seperti judulnya mungkin sarankan, masalah ini semi-terinspirasi oleh Bot Mabuk Dekat Penglihatan oleh @NP
Bot kami yang buruk ditempatkan pada kisi cartesian di tempat asalnya, dan setelah setiap menit, bot bergerak 1 unit di salah satu dari empat arah (Atas, Bawah, Kiri, Kanan).
Setelah n menit, semua ranjau laten di grid diaktifkan, menewaskan bot miskin yang mungkin menemukan diri mereka sendiri di atasnya. Tambang terletak di semua koordinat bilangan bulat yang memenuhi persamaan | y | = | x |.
Tantangan
Anda akan diberikan n , jumlah menit sebelum ledakan tambang, sebagai input, dan sebagai output, Anda harus menemukan probabilitas bahwa bot sudah mati .
Input : Angka alami yang mewakili n .
Output : Biarkan probabilitas bot mati menjadi p / q, di mana p dan q adalah bilangan bulat yang relatif prima (q tidak bisa 0, tetapi p bisa). Output h.
Aturan
- Algoritme Anda tidak boleh berjalan dalam waktu eksponensial atau lebih tinggi. Idealnya harus dijalankan dalam waktu polinomial atau kurang.
- Algoritme Anda harus dapat menangani input
n
<20 (dapat disesuaikan jika terlalu sulit) dalam waktu yang wajar. - Ini adalah tantangan kode-golf .
- Iterasi semua kemungkinan untuk suatu n dan pasti tidak akan diterima sebagai jawaban.
Uji Kasus
1
->0
2
->3
4
->39
6
->135
8
->7735
10
->28287
Contoh Perhitungan untuk n = 6
Kami memiliki 4 kemungkinan pergerakan: U, D, R, dan L. Jumlah total jalur yang dapat diambil adalah 4 ^ 6, atau 4096. Ada 4 kemungkinan kasus yang mendarat di sepanjang garis y = x: x, y = ± 1; x, y = ± 2; x, y = ± 3; atau x = y = 0. Kami akan menghitung jumlah cara untuk berakhir pada (1,1), (2,2), dan (3,3), kalikan dengan 4 untuk memperhitungkan kuadran lain, dan tambahkan ini ke sejumlah cara untuk berakhir pada (0,0).
Kasus 1: Bot berakhir pada (3, 3). Agar bot berakhir di sini, ia harus memiliki 3 gerakan yang benar, dan 3 gerakan ke atas. Dengan kata lain, jumlah total cara untuk sampai ke sini adalah cara untuk mengatur ulang huruf dalam urutan RRRUUU, yaitu 6 pilih 3 = 20.
Kasus 2: Bot berakhir pada (2,2). Agar bot berakhir di sini, bisa saja ada 2 gerakan ke atas, 3 gerakan ke kanan, dan 1 gerakan ke kiri; atau 2 gerakan kanan, 3 gerakan ke atas, dan 1 gerakan ke bawah. Dengan demikian, jumlah total cara untuk sampai ke sini adalah jumlah cara untuk mengatur ulang huruf dalam urutan RRRLUU dan UUUDRR, yang keduanya (6 pilih 1) * (5 pilih 2) = 60, dengan total 120 kemungkinan .
Kasus 3: Bot berakhir pada (1,1). Agar bot berakhir di sini, bot bisa memiliki: 1 gerakan kanan, 3 gerakan ke atas, dan 2 gerakan ke bawah. Dalam hal ini, jumlah cara untuk mengatur ulang huruf dalam urutan RUUUDD adalah (6 pilih 1) * (5 pilih 2) = 60.
1 gerakan ke atas, 3 gerakan ke kanan, dan 2 gerakan ke kiri. Dalam hal ini, jumlah cara untuk mengatur ulang huruf-huruf dalam urutan URRRLL adalah (6 pilih 1) * (5 pilih 2) = 60.
2 gerakan kanan, 1 gerakan kiri, 2 gerakan ke atas, dan 1 gerakan ke bawah. Dalam hal ini, jumlah cara untuk mengatur ulang huruf dalam urutan UUDRRL adalah (6 pilih 1) * (5 pilih 1) * (4 pilih 2) = 180.
Dengan demikian, jumlah total cara untuk berakhir pada (1,1) adalah 300.
Kasus 4: Bot berakhir pada (0,0). Agar bot berakhir di sini, bot bisa memiliki:
3 gerakan kanan dan 3 gerakan kiri. Dalam hal ini, jumlah cara untuk mengatur ulang huruf dalam urutan RRRLLL adalah (6 pilih 3) = 20.
3 gerakan ke atas dan 3 gerakan ke bawah. Dalam hal ini, jumlah cara untuk mengatur ulang huruf-huruf dalam urutan UUUDDD adalah (6 pilih 3) = 20.
1 gerakan kanan, 1 gerakan kiri, 2 gerakan ke atas, dan 2 gerakan ke bawah. Dalam hal ini, jumlah cara untuk mengatur ulang huruf dalam urutan RLUUDD adalah (6 pilih 1) * (5 pilih 1) * (4 pilih 2) = 180.
1 gerakan naik, 1 gerakan turun, 2 gerakan kanan, dan 2 gerakan kiri. Dalam hal ini, jumlah cara untuk mengatur ulang huruf dalam urutan RRLLUD adalah (6 pilih 1) * (5 pilih 1) * (4 pilih 2) = 180.
Dengan demikian, jumlah total cara untuk berakhir pada (0,0) adalah 400.
Menambahkan kasus-kasus ini bersama-sama, kita mendapatkan jumlah total cara untuk berakhir di | y | = | x | adalah 4 (20 + 120 + 300) + 400 = 2160. Dengan demikian, probabilitas kami adalah 2160/4096. Ketika fraksi ini berkurang sepenuhnya, itu 135/256, jadi jawaban kami adalah 135 .