The kelangsungan pecahan dari angka n
adalah sebagian kecil dari bentuk berikut:
yang konvergen ke n
.
Urutan a
dalam fraksi lanjutan biasanya ditulis sebagai: [a 0 ; a 1 , a 2 , a 3 , ... a n ].
Kita akan menulis milik kita dengan cara yang sama, tetapi dengan bagian berulang antara titik koma.
Tujuan Anda adalah mengembalikan fraksi lanjutan dari akar kuadrat dari n
.
Input: Bilangan bulat n
,. n
tidak akan pernah menjadi kotak yang sempurna.
Output: Fraksi lanjutan dari sqrt(n)
.
Kasus uji:
2 -> [1; 2;]
3 -> [1; 1, 2;]
19 -> [4; 2, 1, 3, 1, 2, 8;]
Kode terpendek menang. Semoga berhasil!
Jawaban:
GolfScript (
6660 karakter)Peringatan: sebagian besar
?
di sana adalah variabel yang mewakilifloor(sqrt(input))
daripada builtin. Tapi yang pertama adalah builtin.Membawa input pada stdin dan output ke stdout.
Psuedocode dari algoritma (bukti kebenaran saat ini dibiarkan sebagai latihan untuk pembaca):
Sekali lagi saya menemukan diri saya menginginkan satu operator yang mengambil
a b
tumpukan dan meninggalkana/b a%b
tumpukan.sumber
Python, 95
97(tapi benar ...)Ini hanya menggunakan bilangan bulat aritmatika dan pembagian lantai. Ini akan menghasilkan hasil yang benar untuk semua input bilangan bulat positif, meskipun jika seseorang ingin menggunakan panjang, mereka harus menambahkan karakter; misalnya
m=a=0L
. Dan tentu saja ... tunggu sejuta tahun sampai lantai orang miskin saya akan berakhir.Keluaran:
sunting: sekarang menggunakan algoritma Peter Taylor. Itu
do...while
menyenangkan.sumber
*(c*c-n)
?Python,
878280 80Dibutuhkan satu integer dan memberikan output seperti:
sumber
x-int(x) -> x%1
. Saya terkesan :)Mathematica
3331Output dalam format daftar, yang lebih sesuai untuk Mathematica. Contoh:
sumber
ContinuedFraction@Sqrt@#&
Python (
136 133)96)Metode standar untuk fraksi lanjutan, sangat golf.
sumber
while 1:
. Anda juga bisa meletakkan sebagian besar pernyataan di loop sementara pada satu baris.8 ;1;
untuk 74 dan 75; itu sepertinya tidak benar.C, 137
Termasuk baris baru, dengan asumsi saya tidak harus memutar akar kuadrat saya sendiri.
Istirahat untuk sqrt (139) dan mengandung titik koma ekstra sesekali dalam output, tapi aku terlalu lelah untuk bekerja lebih jauh malam ini :)
sumber
Perl, 99 karakter
Apakah tidak mengacaukan atas 139, 151, dll Diuji dengan nomor dari 1 sampai 9 digit.
Catatan:
$%
,,$=
dan$-
semuanya adalah variabel pemaksaan integer.sumber
APL (NARS), 111 karakter, 222 byte
Fungsi f didasarkan pada algo yang ditemukan di halaman http://mathworld.wolfram.com/PellEquation.html untuk menyelesaikan persamaan Pell. Fungsi f itu input semua bukan angka negatif (ketik fraksi juga). Mungkin ada sesuatu yang salah, saya ingat bahwa √ memiliki, dalam cara saya melihatnya, masalah untuk bilangan pecahan besar, seperti
jadi akan ada satu fungsi sqrti (). Untuk alasan ini, fraksi input (dan input integer) harus <10 ^ 15. uji:
jika argumen adalah kuadrat dari angka itu akan mengembalikan satu daftar 1 elemen saja, sqrt dari angka itu
Jika itu akan tergantung dari saya, dalam satu latihan tanpa "codegolf" saya akan lebih suka mengedit sebelumnya yang menggunakan fungsi sqrti () ...
sumber
fq
dana0
. juga:(a×Q)-P
->P-⍨a×Q
Q←Q÷⍨
- apakah nars mendukungQ÷⍨←
?