refactor: Depth First Search(DFS)
This commit is contained in:
parent
4c8a8c3bcd
commit
5a25c80f2e
@ -1,7 +1,7 @@
|
||||
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
from math import ceil, floor
|
||||
from math import floor
|
||||
|
||||
import frappe
|
||||
from dateutil.relativedelta import relativedelta
|
||||
@ -12,11 +12,18 @@ from frappe.utils import getdate
|
||||
class BisectAccountingStatements(Document):
|
||||
@frappe.whitelist()
|
||||
def bisect(self):
|
||||
cur_frm_date, cur_to_date = getdate(self.from_date), getdate(self.to_date)
|
||||
while True:
|
||||
period_list = [(getdate(self.from_date), getdate(self.to_date))]
|
||||
dates = []
|
||||
while period_list:
|
||||
cur_frm_date, cur_to_date = period_list.pop()
|
||||
delta = cur_to_date - cur_frm_date
|
||||
if delta.days == 0:
|
||||
return
|
||||
if not delta.days > 0:
|
||||
continue
|
||||
|
||||
cur_floor = floor(delta.days / 2)
|
||||
cur_to_date = cur_frm_date + relativedelta(days=+cur_floor)
|
||||
print((cur_frm_date, cur_to_date), delta, cur_floor)
|
||||
next_to_date = cur_frm_date + relativedelta(days=+cur_floor)
|
||||
left = (cur_frm_date, next_to_date)
|
||||
period_list.append(left)
|
||||
next_frm_date = cur_frm_date + relativedelta(days=+(cur_floor + 1))
|
||||
right = (next_frm_date, cur_to_date)
|
||||
period_list.append(right)
|
||||
|
Loading…
x
Reference in New Issue
Block a user