While on the bus in Russia, they give you a ticket with a 6 digit number.

The Russian I was with closely read the numbers, and I asked “Why do you care about the number?”

She said, “If the first three numbers equal the last three numbers, it’s a ‘Happy Ticket’ and I keep it.”

I tried to figure the odds on getting a “Happy Ticket” and just gave up.

I’m a programmer, not a mathematician.

So I wrote a Ruby script to iterate thru the numbers and do a comparison of the first three and the last three.


#!/usr/bin/env ruby
i = 0
happy = 0
theCount = Array.new
while i < 999999
i += 1
f = sprintf '%06d', i # f is a six digit number

theCount = f.chars.to_a

first = theCount.fetch(0).to_i + theCount.fetch(1).to_i + theCount.fetch(2).to_i
last = theCount.fetch(3).to_i + theCount.fetch(4).to_i + theCount.fetch(5).to_i

     if first == last
          happy += 1
          print("Happy Number ", happy," is ", theCount[0..2], theCount[3..5], "\n") 
      end

end

The end result is that there are 55,252 'Happy Numbers', meaning your odds of getting one is about 5.5%