webBG - програмисти, машинно обучение, javascript, python, php, питам, говорим, публикации

Каква е добрата структура на данните за периодични или повтарящи се дати?

Има ли публикувана структура от данни за съхраняване на периодични или повтарящи се дати? Нещо, което може да се справи:

  1. Помпата се нуждае от рециклиране на всеки пет дни.
  2. Денят за плащане е всеки втори петък.
  3. Денят на благодарността е вторият понеделник на октомври (САЩ: четвъртият четвъртък на ноември).
  4. Денят на влюбените е всеки 14 февруари.
  5. Слънцестоенето е (обикновено) всеки 21 юни и 21 декември.
  6. Великден е неделята след първото пълнолуние на или след деня на пролетното равноденствие (добре, това е малко разтегливо).

Смятам, че вътрешната структура на данните на cron може да се справи с #1, #4, #5 (две правила) и може би #2, но не съм я разгледал. MS Outlook и други календари изглежда могат да се справят с първите пет, но нямам този изходен код.


  • Това може да помогне: stackoverflow.com/questions/85699/ 18.06.2009
  • Благодаря. Ако просто бях търсил повтарящи се вместо повтарящи се дати, щях да намеря цял куп въпроси. 18.06.2009

Отговори:


1

Използвайте библиотека за внедряване на iCalendar, като тези: ruby, java, php, python, .net и java и след това добавете поддръжка за изчисляване на специални дати.

17.06.2009
  • Благодаря. Мислех, че iCalendar изглежда пресилено, но може би в крайна сметка това е най-простото решение. 18.06.2009

  • 2

    С всички тези вариации в начина, по който указвате повторението, бих се отклонил от една единствена реализация на структура от данни, за да побере всичките 5 сценария.

    Вместо това бих (и трябваше за предишен проект) да изградя прости структури, които адресират всеки тип повторение. Бихте могли да ги обвиете всички, така че да изглежда като една структура от данни, но под капака те могат да правят каквото си искат. Чрез внедряването на интерфейс успях да третирам всеки тип повторение по подобен начин, така че се чувствах като универсална структура от данни. Можех да поискам от всяка инстанция всички дати на повторение в рамките на определен период от време и това свърши работа.

    Също така бих искал да знам повече за това как трябва да се използват тези дати, преди да се спра на конкретна реализация.

    17.06.2009
  • Да, мисля, че ще ви е необходим обединен набор от структури от данни, тъй като начините за изразяване на повторенията са толкова различни. И тогава бихте искали интерфейс, който можете да направите запитване, за да намерите дали определен ден или дни съответстват на някое от повторенията. В отговор на вашия въпрос, датите ще се използват за резервиране на теле/видео/уеб конференции, някои от които съвпадат с национални празници, следователно вторият понеделник през октомври е работен. 18.06.2009

  • 3

    Ако искате практически да създадете структура от данни, бих препоръчал хеш таблица (където празниците или събитието са ключове с новото появяване на дата като стойност), ако има множество от всяко събитие, можете да хеширате стойността, която намира раздел в свързан списък, който след това има списък с всички срещания (това би накарало намирането, както и вмъкването да се изпълняват в O(1)).

    17.06.2009
    Нови материали

    Създайте разширение за Chrome с помощта на Angular
    Този урок е базиран на манифеста на разширението на chrome версия 3 (MV3), а също и на Angular версия 2+ (2, 3 и...). Ако не сте използвали манифест версия 3, можете да следвате този урок ,..

    За да научите нов език за програмиране, започнете отначало
    Първоначално публикувано на http://www.mberlove.com/blog/a-new-programming-language-starting-over/ Програмистите се гордеят със способността си да усвояват лесно нови умения , разчитайки..

    5 Youtubers на Data Science, които трябва да следвате
    Защото всички можем да се справим с малко продуктивно отлагане Всички сме падали в заешката дупка на Youtube, така че защо да не я направим продуктивна?! Като непрекъснато нарастващ източник..

    Бих казал, че точно това е проблемът с Twitter — това е инструмент на суперпотребител.
    Бих казал, че точно това е проблемът с Twitter — това е инструмент на суперпотребител. По същия начин, по който суперкодерът сочи vim като единствения начин за кодиране, но останалите от нас..

    Основи на Gradio
    Gradio е най-ефективният метод за демонстриране на вашия модел на машинно обучение и разполага с удобен за потребителя онлайн интерфейс, който го прави достъпен от всяко място. Какво прави..

    Илюстрация (GIF) за обяснение на дълбоки конволюционни мрежи (DCNN)
    В света на компютърното зрение най-основният и често срещан алгоритъм за разпознаване на изображения е конволюционната мрежа. С популярността на рамки като tensorflow и pytorch, стана по-лесно да..

    Python Bootcamp — Data Science Day 165
    Python Bootcamp от Giles McMullen-Klein беше абсолютно невероятно. Джайлс има този уникален начин да улови аудиторията си, като същевременно прави съдържанието на курса много интересно...