adds two more solutions
parent
4ba5651e9d
commit
b62fdd41ad
14
euler.rb
14
euler.rb
|
@ -4,6 +4,20 @@ class Integer
|
|||
def to_digit_list
|
||||
self.to_s.split('').map(&:to_i)
|
||||
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
|
||||
|
||||
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