Collatz 추측에 당신이 어떤 양의 정수를 취할 경우, 다음 알고리즘 충분한 시간을 반복한다는 가설 :
if number is odd, then multiply by three and add one
if number is even, then divide by two
결국 1로 끝날 것입니다. 항상 작동하는 것 같지만 항상 작동하는 것으로 입증 된 적이 없습니다.
이미 1에 도달하는 데 걸리는 시간을 계산하여 골프를 쳤으므로 물건을 조금 바꾸려고 생각했습니다.
주어진 양의 정수로 시작하여 1에 도달하는 데 걸리는 시간 ( "정지 시간")을 계산하십시오. 그런 다음 그 숫자의 정지 시간을 찾으십시오 .
1에 도달 할 때까지 또는 완전히 임의의 100 회 반복 한계에 도달 할 때까지 반복하십시오. 전자의 경우 반복 횟수를 인쇄하십시오. 후자의 경우, 정수가 아닌 한 "실패"또는 선택한 다른 일관된 출력을 인쇄하십시오 1≤n≤100
. 이 옵션에 대해 빈 문자열을 출력 할 수 없습니다. 그러나 [1, 100] 범위를 벗어나는 정수를 출력 할 수 있습니다.
예 :
Input: 2
2->1
Output: 1
Input: 5
5->5->5->5->5->...
Output: Fail
Input: 10
10->6->8->3->7->16->4->2->1
Output: 8
Input: 100
100->25->23->15->17->12->9->19->20->7->16->4->2->1
Output: 13
Input: 10^100
10^100->684->126->108->113->12->9->19->20->7->16->4->2->1
Output: 13
Input: 12345678901234567890
12345678901234567890->286->104->12->9->19->20->7->16->4->2->1
Output: 11
Input: 1
--Depending on your code, one of two things may happen. Both are valid for the purposes of this question.
1
Output: 0
--Or:
1->3->7->16->4->2->1
Output: 6
내가 계산 한대로 10^100
12345678901234567890
해당 크기의 실수 만 지원하는 언어를 하고 사용함에 따라 언어가 더 정확하면 다른 결과를 얻을 수 있습니다.
채점
이것이 code-golf 이므로 가장 짧은 바이트 수의 응답이 이깁니다.