Dzisiejsze zadanko przepisałem do C, bo pisałem z wykopkiem na temat wydajności i musiałem zaimplementować dodawanie dużych liczb. Wersja pythonowa zabrała mniej więcej 2 ms, wersja w C ~150 ns.
W pierwszym liczyłem każdą rybkę osobno ale przeglądarka nie dała rady i nawet node wywaliło po 1.5GB zużytej pamięci w drugim. Dopiero wtedy rozkminiłem, że można policzyć ile ma się rybek w jakim wieku i je grupami mnożyć różnica w chuj dla każdego dnia odejmujemy -1 od 9 grup wiekowych i jeśli grupa -1 to dodajemy ją do 6 i 8 i tylko mnożymy wynik w danej grupie rybek, a tak mi się już srało koło 130 dnia. :D
Z liczeniem populacji dla każdego dnia daje w przeglądarce ~17-19ms jak sie wyrzuci to tylko dla ostatniego daje 1ms. :)
A to moje VBA dla części II zadania
https://pastebin.com/DfEpxv84
Czas wykonywania nie wiem jak sprawdzić w Excelu xd
Ale w sumie to zadanie fajne, że drugie w sumie nie chodzi o zmianę algorytmu, tylko, że jak się w pierwszym nie napisało optymalnie to w drugim to widać.
@Deykun: nawet sam autor mówił że pierwsze zadanie ma za zadanie sprawdzić czy treść zadania została zrozumiana a dopiero w drugim jest prawdziwa zagadka
@sens:
No niby tak, ale jak piszę te pierwszą to teraz bardzo asekuracyjnie, bo nie wiem w którą stronę będę musiał skalować, i tu było ok. :<
@Deykun: ja to pisze od razu pierwsze ci przyjdzie do głowy a potem jak w drugim trzeba optymalizować to optymalizuje drugie i potem pierwsze żeby nie było wstydu na githubie xd
@Deykun: z drugiej strony jak w pierwszym zadaniu masz tylko jeden input i krótki zakres to nie ma co wszystkich dzieł wystawiać i robić cudo techniki, zwłaszcza że nie wiesz o co będzie chodziło w zadaniu drugim. Równie dobrze mogł być krótki zakres, ale jakaś dodatkowa reguła, nie wiem, śmierć rybki po 18 dniach