Başlıktan da anlaşılacağı gibi, bu sorun @NP'den Kibar Görüşlü Sarhoş Botundan yarı esinlenmiştir.
Zavallı botumuz başlangıçta kartezyen bir ızgaraya yerleştirilir ve her dakikadan sonra dört birimden birinde (Yukarı, Aşağı, Sol, Sağ) 1 birim hareket eder.
N dakika sonra , ızgaradaki gizli mayınların tümü etkinleşir ve üzerlerinde kendilerini bulabilecek kötü botları öldürür. Madenler, | y | = | x | denklemini sağlayan tüm tamsayı koordinatlarında bulunur.
Meydan okuma
Sen sağlanacaktır n girdi olarak, mayınlar patlamadan önce, dakika sayısını ve bot olduğunu bir çıkışı olarak, sen olasılığını bulmak zorundadır ölü .
Girdi : n'yi temsil eden doğal bir sayı .
Çıktı : Botun ölü olma olasılığı p / q olsun, burada p ve q nispeten tam sayıdır (q 0 olamaz, ancak p olabilir). Çıktı s.
kurallar
- Kişisel algoritma olmamalıdır üstel veya daha yüksek sürede çalıştırın. İdeal olarak polinom veya daha az zamanda çalışması gerekir.
- Algoritmanız
n
<20 girişleri (çok zorsa ayarlanabilir) makul bir sürede işleyebilmelidir . - Bu bir kod-golf mücadelesi.
- Belirli bir n için tüm olasılıkları yinelemek kesinlikle bir cevap olarak kabul edilmeyecektir.
Test Durumları
1
->0
2
->3
4
->39
6
->135
8
->7735
10
->28287
N = 6 için Örnek Hesaplama
4 olası hamlemiz var: U, D, R ve L. Gidilebilecek toplam yol sayısı 4 ^ 6 veya 4096'dır. Y = x: x, y = hattı boyunca inen 4 olası durum vardır. ± 1; x, y = ± 2; x, y = ± 3; veya x = y = 0. (1,1), (2,2) ve (3,3) 'te bitirme yollarının sayısını sayacağız, diğer çeyrekleri hesaba katmak için bunları 4 ile çarpacağız ve bunu (0,0) ile biten yol sayısına kadar.
Durum 1: Bot (3, 3) ile bitiyor. Botun burada bitmesi için 3 doğru hamle ve 3 yukarı hamle yapmış olması gerekir. Başka bir deyişle, buraya ulaşmanın toplam yolu, RRRUUU dizisindeki harfleri yeniden düzenlemenin yoludur; 6, 3 = 20'yi seçer.
Durum 2: Bot (2,2) ile bitiyor. Botun burada bitmesi için 2 yukarı hamle, 3 sağ hamle ve 1 sol hamle yapmış olabilir; veya 2 sağ hamle, 3 yukarı hamle ve 1 aşağı hamle. Böylece, buraya ulaşmanın toplam yol sayısı, her ikisi de (6 seçim 1) * (5 seçim 2) = 60 olmak üzere RRRLUU ve UUUDRR dizilerindeki harfleri yeniden düzenleme yollarının toplamıdır. .
Durum 3: Bot (1,1) ile bitiyor. Botun burada bitmesi için, 1 sağ hareket, 3 yukarı hareket ve 2 aşağı hareket olabilirdi. Bu durumda, RUUUDD dizisindeki harfleri yeniden düzenlemenin yolu (6 seçim 1) * (5 seçim 2) = 60'tır.
1 yukarı hareket, 3 sağ hareket ve 2 sol hareket. Bu durumda, URRRLL dizisindeki harfleri yeniden düzenlemenin yolu (6 seçim 1) * (5 seçim 2) = 60'tır.
2 sağ hamle, 1 sola hamle, 2 yukarı hamle ve 1 aşağı hamle. Bu durumda, UUDRRL dizisindeki harfleri yeniden düzenlemenin yolu (6 seçim 1) * (5 seçim 1) * (4 seçim 2) = 180'dir.
Böylece, (1,1) 'e ulaşmanın toplam yol sayısı 300'dür.
Durum 4: Bot (0,0) ile bitiyor. Botun burada sona ermesi için:
3 sağ hareket ve 3 sol hareket. Bu durumda, RRRLLL dizisindeki harfleri yeniden düzenlemenin yolu (6 seçim 3) = 20'dir.
3 yukarı ve 3 aşağı hareket. Bu durumda, UUUDDD dizisindeki harfleri yeniden düzenlemenin yolu (6 seçim 3) = 20'dir.
1 sağ hareket, 1 sol hareket, 2 yukarı hareket ve 2 aşağı hareket. Bu durumda, RLUUDD dizisindeki harfleri yeniden düzenlemenin yolu (6 seçim 1) * (5 seçim 1) * (4 seçim 2) = 180'dir.
1 yukarı hareket, 1 aşağı hareket, 2 sağ hareket ve 2 sol hareket. Bu durumda, RRLLUD dizisindeki harfleri yeniden düzenlemenin yolu (6 seçim 1) * (5 seçim 1) * (4 seçim 2) = 180'dir.
Böylece, (0,0) 'a ulaşmanın toplam yol sayısı 400'dür.
Bu vakaları bir araya getirerek, | y | = | x | 4 (20 + 120 + 300) + 400 = 2160'dır. Böylece, olasılığımız 2160/4096'dır. Bu fraksiyon tamamen azaldığında, 135/256, yani cevabımız 135 .