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
|
# Copyright (c) 2023, Frappe Technologies Pvt. Ltd. and contributors
|
||||||
# For license information, please see license.txt
|
# For license information, please see license.txt
|
||||||
|
|
||||||
from math import ceil, floor
|
from math import floor
|
||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
@ -12,11 +12,18 @@ from frappe.utils import getdate
|
|||||||
class BisectAccountingStatements(Document):
|
class BisectAccountingStatements(Document):
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def bisect(self):
|
def bisect(self):
|
||||||
cur_frm_date, cur_to_date = getdate(self.from_date), getdate(self.to_date)
|
period_list = [(getdate(self.from_date), getdate(self.to_date))]
|
||||||
while True:
|
dates = []
|
||||||
|
while period_list:
|
||||||
|
cur_frm_date, cur_to_date = period_list.pop()
|
||||||
delta = cur_to_date - cur_frm_date
|
delta = cur_to_date - cur_frm_date
|
||||||
if delta.days == 0:
|
if not delta.days > 0:
|
||||||
return
|
continue
|
||||||
|
|
||||||
cur_floor = floor(delta.days / 2)
|
cur_floor = floor(delta.days / 2)
|
||||||
cur_to_date = cur_frm_date + relativedelta(days=+cur_floor)
|
next_to_date = cur_frm_date + relativedelta(days=+cur_floor)
|
||||||
print((cur_frm_date, cur_to_date), delta, 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