Các Collatz phỏng đoán định đề rằng nếu bạn có bất kỳ số nguyên dương, sau đó lặp lại các thuật toán sau đây đủ thời gian:
if number is odd, then multiply by three and add one
if number is even, then divide by two
cuối cùng bạn sẽ kết thúc ở mức 1. Nó dường như luôn hoạt động, nhưng nó chưa bao giờ được chứng minh rằng nó luôn luôn như vậy.
Bạn đã chơi golf tính toán mất bao lâu để lên 1 , vì vậy tôi nghĩ tôi sẽ thay đổi mọi thứ một chút.
Bắt đầu với một số nguyên dương nhất định, tính toán mất bao lâu để đến 1 ("thời gian dừng" của nó). Sau đó tìm mà thời gian dừng của số.
Lặp lại cho đến khi bạn đạt được 1 hoặc cho đến khi bạn đạt đến giới hạn hoàn toàn tùy ý là 100 lần lặp. Trong trường hợp trước, in bao nhiêu lần lặp. Trong trường hợp sau, in "Fail" hoặc một số đầu ra nhất quán khác mà bạn chọn, miễn là nó không phải là số nguyên 1≤n≤100
. Bạn không thể xuất một chuỗi trống cho tùy chọn này. Tuy nhiên, việc xuất ra một số nguyên nằm ngoài phạm vi [1, 100].
Ví dụ:
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
Như tôi đã tính toán 10^100
và 12345678901234567890
sử dụng một ngôn ngữ chỉ hỗ trợ thực tế cho kích thước đó, nếu ngôn ngữ của bạn chính xác hơn, bạn có thể nhận được kết quả khác nhau cho những ngôn ngữ đó.
Chấm điểm
Vì đây là môn đánh gôn , câu trả lời có số byte ngắn nhất sẽ thắng.