![]() |
алгоритм расчета тасков с повторениями в календарях
ктонибыть может посоветовать: алгоритм расчета тасков с повторениями в календарях ?
я зык не выжен... важен сам алгоритм... |
Что такое "таск с повторением в календаре"?
|
ivank
календарь - тот что АУТЛУК, по другому ежедневник такс - то что записывают в ежедневник... |
Это повторяющееся событие.
А что? Какие проблемы? |
Arrest
аы можете предложить такой алгоритм? скажем есть задача повторяющаяся каждый дет по три раза... и вот запрашивается эта таска через год после создания... |
Vlad Drakula
А в чём проблема? Я до сих пор не могу понять. Можно хранить для каждого задания набор событий (лучше даже логическое выражение из этих событий), при котором оно наступает. (Т.е. в данном случае "каждый день" И (время1 ИЛИ время2 ИЛИ время3)). А потом просто проверять выполняются эти события для текущего дня или нет. |
ivank
так ты можешь привести пример алгоритма, а не туманное его описание? |
C++:
Код:
#include <dos.h> |
Arrest
а где здесь: Цитата:
|
Vlad Drakula
Всё зависит от того, какая конуретно нужна функциональность. Вот псевдокод на Питоне: Код:
def get_tasks_for_date(date): В более простом случае (подозреваю, что таски хранятся в базе), можно завести, например, такие таблички: Код:
task: Код:
SELECT DISTINCT id, title, time Если событие наступает три раза в день, то у нас будет три соответствующих записи, у которых все поля кроме time будут = 0, а time будет указывать время (внутри дня). Если событие наступает каждый день месяца, то всё = 0 кроме day = 1. Если каждую неделю, то всё = 0, кроме day_of_week = нужному дню. Если два раза в неделю, то просто две разных записи. Сложнее с отсчётом от конца периода, но этого тоже можно добиться некоторыми извратами (проще всего добавить ещё полей). Примерно так. Эту структуру тоже можно усложнить. Но нафига? 95% случаев она покроет, я полагаю. |
Время: 15:37. |
Время: 15:37.
© OSzone.net 2001-