Yang perlu Anda lakukan adalah membuat fungsi / program yang mengambil desimal sebagai input, dan mengeluarkan hasil berulang-ulang mengambil bagian fraksional dari angka tersebut, hingga angka tersebut menjadi bilangan bulat.
Lebih khusus, prosesnya adalah sebagai berikut:
Biarkan x menjadi input
Jika x adalah bilangan bulat, output saja.
Sebaliknya: . Kembali ke 2.
adalah komponen fraksional dari , dan sama dengan . adalah lantai x, yang merupakan bilangan bulat terbesar kurang dari .
Kasus uji:
0 = 0
0.1 = 1/10 -> 10
0.2 = 1/5 -> 5
0.3 = 3/10 -> 10/3 -> 1/3 -> 3
0.4 = 2/5 -> 5/2 -> 1/2 -> 2
0.5 = 1/2 -> 2
0.6 = 3/5 -> 5/3 -> 2/3 -> 3/2 -> 1/2 -> 2
0.7 = 7/10 -> 10/7 -> 3/7 -> 7/3 -> 1/3 -> 3
0.8 = 4/5 -> 5/4 -> 1/4 -> 4
0.9 = 9/10 -> 10/9 -> 1/9 -> 9
1 = 1
3.14 = 157/50 -> 7/50 -> 50/7 -> 1/7 -> 7
6.28 = 157/25 -> 7/25 -> 25/7 -> 4/7 -> 7/4 -> 3/4 -> 4/3 -> 1/3 -> 3
Ringkasan untuk 0 hingga 1 dengan penambahan 0,1: 0, 10, 5, 3, 2, 2, 2, 3, 4, 9, 1
Ini adalah kode-golf , byte paling sedikit menang.
Klarifikasi:
- "Poin bonus" tanpa kesalahan pembulatan
- Harus berfungsi untuk nomor rasional yang tidak negatif (mengabaikan kesalahan pembulatan)
- Anda bisa, tetapi tidak harus menampilkan langkah-langkah yang diambil
- Anda dapat mengambil input sebagai desimal, pecahan, atau pasangan angka, yang bisa dalam string.
Maaf untuk semua masalah, ini adalah pertanyaan pertama saya di situs web ini.