위대한 API 부활절 달걀 사냥에서 영감을 !
요약
귀하의 작업은 가능한 가장 적은 단계를 사용하여 "콜라 츠 공간"(후술 할 설명)에서 미리 결정된 정수를 검색하는 것입니다.
소개
이 도전은 적어도 여기에있는 모든 사람들이 들어 본 유명한 Collatz 추측에 근거합니다. 다음은 Super Collatz 번호 인쇄에 대한 요약 입니다 .
Collatz 시퀀스 는, 양의 정수로 시작이 예를 들어 우리가 10를 사용하고, 그것에 단계의 설정을 적용 할 경우 (도 3 배 + 1 문제라고합니다)입니다 :
if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1
Collatz 거리 C(m,n)
두 숫자 사이 m
및 n
이러한 문제의 목적은, 상기의 두 숫자 사이의 거리 Collatz 그래프 (하여 다음과 같이 정의된다 (이 개념에 대해 말해위한 @tsh 크레딧) 21
및 13
예로서 ) :
Collatz 시퀀스를 기록하십시오 m
(이 경우 21
) :
21, 64, 32, 16, 8, 4, 2, 1
Collatz 시퀀스를 기록하십시오 n
(이 경우 13
) :
13, 40, 20, 10, 5, 16, 8, 4, 2, 1
이제 시퀀스 중 하나에 만 숫자가 나타나는지 계산하십시오. 이것은 Collatz 사이의 거리로 정의 m
하고 n
. 이 경우, 8
즉
21, 64, 32, 13, 40, 20, 10, 5
Collatz 거리 21
와 13
as 사이의 거리가 있습니다 C(21,13)=8
.
C(m,n)
다음과 같은 멋진 속성이 있습니다.
C(m,n)=C(n,m)
C(m,n)=0 iff. m=n
바라건대 정의 C(m,n)
가 이제 명확 해졌습니다. Collatz 공간에서 계란 사냥을 시작합시다!
간격의 정수 : 게임이 시작될 때, 제어기는 하나의 차원 좌표로 표현되는 이스터의 위치 결정 [p,q]
(즉, 사이의 정수 p
와 q
, 양단 값 포함).
계란의 위치는 게임 내내 일정하게 유지됩니다. 이 좌표를로 표시합니다 r
.
이제 초기 추측을 0으로 만들 수 있으며 컨트롤러에 의해 기록됩니다. 이것은 당신의 0 라운드입니다. 운이 좋으면 처음에 바로 얻었을 때 (예 : 0 = r) 게임이 끝나고 점수는 0
( 점수가 낮을수록 좋습니다). 그렇지 않으면, 당신은 첫 번째 라운드를 입력하고 당신은 새로운 추측을 1 1 , 이것은 당신이 바로 그것을 얻을 때까지 계속됩니다, 즉 n = r, 그리고 점수는 것 n
입니다.
0 일 이후 각 라운드에 대해 컨트롤러는 다음 피드백 중 하나를 제공하므로 주어진 정보를 기반으로 더 나은 추측을 할 수 있습니다. 당신이 현재 세 n
번째 라운드에 있다고 가정 하고 추측은 n입니다
- "당신은 그것을 발견했다!" 경우 N 게임 종료하고 점수를하는 경우 = R,
n
. - C (a n , r) <C (a n-1 , r) 인 경우 "더 가까워요 :)"
- C (a n , r) = C (a n-1 , r) 인 경우 "계란 주위를 돌고 있습니다"
- "당신이 더 먼 :("C (a n , r)> C (a n-1 , r)
바이트를 절약하기 위해 위에서 제시 한 순서대로 응답을 "Right", "Closer", "Same", "Farther"라고합니다.
의 게임 예는 다음과 같습니다 p=1,q=15
.
- a 0 = 10
- a 1 = 11, 응답 : "가까이"
- a 2 = 13, 응답 : "Farther"
- a 3 = 4, 응답 : "Farther"
- a 4 = 3, 응답 : "가까이"
- a 5 = 5, 응답 : "동일"
- a 6 = 7, 응답 : "오른쪽"
점수 : 6
.
도전
최고의 점수로 게임을 플레이 할 결정적인 전략을 설계하십시오 p=51, q=562
.
답은 알고리즘을 자세하게 설명해야합니다. 알고리즘을 설명하는 데 도움이되는 코드를 첨부 할 수 있습니다. 이것은 코드 골프가 아니므로 읽을 수있는 코드를 작성하는 것이 좋습니다.
답은 가능한 모든 경우에 달성 할 수있는 최악의 점수와 최악의 점수가 가장 높은 점수를 포함해야합니다 r
. 동점 인 경우 가능한 모든 r
s에 대한 평균 점수가 더 높은 알고리즘 (답변에 포함되어야 함)이 승리합니다. 더 이상의 타이 브레이커가 없으며 결국 여러 개의 승자가있을 수 있습니다.
명세서
- 반복하려면
r
간격에[51,562]
있습니다. - 기본 허점이 적용됩니다.
현상금 (첫 번째 답변이 게시 된 후 추가됨)
나는 개인적으로 모든 추측이 범위 내에서 이루어지고 [51,562]
여전히 최악의 점수를 얻었을 때 현상금을 제공 할 수 있습니다 .