require 'date'
def hours_by_day *times
time1, time2 = times.map{|s| DateTime.new *([1, 1, 1] + s)}
midnight = DateTime.new(1,1,2)
(time2 < time1 ?
[midnight + (midnight - time1), time2] :
[midnight + (time2 - time1)]
).map{|d| [d.hour, d.minute, d.second]}
end
p hours_by_day([18,0,0], [3,0,0])
p hours_by_day([3,0,0], [18,0,0])
cmVxdWlyZSAnZGF0ZScKCmRlZiBob3Vyc19ieV9kYXkgKnRpbWVzCiAgdGltZTEsIHRpbWUyID0gdGltZXMubWFwe3xzfCBEYXRlVGltZS5uZXcgKihbMSwgMSwgMV0gKyBzKX0KICBtaWRuaWdodCA9IERhdGVUaW1lLm5ldygxLDEsMikKICAodGltZTIgPCB0aW1lMSA/CiAgIFttaWRuaWdodCArIChtaWRuaWdodCAtIHRpbWUxKSwgdGltZTJdIDoKICAgW21pZG5pZ2h0ICsgKHRpbWUyIC0gdGltZTEpXQogICkubWFwe3xkfCBbZC5ob3VyLCBkLm1pbnV0ZSwgZC5zZWNvbmRdfQplbmQKCnAgaG91cnNfYnlfZGF5KFsxOCwwLDBdLCBbMywwLDBdKQpwIGhvdXJzX2J5X2RheShbMywwLDBdLCBbMTgsMCwwXSk=