# Getting the number of workdays in a given timeframe

This is a weird function I wrote once to get the number of workdays (all days except saturday and sunday). Now the objective here was to do it in O(1) and without the use of any flow control. So I came up with this:

def get_work_days(startday, days): freq = 7 startday = startday+1%freq sundayPhase = (freq - startday) % freq saturdayPhase = (sundayPhase + 6) % freq remaining = days % freq hasSunday = 0**((sundayPhase+1)/(remaining+1)) hasSaturday = 0**((saturdayPhase+1)/(remaining+1)) return (days - remaining) / freq * 5 + remaining - hasSunday - hasSaturday

It's abusing the fact that in most programming languages 0^0 is defined to be 1.

comments powered by Disqus