Commit 470cf52

mo khan <mo@mokhan.ca>
2015-02-12 04:23:11
solve problem 4.
1 parent be361e8
Changed files (1)
spec/euler/problem_four_spec.rb
@@ -0,0 +1,39 @@
+#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.
+describe 'problem four' do
+  class Palindrome
+    def largest(digits:1)
+      min = ([1]  + ([0] * (digits - 1))).flatten.join('').to_i
+      max = ([9] * digits).flatten.join('').to_i
+      puts [min, max].inspect
+
+      max.downto(min) do |m|
+        max.downto(min) do |n|
+          result = m * n
+          return result if palindrome?(result)
+        end
+      end
+    end
+
+    private
+
+    def palindrome?(number)
+      number.to_s == number.to_s.reverse
+    end
+  end
+
+  subject { Palindrome.new }
+
+  it 'can find the largest palindrom that is the product of two one digit numbers' do
+    expect(subject.largest(digits: 1)).to eql(9)
+  end
+
+  it 'can find the largest palindrom that is the product of two digits' do
+    expect(subject.largest(digits: 2)).to eql(9009)
+  end
+
+  it 'can find the largest palindrome that is the product of two three digit numbers' do
+    expect(subject.largest(digits: 3)).to eql(580085)
+  end
+end