Skip to content

Instantly share code, notes, and snippets.

@oscarmorrison
Created September 12, 2015 07:37
Show Gist options
  • Save oscarmorrison/c4c37cf740dc69de5b76 to your computer and use it in GitHub Desktop.
Save oscarmorrison/c4c37cf740dc69de5b76 to your computer and use it in GitHub Desktop.
Time in Words (Ruby)
def get_word(num)
teen = "teen"
case num
when 0; return "o' clock"
when 1; return "one"
when 2; return "two"
when 3; return "three"
when 4; return "four"
when 5; return "five"
when 6; return "six"
when 7; return "seven"
when 8; return "eight"
when 9; return "nine"
when 10; return "ten"
when 11; return "eleven"
when 12; return "twelve"
when 13; return "thirteen"
when 14,16,17,19; return get_word(num.to_s[1].to_i)+teen
when 15; return "fif"+teen
when 18; return "eigh"+teen
when 20; return "twenty"
when 21..29; return get_word(20)+ " " + get_word(num.to_s[1].to_i)
else return "NaN"
end
end
def time_in_words(h,m)
case m
when 0; return "#{get_word(h)} #{get_word(m)}"
when 1; return "#{get_word(m)} minute past #{get_word(h)}"
when 2...15; return "#{get_word(m)} minutes past #{get_word(h)}"
when 15; return "quarter past #{get_word(h)}"
when 16...30; return "#{get_word(m)} minutes past #{get_word(h)}"
when 30; return "half past #{get_word(h)}"
when 31...45; return "#{get_word(60-m)} minutes to #{get_word(h+1)}"
when 45; return "quarter to #{get_word(h+1)}"
when 46...60; return "#{get_word(60-m)} minutes to #{get_word(h+1)}"
else return "NaN"
end
end
#read in hour and minute from STDIN
h = gets.chomp.to_i
m = gets.chomp.to_i
puts time_in_words(h,m)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment