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