The Collatz dugaan postulat bahwa jika Anda mengambil setiap bilangan bulat positif, kemudian ulangi algoritma berikut cukup kali:
if number is odd, then multiply by three and add one
if number is even, then divide by two
Anda akhirnya akan berakhir pada 1. Tampaknya selalu berfungsi, tetapi tidak pernah terbukti bahwa selalu berhasil.
Anda telah bermain golf menghitung berapa lama untuk sampai ke 1 , jadi saya pikir saya akan sedikit beralih.
Dimulai dengan bilangan bulat positif yang diberikan, hitung berapa lama untuk mencapai 1 ("waktu berhenti"). Kemudian menemukan bahwa waktu berhenti nomor ini.
Ulangi sampai Anda mencapai 1, atau sampai Anda mencapai batas 100 iterations sepenuhnya sewenang-wenang. Dalam kasus sebelumnya, cetak berapa banyak iterasi yang diperlukan. Dalam kasus terakhir, cetak "Gagal" atau output konsisten pilihan Anda, selama itu bukan bilangan bulat 1≤n≤100
. Anda tidak boleh mengeluarkan string kosong untuk opsi ini. Akan tetapi, menghasilkan bilangan bulat di luar kisaran [1, 100].
Contoh:
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
Saat saya menghitung 10^100
dan 12345678901234567890
menggunakan bahasa yang hanya mendukung real untuk ukuran itu, jika bahasa Anda lebih akurat, Anda mungkin mendapatkan hasil berbeda untuk itu.
Mencetak gol
Karena ini adalah kode-golf , jawabannya dengan jumlah byte terpendek akan menang.