Coding is an Art

Anoiaque::Ergasterium

28/04/2010

Nombres premiers : Classe Prime de la librairie 'mathn' de ruby

>> require 'mathn'
=> true
>> primes = Prime.new
=> #<Prime:0x1014752a0 @counts=[], @primes=[], @seed=1>

# les n premiers nombres premiers
>> 3.times { puts primes.succ }
2
3
5

# décomposition en facteurs premiers
>> 123.prime_division
=> [[3, 1], [41, 1]]
>> 17.prime_division
=> [[17, 1]]
> 13333339.prime_division
=> [[13333339, 1]] # hé oui :)

# PGDC de deux entiers
>> 12.gcd2(234)
=> 6

# La réciproque de prime_division
>> 13344443.prime_division
=> [[7, 1], [59, 1], [79, 1], [409, 1]]
>> Integer.from_prime_division(13344443.prime_division)
=> 13344443
>> primes.last  # :)

Un peu de mathématiques avec la librairie 'mathn' de ruby

# Sans mathn

require 'complex'
require 'matrix'
36/16 => 1.414... 
Complex::I ** 2 => Complex(-1, 0)
m = Matrix[[1,2],[3,4]]
i = m.inv

m*i => Matrix[[1,0],[-2,-2]] #:(

#avec mathn

require 'mathn'

36/16 => 9/4... 
Complex::I ** 2 => -1
m = Matrix[[1,2],[3,4]]
i = m.inv
m*i => Matrix[[1,0],[0,1]]

23/04/2010

Des méthodes nommées par un symbole mathématique

#!/usr/local/bin/ruby -Kuw

module Kernel

def(*args)
args.inject(:+) 
end

def(root)
Math.sqrt(root)
end

def(args)
args.inject(:*) 
end

end
puts ∑(1,2,4) # => 7 
puts √(5) # => # 2.2360...
puts  ∏(1..5) # 5! :)

Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
Alan Perlis


The best way to predict the future is to invent it.
Alan Kay


Ne découvre de nouvelles terres que celui qui sait quitter tout rivage.
André gide


Qui ne doute pas acquiert peu
Léonard de Vinci


Our life is frittered away by detail... simplify, simplify.
Henry David Thoreau