http://xkcd.com/710/ 에서 영감을 얻은 여기에 대한 코드 골프가 있습니다.
도전
0보다 큰 양의 정수가 주어지면 해당 숫자에 대한 우박 시퀀스를 인쇄합니다.
우박 시퀀스
자세한 내용은 Wikipedia 를 참조하십시오 .
- 숫자가 짝수이면 2로 나눕니다.
- 숫자가 홀수이면 3 배로 만들고 1을 더합니다.
1에 도달 할 때까지 생성 된 숫자로 이것을 반복합니다. (1 이후에 계속되면 무한 루프로 이동합니다 1 -> 4 -> 2 -> 1...
)
때로는 코드가 설명하는 가장 좋은 방법이므로 여기에 Wikipedia의 일부가 있습니다.
function collatz(n)
show n
if n > 1
if n is odd
call collatz(3n + 1)
else
call collatz(n / 2)
이 코드는 작동하지만 추가 과제를 추가하고 있습니다. 프로그램은 스택 오버플로에 취약하지 않아야합니다 . 따라서 반복 또는 꼬리 재귀를 사용해야합니다.
또한 큰 숫자를 계산할 수 있고 언어가 아직 구현하지 않은 경우에 대한 보너스 포인트. (또는 고정 길이 정수를 사용하여 큰 숫자 지원을 다시 구현하는 경우)
테스트 케이스
Number: 21
Results: 21 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1
Number: 3
Results: 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
또한 코드 골프에는 전체 사용자 입력 및 출력이 포함되어야합니다.