Praca dla programisty!

Zadań i pomysłów nam przybywa, więc chcielibyśmy wzmocnić nasz team dodatkowymi siłami programistycznymi. Szukamy kogoś, kto lubi i umie programować.

Do rzeczy. Co oferujemy:

  • niepowtarzalną startupową atmosferę
  • partnerskie relacje, bez szefów i podwładnych
  • ciekawe projekty (żadnego programowania stron firmowych!)
  • szansę na realizację własnych pomysłów

Poszukujemy osób, które:

  • są solidne, uczciwe, zaangażowane
  • biegle posługują się obiektowymi językami programowania
  • znają się na tworzeniu aplikacji internetowych
  • są pasjonatami internetu

Wyjątkowo nie publikujemy listy mnóstwa akronimów, które “będą dodatkowym atutem”. Za to poprosimy Cię o małą pracę wstępną, której celem jest przekonanie nas, że jesteś osobą, która zna się na programowaniu. Prosimy o wyrozumiałość - dzięki temu wstępnemu testowi i Ty i my oszczędzimy nieco czasu.

A więc:

Napisz funkcję (w dowolnym języku programowania), która mają tablicę o długości N zawierającą liczby z zakresu 1 do N stwierdzi, czy występują w niej duplikaty (czy da się to rozwiązać w czasie liniowym? przy stałej pamięci? bez niszczenia zawartości tablicy?)

Rozwiązanie prześlij na adres praca [@] mojstartup.pl

Powodzenia!

