func pell_number(n) { lucasU(2, -1, n) } func pell_lucas_number(n) { lucasV(2, -1, n) } say ("The first 10 Pell numbers: ", 10.of(pell_number).join(", ")) say ("The first 10 Pell-Lucas numbers: ", 10.of(pell_lucas_number).join(", ")) say "\nFirst 10 rational approximations to √2:" {|n| pell_lucas_number(n) / 2 / pell_number(n) }.map(1..10).each {|r| say "#{'%10s' % r.as_frac} =~ #{r.as_float}" } var pell_prime_indices = 10.by {|n| pell_number(n).is_prime } say "\nThe first 10 Pell primes: " pell_prime_indices.each {|n| say "Pell(#{'%2s' % n}) = #{pell_number(n)}" } say ("\nThe first 10 Newman-Shank-Williams numbers: ", 10.of{|n| pell_number(2*n) + pell_number(2*n + 1) }.join(', ')) say "\nThe first 10 Pythagorean triples corresponding to near isosceles right triangles:" 10.of{|n| pell_number(2*n + 1) }.map {|h| var t = isqrt(h**2 >> 1) assert_eq(t**2 + (t+1)**2, h**2) [t, t+1, h] }.each{.say}