- # Works from 1 - 999
- # Recursively convert to cardinal numbers
- def cardinal(num)
- case num
- when 0 then return ""
- when 1 then return "one"
- when 2 then return "two"
- when 3 then return "three"
- when 4 then return "four"
- when 5 then return "five"
- when 6 then return "six"
- when 7 then return "seven"
- when 8 then return "eight"
- when 9 then return "nine"
- when 10 then return "ten"
- when 11 then return "eleven"
- when 12 then return "twelve"
- when 13 then return "thirteen"
- when 14 then return "fourteen"
- when 15 then return "fifteen"
- when 16 then return "sixteen"
- when 17 then return "seventeen"
- when 18 then return "eighteen"
- when 19 then return "nineteen"
- end
- return "twenty" + cardinal(num-20) if (num < 30)
- return "thirty" + cardinal(num-30) if (num < 40)
- return "forty" + cardinal(num-40) if (num < 50)
- return "fifty" + cardinal(num-50) if (num < 60)
- return "sixty" + cardinal(num-60) if (num < 70)
- return "seventy" + cardinal(num-70) if (num < 80)
- return "eighty" + cardinal(num-80) if (num < 90)
- return "ninety" + cardinal(num-90) if (num < 100)
- return cardinal(num/100) + "hundred" + cardinal(num%100)
- end
- # Works from 1 - 999999
- # Recursively convert to ordinal numbers
- def ordinal(num)
- case num
- when 0 then return ""
- when 1 then return "first"
- when 2 then return "second"
- when 3 then return "third"
- when 4 then return "fourth"
- when 5 then return "fifth"
- when 6 then return "sixth"
- when 7 then return "seventh"
- when 8 then return "eighth"
- when 9 then return "ninth"
- when 10 then return "tenth"
- when 11 then return "eleventh"
- when 12 then return "twelfth"
- when 13 then return "thirteenth"
- when 14 then return "fourteenth"
- when 15 then return "fifteenth"
- when 16 then return "sixteenth"
- when 17 then return "seventeenth"
- when 18 then return "eighteenth"
- when 19 then return "nineteenth"
- when 20 then return "twentieth"
- when 30 then return "thirtieth"
- when 40 then return "fortieth"
- when 50 then return "fiftieth"
- when 60 then return "sixtieth"
- when 70 then return "seventieth"
- when 80 then return "eightieth"
- when 90 then return "ninetieth"
- end
- return cardinal(20) + ordinal(num-20) if (num < 30)
- return cardinal(30) + ordinal(num-30) if (num < 40)
- return cardinal(40) + ordinal(num-40) if (num < 50)
- return cardinal(50) + ordinal(num-50) if (num < 60)
- return cardinal(60) + ordinal(num-60) if (num < 70)
- return cardinal(70) + ordinal(num-70) if (num < 80)
- return cardinal(80) + ordinal(num-80) if (num < 90)
- return cardinal(90) + ordinal(num-90) if (num < 100)
- return cardinal(num/100) + "hundredth" if (num < 1000) and (num % 100 == 0)
- return cardinal(num/100) + "hundred" + ordinal(num%100) if (num < 1000)
- return cardinal(num/1000) + "thousandth" if (num % 1000 == 0)
- return cardinal(num/1000) + "thousand" + ordinal(num%1000)
- end
- #862623
- MAX = 100000
- # Store all aronsons in an array
- aronsons = []
- index = 0
- # Start the sentence
- sentence = "tisthe"
- #sentence = File.read("cached_aronson_sentence.txt")
- # Calculate all the aronson numbers
- MAX.times do
- index = sentence.index(?t, index) + 1
- sentence << ordinal(index) unless sentence.length > 1000000
- aronsons << index
- end
- #puts sentence
- puts aronsons[MAX-1]