18/02/07 13:45
mind
Stavo leggendo sull'argomento, quando mi è venuta l'idea di creare degli script che semplificassero la scrittura di frazioni continue (usando l'algoritmo di Euclide). Posto il codice per gli interessati:
def frac(a) case a.length when 1 print a[0] return a[0] when 2 printf "%d*%d+1", a[0], a[1] return a[0]*a[1]+1 else printf "%d*(", a[0] n = a[0] * frac(Array(a[1, a.length])) printf ")+" n += frac(Array(a[2, a.length])) return n end end def make_frac(n, d) if( n % d < 2) then return d end return [] << n/d << make_frac(d, n % d) end #esempi: #puts "\n" + frac([2, 1, 4, 2]).to_s #puts make_frac(67, 24) #puts "\n" + frac(make_frac(67, 24)).to_s
aaa