Minefield의 정중 한 시력 취한 봇


11

제목에서 알 수 있듯이이 문제는 @NP 의 Polite Near-Sighted Drunk Bot에 의해 반 영감 을 받았습니다.

우리의 빈약 한 봇은 원점에서 데카르트 그리드에 배치되며, 1 분마다 4 개의 방향 중 하나 (위, 아래, 왼쪽, 오른쪽)로 1 단위 씩 움직입니다.

n 분이 지나면 그리드의 모든 잠재 광산이 활성화되어 불쌍한 봇을 죽입니다. 지뢰는 방정식 | y | = | x |를 만족하는 모든 정수 좌표에 위치합니다.

도전

당신이 제공됩니다 n은 입력으로, 광산 폭발하기 전에 시간 (분)을, 그리고 봇이라고 출력으로, 당신은 가능성을 발견해야한다 죽은 .

입력 : n을 나타내는 자연수 .

출력 : 봇이 죽을 확률을 p / q로 설정하십시오. 여기서 p와 q는 비교적 소수입니다 (q는 0이 아니라 p는 가능). 출력 p.

규칙

  • 알고리즘 이 지수 이상으로 실행 되어서는 안됩니다 . 다항식 시간 이하로 실행하는 것이 이상적입니다.
  • 알고리즘은 n적절한 시간 에 <20의 입력을 처리 할 수 ​​있어야합니다 (너무 세게 조정될 수 있음).
  • 이것은 도전입니다.
  • 주어진 n에 대한 모든 가능성을 반복 하는 것은 대답으로 받아 들여지지 않을 것입니다.

테스트 사례

1->0

2->3

4->39

6->135

8->7735

10->28287

n = 6에 대한 계산 예

U, D, R 및 L의 4 가지 이동이 가능합니다. 취할 수있는 총 경로 수는 4 ^ 6 또는 4096입니다. y = x : x, y = 선을 따라 4 가지 가능한 경우가 있습니다. ± 1; x, y = ± 2; x, y = ± 3; 또는 x = y = 0입니다. 우리는 (1,1), (2,2) 및 (3,3)에서 끝나는 방법의 수를 세고 다른 사분면을 설명하기 위해 4를 곱합니다. 이것은 (0,0)에 끝나는 방법의 수입니다.

사례 1 : 봇은 (3, 3)에서 끝납니다. 봇이 여기에 오게하려면 오른쪽으로 3 번, 위쪽으로 3 번 움직여야합니다. 즉, 여기에 오는 총 방법 수는 시퀀스 RRRUUU에서 문자를 재배 열하는 방법입니다. 6은 3 = 20을 선택합니다.

사례 2 : 봇은 (2,2)에서 끝납니다. 봇이 여기에서 끝나기 위해서는 2 번의 위로 이동, 3 번의 오른쪽 이동 및 1 개의 왼쪽 이동이있을 수 있습니다. 또는 2 개의 오른쪽 이동, 3 개의 위쪽 이동 및 1 개의 아래쪽 이동. 따라서 여기에 도달하는 총 방법 수는 시퀀스 RRRLUU 및 UUUDRR의 문자를 재배 열하는 방법의 합계입니다. 두 방법 모두 (6 choose 1) * (5 choose 2) = 60입니다. .

사례 3 : 봇은 (1,1)에서 끝납니다. 봇이 여기에 오게하려면 오른쪽 이동 1 개, 위쪽 이동 3 개, 아래쪽 이동 2 개가있을 수 있습니다. 이 경우 시퀀스 RUUUDD에서 문자를 재배 열하는 방법의 수는 (6 choose 1) * (5 choose 2) = 60입니다.

1 위로 이동, 3 오른쪽 이동 및 2 왼쪽 이동. 이 경우 시퀀스 URRRLL에서 문자를 재배 열하는 방법의 수는 (6 choose 1) * (5 choose 2) = 60입니다.

2 개의 오른쪽 이동, 1 개의 왼쪽 이동, 2 개의 위쪽 이동 및 1 개의 아래쪽 이동. 이 경우 순서 UUDRRL에서 문자를 재배 열하는 방법의 수는 (6 choose 1) * (5 choose 1) * (4 choose 2) = 180입니다.

