A więc tak …
Już pewnie znasz tą moją śpiewkę?
Mimo, że nawet twórcy spoja piszą, że służy on do nauki programowania, to tak nie jest. Spoj jest, jak pisałem już w innym wątku, do testowania i do sprawdzania umiejętności programowania. Do nauki są inne źródła wiedzy i inne sposoby/metody.
Więc tytuł tego wątka, powinien raczej brzmieć zadania rozwiązywalne w wolniejszych językach lub jakoś w podobnym duchu.
Oczywiście, że to prawda. C/C++ to nie jedyne istniejące języki programowania i nie trzeba dorastać do żadnego z nich. Jest taka opinia, że programista powinien znać więcej niż jeden język programowania. Ale tutaj może pojawić się moim zdaniem taki problem. Adept nauczy się języka C, a potem używając C++ pisze w stylu C, a tymczasem C++20, to juz nie to samo co C, czy nawet C++/C++98/C++14 itd. Kandydat zaczyna używać Haskell’a [piszę z autopsji ;-)], a myśli i pisze w stylu C. Zaczyna używać i uczyć się Pythona, a dalej pisze stylem C, nie wykorzystując całej mocy Pythona i jego bibliotek.
Co do zadań, które nie są ograniczone limitem czasu, to są jeszcze co najmniej dwa, o których wiem. W tych zadaniach trzeba rozwiązać problem, nie ważne jak, można nawet na kartce papieru, a na Spoja wysłać tylko sam “goły” wynik. Jest to w tym przypadku tych dwóch zadań, dokładnie na takiej samej zasadzie, na jakiej działa projekt Euler.
Może jeszcze doradziłbym, abyś został po prostu problemsetterem, abyś mogł lepiej zrozumieć na jakich zasadach to wszystko działa i może abyś tworzył lepsze zadania, ale to nie jest takie proste. Aby zostać problemsetterem, nie wystarczy sama umiejętność rozwiązywania zadań. Musisz przy ich rozwiązywaniu nauczyć się samodzielnie je testować - umieć tworzyć testy i umieć je zastosować do testowania swoich rozwiązań. Nie jest trudno wymyśleć jakiś problem, ale trudniej przetworzyć je w dobre zadanie. Bez tych dodatkowych umiejętności raczej nie wyobrażam sobie jak stać się dobrym problemsetterem i czy w ogóle można?