← Grywalnia danych

Łamacz kodu, część III

Rekurencja, wyszukiwanie i grafy w Pythonie: znajdź dane, które psują kod

PythonAlgorytmy

Wyszukiwanie binarne o krok za krótkie, rekurencja głębsza niż stos, pamięć wyników z niepełnym kluczem, zgubiony wynik insert w drzewie BST, Dijkstra z ujemną wagą i tabela Horspoola, która przeskakuje dopasowanie. Każda karta to krótka funkcja w Pythonie i teza, np. że działa w czasie O(n) albo dla każdego n do 10 000. Trzeba ocenić, czy kod spełnia tezę, wskazać linię z błędem (albo samą tezę), nazwać pułapkę i za dodatkowe punkty podać dane, które psują kod.

Gra naprawdę uruchamia pokazany kod we wbudowanym interpreterze podzbioru Pythona z rekurencją, functools.lru_cache i metodami napisów, a limit rekurencji ma taki sam jak CPython: 1000 ramek. Rentgen pokazuje krok po kroku stos wywołań, drzewo BST albo okno wzorca przesuwane po tekście.

Na zajęciach: prowadzący podaje kod sesji, np. GRUPA3. Cała grupa dostaje wtedy te same karty i osobny ranking, a każdy kończy grę linią z wynikiem do przekazania prowadzącemu. Przy remisie punktowym wyżej jest krótszy czas na decyzje; zegar stoi podczas wyjaśnień i rentgenu.

Wynik i czas zapisują się anonimowo w bazie na tym serwerze, a pseudonim tylko wtedy, gdy go dodasz. Szczegóły: Prywatność.

Otwórz grę na całym ekranie →