Jak mierzyć poziom stresu indeksem Hirscha

SONY DSC

Niestety, skutecznie… Wracam do mojej pierwszej mockowej rozmowy rekrutacyjnej, na której miałam  wątpliwą (w moim pierwszym odczuciu) przyjemność zaznajomić się z ideą niejakiego pana Jorgego E. Hirscha. Hmmm… Zrozumienie tej koncepcji,  ułożenie sobie w głowie dokąd zmierzam i jak do tego dojść oraz przełożenie pseudokodu na składnię Pythona w warunkach stresu i pod presją czasu okazało się naprawdę niełatwe.  Poległam na ostatnim etapie, zabrakło mi czasu i umiejętności utrzymania koncentracji.  Ale uff, o dziwo mój mentor nie był bardzo niezadowolony, uznał, że jeśli ktoś dobrze myśli, to uzyskanie biegłości w kwestiach technicznych jest kwestią czasu. Więc jednak mały plus. No i angielski na plusie, bo w tym zakresie nie stwierdzilśmy trudności komunikacyjnych:)

Ja jednak byłam nieco rozczarowana, zaczęłam więc zgłębiać temat i oprócz standardowego definiowania problemu (np. https://en.wikipedia.org/wiki/H-index) znalazłam ciekawe rozwiązanie, oparte na relacji pomiędzy indeksem (w sensie pozycji na liście) a liczbą umieszczoną na liście pod tym indeksem (http://subjectguides.uwaterloo.ca/calculate-academic-footprint/YourHIndex).  Okazuje się, że indeks można łatwo ustalić poprzez znalezienie pozycji na liście, która swoją wartością dorówna lub przekroczy wartość pod nią zapisaną. Zestawienie tych podejść może wyglądać następująco (dwa pierwsze: podejście “indeksowe”, ostatnie: szukanie właściwych elementów na liście). Wszystkie zakładają, że elementy na liście są ułożone w porządku malejącym oraz nie mają pojącia czym jest złożoność obliczeniowa:).

class Solution:

    def hirsch_index(self, lst):
        result = []
        for i in range(len(lst)):
            if i >= lst[i]:
                result.append(i)
                break
        return result[0]


    def hirsch_index2(self, lst):
        i = 1
        while i < lst[i]:
            i += 1
        return i


    def hirsch_index3(self, lst):        
        ind = 1
        while len([number for number in lst if number >= ind]) - 1 >= ind:
            ind += 1
        return ind


s = Solution()
print(s.hirsch_index3([28, 22, 20, 6, 5, 4]))

Patrzę na to podejście i myślę sobie, że jest jednak problem. Załóżmy, że mamy do czynienia z wybitnym, rzadko publikującym naukowcem, którego wszystkie publikacje mają większą ilość cytacji niż ilość opublikowanych artykułów. I co wtedy? A może taka sytuacja po prostu nie może się zdarzyć w rzeczywistym świecie? Idę czytać…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s