Urutan Stern-Brocot adalah urutan seperti Fibonnaci yang dapat dibangun sebagai berikut:
- Inisialisasi urutan dengan
s(1) = s(2) = 1 - Atur penghitung
n = 1 - Tambahkan
s(n) + s(n+1)ke urutan - Tambahkan
s(n+1)ke urutan - Bertambah
n, kembali ke langkah 3
Ini setara dengan:
Di antara sifat-sifat lain, urutan Stern-Brocot dapat digunakan untuk menghasilkan setiap angka rasional positif yang mungkin. Setiap bilangan rasional akan dihasilkan tepat satu kali, dan akan selalu muncul dalam term yang paling sederhana; misalnya, 1/3adalah bilangan rasional keempat dalam urutan, tetapi bilangan yang setara 2/6, 3/9dll tidak akan muncul sama sekali.
Kita dapat mendefinisikan bilangan rasional ke-n sebagai r(n) = s(n) / s(n+1), di mana s(n)bilangan Stern-Brocot ke-n, seperti dijelaskan di atas.
Tantangan Anda adalah menulis program atau fungsi yang akan menghasilkan bilangan rasional ke-n yang dihasilkan menggunakan urutan Stern-Brocot.
- Algoritma yang dijelaskan di atas adalah 1-diindeks; jika entri Anda diindeks 0, sebutkan jawaban Anda
- Algoritma yang dijelaskan hanya untuk tujuan ilustrasi, output dapat diturunkan dengan cara apa pun yang Anda suka (selain hard-coding)
- Input dapat melalui STDIN, parameter fungsi, atau mekanisme input lain yang masuk akal
- Ouptut dapat berupa STDOUT, konsol, nilai pengembalian fungsi, atau aliran output wajar lainnya
- Output harus berupa string dalam bentuk
a/b, di manaadanbmerupakan entri yang relevan dalam urutan Stern-Brocot. Mengevaluasi fraksi sebelum output tidak diizinkan. Misalnya, untuk input12, output seharusnya2/5, bukan0.4. - Celah standar tidak diijinkan
Ini kode-golf , jadi jawaban tersingkat dalam byte akan menang.
Uji kasus
Kasus uji di sini diindeks 1.
n r(n)
-- ------
1 1/1
2 1/2
3 2/1
4 1/3
5 3/2
6 2/3
7 3/1
8 1/4
9 4/3
10 3/5
11 5/2
12 2/5
13 5/3
14 3/4
15 4/1
16 1/5
17 5/4
18 4/7
19 7/3
20 3/8
50 7/12
100 7/19
1000 11/39
Entri OEIS: A002487
Video Numberphile Luar Biasa membahas urutan: Fraksi Tak Terbatas
True/2bukan fraksi yang valid (sejauh yang saya ketahui). Selain itu, Truetidak selalu 1- beberapa bahasa digunakan -1untuk menghindari potensi kesalahan saat menerapkan operator bitwise. [rujukan?]
Truesama dengan 1dan True/2akan 1/2.

Trues bukannya1s?