Prime Palindrome

2012/01/23追記

こっちに続き書いた。
Prime Palindrome続き - うんたらかんたら日記



CodeEval

回文の素数で1000以下で最大のものを出力。

設問

Description:

Write a program to determine the biggest prime palindrome under 1000.
Input sample:

None

Output sample:

Your program should print the largest palindrome on stdout. i.e.

929

やってみた

#!/usr/bin/env ruby

def prime? num
  half_num = num / 2
  (2..half_num).each do |n|
    return false if num % n == 0
  end
  true
end

def halv str
  half_size = str.size / 2
  first = str[0, half_size]
  last  = str[-half_size, half_size]
  [first, last]
end

def palindrome? num
  first, last = halv(num.to_s)
  first == last.reverse
end

1000.downto(2) do |n|
  if (prime?(n) and palindrome?(n))
    puts n
    break
  end
end