Comments 15

  1. mt3o napisał:

    To chyba nie jest takie trudne do napisania, prawda? Gorzej z pytaniami o czas i pamięć - na studiach nie uczą mnie informatyki, nie wiem, jak na te pytania odpowiedzieć. Chociaż myślę, że na oba odpowiedź brzmi: tak :)
    Z przyjemnością bym wysłał zgłoszenie, ale a) przeprowadzka nie wchodzi w grę, a mieszkam w stolicy b) mam jeszcze studia..

    Opublikowane 19 czerwca 2008 o 16:48
  2. mrafal napisał:

    Zadanie nie jest trudne. Zresztą można zacząć od podesłania rozwiązania nie uwzględniającego wszystkich warunków podanych w nawiasie, co zdecydowanie je upraszcza.

    Co do Twoich zastrzeżeń - studentów zdecydowanie zapraszamy, o ile są w stanie zagwarantować zaangażowanie przynajmniej w wymiarze pół etatu (20h tygodniowo).

    Praca zdalna potencjalnie też wchodzi w grę.

    PS Proszę by chwilowo nie podawać rozwiązania w komentarzach z oczywistych względów :)
    Ale jeśli chcecie to umieszczę tu rozwiązanie za jakiś czas.

    Opublikowane 20 czerwca 2008 o 9:22
  3. Wojtek napisał:

    Gwoli ścisłości: chodzi o STWIERDZENIE istnienia czy ZNALEZIENIE tych duplikatów???
    Czy jest jakieś ograniczenie na N?

    Jeśli to są hinty, to proszę o usunięcie tego posta ;-)

    Opublikowane 20 czerwca 2008 o 10:20
  4. mrafal napisał:

    Wojtek,

    Stwierdzenie istnienia. Może przyjąć, że funkcja powinna zwrócić wartość true jeśli występują duplikaty a false jeśli ich nie ma.

    Ograniczenie na N wynika tylko z wielkości pamięci w której musi zmieścić się tablica oraz sposobu reprezentacji liczby, która ma być w niej przechowywana.

    Opublikowane 20 czerwca 2008 o 10:37
  5. JacekL napisał:

    Czyżby to zadanie pochodziło z perwszego rozdziału “Programming Pearls? ;-)

    Opublikowane 02 lipca 2008 o 11:43
  6. Coristo napisał:

    Hmm, tak na pierwszy rzut oka to przychodzą mi dwa rozwiązania:
    1) zmienna zajętość pamięci, czas liniowy
    2) stała zajętość pamięci, czas kwadratowy
    Ale funkcja o czasie liniowym i stałej zajętości pamięci ? Hmm musiałbym się porządnie nad tym zastanowić (nie chce jednoznacznie stwierdzić, że się nie da :P )

    Opublikowane 02 lipca 2008 o 17:08
  7. Sławek Malinowski napisał:

    google: array duplicates
    result: http://aperiodic.net/phil/archives/Geekery/find-duplicate-elements.html

    Opublikowane 06 lipca 2008 o 10:42
  8. ks napisał:

    Fajna rekrutacja :) btw.

    Samo stwierdzenie istenienia utrudnia teoretycznie mierzenie jakosci algorytmu. Zwieksza wplyw randomizera na predkosc dzialania funkcji.

    Prosba, opublikujcie co ciekawsze metody :)….
    Jestem ciekaw ludzkiej inwencji :)

    Opublikowane 10 lipca 2008 o 10:39
  9. mrafal napisał:

    Witajcie,

    @JacekL,
    Nie wiem skąd pochodzi, inspirację zaczerpnąłem z nieprzemierzonych głębin internetu :)

    @Coristo,
    Da się. :)

    @Sławek,
    No jasne, że można wyszukać rozwiązanie w internecie. Co nie zmienia chyba sensowności jego umieszczenia w ogłoszeniu o pracę. Bo to ma oczywiście charakter “pierwszego odsiewu” i nie chodzi nawet o to, by znaleźć osoby, które umieją zaprojektować optymalne rozwiązanie, tylko o to:

    1) by zainteresować osoby lubiące programować
    2) wysłać bardziej precyzyjny sygnał, jakie są wymagania na to stanowisko, dzięki czemu część osób sama jest w stanie określić, czy to praca dla nich, czy też nie
    3) zainicjować temat do dalszych rozmów z kandydatem

    Nawiasem na podanej przez Ciebie stronie jest rozpatrywany (pokrewny ale) inny problem.

    Pozdrawiam,
    Marek

    Opublikowane 11 lipca 2008 o 8:17
  10. Invader napisał:

    If you want to find duplicate in Array then use hash look up table O(1).

    Opublikowane 11 lipca 2008 o 8:54
  11. Adam Woźniak napisał:

    Na tej stronie:
    http://jlaskowski.blogspot.com/2008/07/netbeans-ide-65m1-dostpny-i.html
    … jest dyskusja na temat tego zadania. W dyskusji tej wynikło kilka niejednoznaczności tego zadania:
    1. (mogłoby popsuć zabawę - usunięte ;) )
    2. (mogłoby popsuć zabawę - usunięte ;) )
    3. Czy liczby w tablicy są typu integer, czy real?

    Pozdrawiam,
    Adam Woźniak

    Opublikowane 11 lipca 2008 o 17:55
  12. bawr napisał:

    Hm. Czy aktualne jeszcze toto? Google mnie ze szkrzynki skierował. :)

    Opublikowane 12 lipca 2008 o 10:37
  13. Marcunio napisał:

    Wybaczcie wpis dziadka. Mam nadzieję, że po kilku miesiącach można wklepać swoje przemyślenia bez psucia zabawy innym.

    Mój pierwszy pomysł - po sekundzie od przeczytania: Przcież dodawanie i mnożenie jest przemienne. Z góry wiadomo ile wynosi suma i iloczyn liczb od 1 do n. Wystarczy przebiec tablicę raz, policzyć i porównać do wzorca. WOW - minimum pamięci, liniowe rozwiązanie. Tylko szkopół w tym (co natchnęło mnie po chwili), że silnia pieruńsko szybko rośnie. Maszynka może rady nie dać :-( . Poza tym to tylko warunek konieczny, a nie jestem pewny czy wystarczający. ZONK Samą sumę łatwo da się oszukać.

    Pomysł drugi … Posortować tablicę i “gołym okiem” zobaczyć duplikaty. Sortowanie quikiem to O(n)=(n*log_2(n)) i w dodatku potrzeba by zduplikować tablicę aby jej nie niszczyć. duuużo gorzej, ale proste i skuteczne.

    Trzeci … zacząć budować kopiec. W trakcie można wyłapać duplikat. O(n)=(n*log_2(n)) i to w skrajnym przypadku : duplikat na końcu lub brak duplikatu. Nieco lepiej. Kopiec niestety pamięć potrafi zeżreć :-( tylko po to aby go potem do garbarni …hmmm… marnotrastwo.

    Można by oczywiście najpierw sumę, potem kopiec/quick ;-).

    Google twoim przyjacielem :-P jak później przeczytałem w komentarzach.

    Pozdrawiam serdecznie,

    Marcunio

    Opublikowane 07 sierpnia 2008 o 17:47
  14. Marcunio napisał:

    Invader:
    Primo: Jeśli to cytat, to namiary na oruginał byłyby mile widziane i grzeczne.
    Secundo: Nie do końca z tym O(1). Jeśli chcesz sprawdzić, czy elemant siedzi w haszyszu to owszem, jednakowoż na wejściu masz zwykłą tabelę i wkładamnie jej do hasza zajmie Ci O(n). Przy odrobinie pecha całą tabelę będziesz musiał przebiec. Rozmiar hasztabli to tez co najmniej rozmiar tabeli, czyli maleńkie marnotrawstwo będzie jak to czynisz li tylko po to aby zaraz wrzucić ją do grabarni.

    O(n) + duplikat tabeli to lepiej niż O(nlogn) + duplikat.

    Męczy mnie ta suma z iloczynem: instynkt macierzyński mówi, że to wystarczy, ale instynkt samozachowawczy każe być ostrzonym.

    Pozdrawiam,
    Marcunio

    Opublikowane 12 sierpnia 2008 o 12:14
  15. Marcunio napisał:

    P.S.
    A czy praca za udziały w zyskach wchodzi w grę ?

    ;-)

    Opublikowane 12 sierpnia 2008 o 12:18

Dodaj komentarz

Twój email nie będzie nigdy ujawniony. Pola wymagane są oznaczone *