First post, learning Python, not a pro developer but have done a few small project.
I have a pattern as integer 147056391 bin 1000110000111110011100000111
This are repeating every 28 days, start date 2022-01-01, user work schedule, user works on January 1,2,3, Off on January 4,5,6,7,8 working on January 9,10,11 and so on.
My current approach (working) is below, what i’m looking for is a faster or better way looking for a specific date if a further distance without looping through from 2022-01-01, like what bit position would be in day 688 or July-22-2024 ? without a long loop
Any advice please…
def findInPattern(start, end, pattern, repeat_after)
pattern = pattern # 1#147056391 # 2#163701519 # 3#121379064 # 4#104733936
delta = end - start
temp = list()
length = int(delta.days / repeat_after)
length += length % repeat_after
for j in range(0, length):
for i in range(0, repeat_after):
if pattern & (1 << i):
onoff = "Work"
className = "blue"
else:
onoff = "Off"
className = "green"
temp.append(className)
return className