Michael Kozakov, student računalnih znanosti, prije nekoliko tjedana predao je molbu za posao u Twitteru.
Srećom za nas, Kozakov je napisao blog o svom iskustvu. Budući da je aplicirao za poziciju programera, Kozakov je dobio zadatak da kreira model za rješavanje matematičkog problema, u formi koda.
Problem se na prvi pogled čini nevjerojatno lakim. Ali to je ono što razlikuje studente slobodnih umjetnosti od štrebera računalnih znanosti.
Pokušali smo ga pojednostaviti što je više moguće.
Ovdje je najelegantnije rješenje koje je Kozakov napisao na svom blogu :
"Rješenje u jednom prolazu... izbjegava pronalaženje maksimalne vrijednosti pomicanjem dva pokazivača sa suprotnih krajeva niza jednog prema prema drugome. Ako je najveća vrijednost lijevo od lijevog pokazivača manja nego najveća vrijednost koja se nalazi desno od desnog pokazivača, tada pomaknite pokazivač ulijevo jedan indeks na desnoj strani, u suprotnom, pomaknite desni pokazivač jedan indeks ulijevo. Ponovite sve dok se dva pokazivača ne presijeku. (To je opširno objašnjenje, ali kod je jako jednostavan)."
Ako nemate pojma o kodiranju, ove upute je lakše razumjeti ako držite dva prsta kao pokazivače dok čitate dijagram. Drugim riječima, rješenje je u osnovi pronaći dva najviša tornja koja su najdalja lijevo i najdalja krajnje na desnoj strani dijagrama i zatim izračunajte volumen između njih. Ili?