따라서 (1,1)에서 끝나는 총 방법 수는 300입니다.

사례 4 : 봇은 (0,0)에서 끝납니다. 봇이 여기에 오게하려면 다음을 수행해야합니다.

3 개의 오른쪽 이동 및 3 개의 왼쪽 이동. 이 경우 시퀀스 RRRLLL에서 문자를 재배 열하는 방법의 수는 (6 choose 3) = 20입니다.

3 위로 이동하고 3 아래로 이동합니다. 이 경우 시퀀스 UUUDDD에서 문자를 재배 열하는 방법의 수는 (6 choose 3) = 20입니다.

1 오른쪽 이동, 1 왼쪽 이동, 2 위쪽 이동 및 2 아래쪽 이동 이 경우 시퀀스 RLUUDD에서 문자를 재배 열하는 방법의 수는 (6 choose 1) * (5 choose 1) * (4 choose 2) = 180입니다.

1 위로 이동, 1 아래로 이동, 2 오른쪽 이동 및 2 왼쪽 이동. 이 경우 시퀀스 RRLLUD에서 문자를 재배 열하는 방법의 수는 (6 choose 1) * (5 choose 1) * (4 choose 2) = 180입니다.

따라서 (0,0)에서 끝나는 총 방법 수는 400입니다.

이 경우들을 합하면 총 | y | = | x | 4 (20 + 120 + 300) + 400 = 2160입니다. 따라서 우리의 확률은 2160/4096입니다. 이 분수가 완전히 줄어들면 135/256이므로 답은 135 입니다.


나는 도전을 좋아하지만 아주 작은 테스트 사례 (2 또는 3) 중 하나에 대한 예제를 포함하면 이점이 있다고 생각합니다.
Mr. Xcoder

@ Mr.Xcoder 시간이 있으면 추가하겠습니다.
Don Thousand

2
재미있는 도전. 규칙에 "이상적으로"라는 단어를 사용하면 규칙이 아닙니다. 어떤 식 으로든 분명히 말하면 유용 할 것입니다.
trichoplax

1
그러나 아무도 1 세대 학습 알고리즘에 대해 이야기하지 않습니까?
Redwolf 프로그램

1
@RedwolfPrograms ahaha yea 그러나이 봇은 더 멋진 이름을 가지고 있습니다
Don Thousand

답변:


17

파이썬 2 , 65 바이트

def p(n):b=2**n;r=b*b-((~b)**n/b**(n/2)%-b)**2;print~n%2*r/(r&-r)

온라인으로 사용해보십시오!

봇이 죽었을 확률은 다음과 같이 표현 될 수 있습니다.

에프()=2에스에스2, 어디 에스=12(/2)

0/2

와이=엑스/2(/2)2

에스=12(/2)

와이=엑스에스2에스엑스=와이=0

착륙 확률이 밝혀졌습니다 엑스=와이=0에스2엑스=와이엑스=와이

엑스=와이엑스=와이2에스에스2

(/2)(b+1)**n/b**(n/2)%bb=2**nr/(r&-r)rr&-r

2에스에스21(1에스)2에스1/2


봇이 죽을 확률에 대한 증거를 작성한 후, 나는 그것을 증명하고 제시 할 수있는 더 확실한 방법을 찾았습니다.

의 값을 추적합시다=엑스+와이=엑스와이

따라서 무작위 이동은 무작위로 추가하는 것과 같습니다.±1±1

이제 로봇은 선에서 끝납니다.엑스=와이엑스=와이=0=0=0에스=12(/2)=000(1에스)21(1에스)2


3
환상적인! 나는 누군가 이것을 이끌어 내기를 기다리고 있었다. 나는 그것이 그렇게 빠르다고 상상하지 않았다. 단점은 다른 대부분의 답변은 너무 많이 생각할 필요가 없다는 것입니다. (. 우수 +1
돈 사우 전드

작은 현상금을 즐기십시오 (너무 미안하지는 않습니다)
Don Thousand

1
@RushabhMehta 감사합니다. 정말 친절합니다! 당신의 현상금은 내가 나중에 생각한 더 확실한 증거를 작성하도록 동기를 부여했습니다.
xnor

이 문제에 대한 진정한 영감은 AIME I 2014 문제 11입니다.
Don Thousand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.