이것은 내가 인터넷 어딘가에 보았다 수학 문제에서 영감을했지만 위치를 기억하지 않습니다 (UPDATE : 원래 문제가 발견 된 하위 Reddit 수학 수수께끼 가 가능하다는 것을 제공 증거로도 볼 이 수학 SE 게시물을 ) 요구를 임의의 정수 쌍에 대해 다음 프로세스가 가능한지 증명합니다 (내가 기억하는 것에서 주어진 쌍에 대해 가능했습니다).
한 쌍의 정수 j와 k가 주어지면, 그것들 중 하나를 두 배로 늘리고 다른 하나를 더하여 (j, k)-> (j + 1, k * 2) 또는 (j * 2, k + 1). 그런 다음 정수 쌍을 동일하게 유지하려는 목적으로 해당 정수로이 프로세스를 반복하십시오.
이 예제는 반드시 최적은 아니지만 양수, 음수 또는 0의 정수에서이 프로세스를 수행하는 방법을 보여줍니다.
(2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(5, 6) -> (6, 12) -> (7, 24) -> (14, 25) -> (28, 26) -> (56, 27) -> (112, 28) -> (113, 56) -> (226, 57) -> (227, 114) -> (228, 228)
(0, 2) -> (1, 4) -> (2, 5) -> (3, 10) -> (6, 11) -> (12, 12)
(-4, 0) -> (-3, 0) -> (-2, 0) -> (-1, 0) -> (0, 0)
(3, -1) -> (6, 0) -> (12, 1) -> (13, 2) -> (14, 4) -> (15, 8) -> (16, 16)
(-4, -3) -> (-8, -2) -> (-16, -1) -> (-32, 0) -> (-31, 0) -> ... -> (0, 0)
도전
두 개의 정수를 제공하는 프로그램을 작성하고 하나를 반복적으로 증가시키고 다른 하나를 두 배로 증가시켜 정수를 동일하게 만드는 데 필요한 단계 목록을 출력합니다.
사양
- 솔루션은 최적 일 필요는 없지만 임의의 쌍에 대해 유한 한 단계로 해결해야합니다.
입력은 2 개의 정수 여야합니다
출력은 각 단계의 결과 정수를 명확하게 나타내는 합리적인 출력 일 수 있습니다. 예를 들면 다음과 같습니다.
- 쌍으로 구분 된 두 개의 구분 기호 (기호, 공백 등)가있는 문자열
- 예 : 입력 j, k : 2, 5-> 출력 : 3,10; 6,11; 12,12
- 정수 목록
- 예 : 입력 j, k : 2, 5-> 출력 : [[3, 10], [6, 11], [12, 12]]
- 쌍으로 구분 된 두 개의 구분 기호 (기호, 공백 등)가있는 문자열
입력이 같은 숫자의 쌍이면 다른 사소한 답변과 일치하는 한 아무것도 출력 할 수 있습니다
- 예를 들어
- 입력 [2, 5]에 입력 쌍이 포함되지 않은 [[3, 10], [6, 11], [12, 12]] 출력이있는 경우 입력 [4, 4]는 아무것도 출력하지 않습니다.
- 입력 [2, 5]에 입력 쌍이 포함 된 [[2, 5], [3, 10], [6, 11], [12, 12]] 출력이있는 경우 입력 [4, 4] 출력 [[4, 4]].
- 예를 들어
표준 IO 방법 적용 및 표준 허점 금지
이것은 코드 골프이므로 바이트 단위의 최단 답변
[(12,12),(6,11),(3,10),(2,5)]
를 들어 입력 (2,5)
?