adds two more solutions
parent
4ba5651e9d
commit
b62fdd41ad
14
euler.rb
14
euler.rb
|
@ -4,6 +4,20 @@ class Integer
|
||||||
def to_digit_list
|
def to_digit_list
|
||||||
self.to_s.split('').map(&:to_i)
|
self.to_s.split('').map(&:to_i)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def factorial
|
||||||
|
i = 1
|
||||||
|
n = self
|
||||||
|
while (n > 0)
|
||||||
|
i *= n
|
||||||
|
n -= 1
|
||||||
|
end
|
||||||
|
i
|
||||||
|
end
|
||||||
|
|
||||||
|
def choose(k)
|
||||||
|
factorial / (k.factorial * (self - k).factorial)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
module Euler
|
module Euler
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
require_relative 'euler'
|
||||||
|
|
||||||
|
def solution
|
||||||
|
result = 0
|
||||||
|
(1..100).each do |n|
|
||||||
|
(1..n).each do |k|
|
||||||
|
result += 1 if n.choose(k) > 1000000
|
||||||
|
end
|
||||||
|
end
|
||||||
|
result
|
||||||
|
end
|
|
@ -0,0 +1,17 @@
|
||||||
|
require_relative 'euler'
|
||||||
|
|
||||||
|
def reverse_and_add(n)
|
||||||
|
n + Euler.from_digit_list(n.to_digit_list.reverse)
|
||||||
|
end
|
||||||
|
|
||||||
|
def lychrel_number?(n)
|
||||||
|
50.times do
|
||||||
|
n = reverse_and_add(n)
|
||||||
|
return false if Euler.palindrome?(n)
|
||||||
|
end
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def solution
|
||||||
|
(1..10000).count { |x| lychrel_number?(x) }
|
||||||
|
end
|
Loading…
Reference in New Issue