양의 정수 n에 대해 함수 f (n) 을 다음과 같이 정의하십시오 .
- N / 2 , 만약 n이 짝수
- n 이 홀수 인 경우 3 * n + 1
이 함수를 0보다 큰 n에 반복해서 적용 하면 결과는 항상 1로 수렴하는 것으로 보입니다 (아직 아무도 그것을 증명할 수는 없었 음). 이 속성은 Collatz Conjecture라고 합니다.
정수의 정지 시간 을 Collatz 함수 f 가 1에 도달하기 전에 통과해야하는 횟수로 정의하십시오 . 처음 15 개의 정수의 정지 시간은 다음과 같습니다.
1 0
2 1
3 7
4 2
5 5
6 8
7 16
8 3
9 19
10 6
11 14
12 9
13 9
14 17
15 17
같은 중지 시간 Collatz 사촌 과 함께 숫자 세트를 호출합시다 . 예를 들어, 5와 32는 중지 시간이 5 인 Collatz 사촌입니다.
작업 : 음수가 아닌 정수를 사용하고 중지 시간이 해당 정수와 같은 Collatz 사촌 세트를 생성하는 프로그램 또는 함수를 작성하십시오.
입력
STDIN, ARGV 또는 함수 인수를 통해 제공되는 음이 아닌 정수 S.
산출
중지 시간이 S 인 모든 숫자의 목록은 오름차순으로 정렬 됩니다 . 리스트는 프로그램에 의해 출력되거나 함수에 의해 리턴되거나 출력 될 수 있습니다. 출력 형식은 유연합니다. 공백으로 구분하거나 줄 바꾸기로 구분하거나 언어의 표준 목록 형식을 사용하면 숫자를 쉽게 구분할 수 있습니다.
요구 사항
제출물은 S ≤ 30에 대해 정확한 결과를 제공해야합니다. 몇 시간 또는 며칠이 아니라 몇 초 또는 몇 분 안에 완료되어야합니다.
예
0 -> 1
1 -> 2
5 -> 5, 32
9 -> 12, 13, 80, 84, 85, 512
15 -> 22, 23, 136, 138, 140, 141, 150, 151, 768, 832, 848, 852, 853, 904, 906, 908, 909, 5120, 5376, 5440, 5456, 5460, 5461, 32768
다음은 S = 30 의 출력 요점입니다 .
이것은 코드 골프입니다 : 바이트 단위의 최단 프로그램이 이깁니다. 행운을 빕니다!