@vrkr Moim zdaniem inżynier oprogramowania będzie wolał rozwiązanie prostsze koncepcyjnie, którego utrzymanie, debugowanie i rozszerzanie nie będzie wymagało za wiele wysiłku, zamiast super-bleeding-edge rozwiązania, które zaoszczędzi 0.01% cpu i 2% pamięci w ciągu regularnego działania.
Przypomniało mi się, jak na studiach mieliśmy automatyczną testerkę zdań, zadania były pisane jeszcze w Pascalu. Był algorytm + limity pamięci. Algorytm miał działać na liście jednokierunkowej, był skomplikowany i ciężki do debugowania. Ten sam problem był trywialnie prosty do rozwiązania przy użyciu listy powiązanej dwukierunkowo. Oczywiście limity pamięci były dobrane tak, aby struktura danych z dwukierunkowymi wskaźnikami się nie mogła zmieścić... no w każdym razie, autorzy zadania nie wzięli pod uwagę, tego, że ktoś w Pascalu zrobi wstawkę assemblerową, która sobie przerabia wskaźniki kompresując je po drodze (bo było niewiele pamięci do zaadresowania), i w efekcie zmieści listę polinkowaną w obie strony używając skróconych wskaźników. Cóż, byłem wtedy młody i głupi... teraz nie jestem już młody. ( ͡° ͜ʖ ͡°)