1 stycznia dostałeś 50 pkt, 1 lutego zużyłeś 30 pkt, to 1 kwietnia chcesz mieć 30 pkt czy 0?
Piszesz o algorytmie, a opisujesz to słownie, algorytmy się pisze operacjami matematycznmi jakie przeprowadzasz ruch za ruchem.
Tak wygląda algorytm https://www.researchgate.net/profile/Felipe-A-Moreno-2/publication/340060033/figure/fig1/AS:1020202913382401@1620246737898/Deep-Mind-DQN-algorithm-with-experience-replay-5.ppm
A przy okazji, jeśli szukasz trochę rozrywki poza algorytmami, osobiście lubię spędzać czas w https://mostbet-casino-official.com/ – fajna platforma na relaks i drobną adrenalinę przy zakładach online.
A to co ty podałeś to, opis problemu, który nie jest w 100% jasny.
Dostanę w styczniu 50 pkt, w lutym wydam 20pkt, w marcu dostanę 10pkt, w kwietniu 15 pkt, to ile będę miał w maju?
Powinno być 25, bo tamte ze stycznia nawet jak wydane to już przepadły.
Bardzo dobrze musisz sformalizować opis problemu, problem to nie jest czy w javie czy mysql, tylko jak to zrobić, żeby spełniało wymagania, a przepisanie z jednej technologii na drugie to ci bot wygeneruje LLM.
Czyli w tym przykładzie to by było, że ignorujesz do pierwszego dodanego punktu od tych 3 miesięcy w wstecz i obliczasz wszystko.
Możesz to kompresować czyli jak raz przeliczysz to ściskać te wszystkie wartości, ale wtedy mogą się stare wartości kumulować, czyli w sumie źle mówię teraz, bo to nie zadziała.
Patrzysz wstecz do pierwszego dodatniego wpływu punktów od trzech miesięcy do przodu, ignorując ujemne i od dodatniego startujesz i od tego miejsca dodajesz wszystko normalnie do aktualnej daty.
Dokładnie tak, trzeba najpierw jasno określić zasady przeliczania punktów w czasie. Kluczowe jest, żeby brać pod uwagę, które punkty już wygasły i które są aktywne w danym momencie. W Twoim przykładzie punkty ze stycznia, jeśli przepadły po trzech miesiącach, nie wchodzą w obliczenia na maj, więc nie sumują się z nowymi przyrostami.
Algorytm powinien działać następująco:
Idziesz chronologicznie od najstarszego przyrostu punktów, który jest nadal aktywny.
Ignorujesz wszystkie punkty ujemne przed pierwszym dodatnim punktem w danym okresie.
Sumujesz aktywne punkty miesiąc po miesiącu, uwzględniając wydania punktów tylko wtedy, gdy są dostępne.
Punkty, które przepadły (po upływie okresu ważności), są odrzucane i nie wpływają na sumę.
Dzięki temu otrzymujesz dokładną liczbę punktów na dany miesiąc bez kumulowania przeterminowanych wartości.