Em uma caluladora de bolso os dígitos são representados por pequenas barras no visor de cristal líquido:
Quando olhamos com o visor de cabeça para baixo alguns números ainda podem ser lidos (só que com outros valores). Por exemplo, 1995 vira 5661. O quinto número que pode ser lido de cabeça para baixo é 8, e o décimo-quinto é 21, que passa a valer 12 quando é visto de cabeça para baixo.
Você deve responder a pergunta:
Qual o milionésimo número que pode ser reconheido como outro número, quando é visto de cabeça para baixo?
Tente montar seu algoritmo para rodar no menor tempo possível.
require 'benchmark'
class MirrorNumbers
def initialize(number)
puts Benchmark.measure { puts calc(number) }
end
def calc(number)
...
end
end
MirrorNumbers.new(1000000)
MirrorNumbers.new(5) # 8
MirrorNumbers.new(100) # 202