mirror of
https://github.com/TheAlgorithms/Ruby
synced 2024-12-28 22:24:14 +01:00
Merge pull request #56 from vzvu3k6k/project-euler-4
Add solution for the Project Euler Problem 4
This commit is contained in:
commit
efcd531171
2 changed files with 27 additions and 0 deletions
|
@ -43,6 +43,7 @@
|
|||
* [Sol2](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_3/sol2.rb)
|
||||
* Problem 4
|
||||
* [Sol1](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_4/sol1.rb)
|
||||
* [Sol2](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_4/sol2.rb)
|
||||
* Problem 5
|
||||
* [Sol1](https://github.com/TheAlgorithms/Ruby/blob/master/project_euler/problem_5/sol1.rb)
|
||||
|
||||
|
|
26
project_euler/problem_4/sol2.rb
Normal file
26
project_euler/problem_4/sol2.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# A palindromic number reads the same both ways. The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
|
||||
# Find the largest palindrome made from the product of two 3-digit numbers.
|
||||
|
||||
class Integer
|
||||
def parindrome?
|
||||
self == reverse
|
||||
end
|
||||
|
||||
# 123.reverse == 321
|
||||
# 100.reverse == 1
|
||||
def reverse
|
||||
result = 0
|
||||
n = self
|
||||
loop do
|
||||
result = result * 10 + n % 10
|
||||
break if (n /= 10).zero?
|
||||
end
|
||||
result
|
||||
end
|
||||
end
|
||||
|
||||
factors = (100..999).to_a
|
||||
products = factors.product(factors).map { _1 * _2 }
|
||||
puts products.select(&:parindrome?).max
|
Loading…
Reference in a new issue