euler/045.rb

47 lines
887 B
Ruby
Raw Normal View History

2011-05-31 15:31:13 +00:00
descr=%{
Triangle, pentagonal, and hexagonal numbers are generated by the following formulae:
Triangle T_(n)=n(n+1)/2 1, 3, 6, 10, 15, ...
Pentagonal P_(n)=n(3n1)/2 1, 5, 12, 22, 35, ...
Hexagonal H_(n)=n(2n1) 1, 6, 15, 28, 45, ...
It can be verified that T_(285) = P_(165) = H_(143) = 40755.
Find the next triangle number that is also pentagonal and hexagonal.
}
# number[n]=1,2 or 3 if 3 triangular, pentagonal and hexagonal
$number={}
def save_and_verif(t)
if $number[t].nil?
$number[t]=1
else
$number[t] += 1
if $number[t] == 3
puts t
exit 0
end
end
end
def T(n)
t=n*(n+1)/2
save_and_verif(t)
end
def P(n)
t=n*(3*n-1)/2
save_and_verif(t)
end
def H(n)
t=n*(2*n-1)
save_and_verif(t)
end
n=144
while true
T(n)
P(n)
H(n)
n+=1
end