Sha256: 785d98a1fbba54249fe2ce3dc051a7d73cae30ac812c5e62cd6529ce230bba22

Contents?: true

Size: 841 Bytes

Versions: 4

Compression:

Stored size: 841 Bytes

Contents

# coding: utf-8
class Integer

  # A dihedral prime is a prime number that appears as itself or another prime
  # when rendered on a seven-segment display of a calculator and... 
  #
  # * Rotated 180°.  
  # * Mirrored.  
  # * Rotated 180° and mirrored.
  #
  # For example, 120121 is a dihedral prime. It is 121021 when rotated,
  # 151051 (another prime) when mirrored, and 150151 when rotated and
  # mirrored.
  #
  # Returns true if self is a dihedral prime; false otherwise.
  #
  #     101.dihedral_prime?  #=> true
  #     181.dihedral_prime?  #=> true
  #     7.dihedral_prime?    #=> false
  #
  def dihedral_prime?
    return false unless prime? and to_s.match(/^[01825]+$/)
    mirror = ->(n){ n.to_s.gsub(/([25])/){|orig| orig == '2' ? '5' : '2'}.to_i }
    [reverse, mirror[self], mirror[reverse]].all?(&:prime?)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
numb-0.152.0 lib/numb/dihedral_prime.rb
numb-0.138.0 lib/numb/dihedral_prime.rb
numb-0.125.0 lib/numb/dihedral_prime.rb
numb-0.114.0 lib/numb/dihedral_prime.rb