Sam idea sprawdzania wiedzy programistów poprzez serwis bardzo mi się spodobała.
Testy Codility badają jedynie zdolność tworzenia algorytmów - znajomość konkretnych technologii, bibliotek a także umiejętność współpracy w grupie i pracy w stresie trzeba już weryfikować w inny sposób.
Miałem okazję zapoznać się z takim "zestawem zadań rekrutacyjnych". Problemy przedstawiane są według stopnia trudności, każdy z nich ma zostać rozwiązany w określonym czasie.
Rozwiązywanie polega na stworzeniu algorytmu poprzez edytor online w jednym z wybranych języków (całkiem pokaźny zestaw C#, C++, Java, Python itd.).
Gotowy algorytm przesyłamy na serwer i zlecający otrzymuje wynik naszego testu.
Jednym z dwóch "rozgrzewkowych" zadań (drugiego nie pamiętam), było rekurencyjne obliczanie wysokości drzewa binarnego.
public class Tree { public int x; public Tree l; public Tree r; }; public int TreeHeight(Tree node) { if (node == null) return 0; if (node.l == null && node.r == null) return 0; return 1 + Math.Max(treeHeight(node.l), treeHeight(node.r)); }
Z każdym następnym zadaniem poziom trudności wzrastał, głównym problemem było rozwiązanie algorytmów z żądaną przez autorów złożonością czasową.
Kolejnym zadaniem było obliczenie ilości uzupełniających się par ze złożonością O(n) oraz szukanie najmniejszej różnicy miedzy wartościami z dwóch tablic. Ale to następnym razem...
Mógłbys wytłumaczyć kod w ostatnim returnie?
OdpowiedzUsuń46 year-old Systems Administrator II Jedidiah Longmuir, hailing from Picton enjoys watching movies like Joe and Poi. Took a trip to Gondwana Rainforests of Australia and drives a Ferrari 250 GT SWB "Competition" Berlinetta Speciale. katalog
OdpowiedzUsuń