Szukaj na blogu

Najinteligentniejszy skrypt na świecie

A przynajmniej niektórzy ludzie uważają, że jest on inteligentniejszy od nich. Dlaczego ?


Ponieważ niektórzy ludzie uważają, że miarą inteligencji jest biegłość w rozwiązywaniu zagadek typu:

Dane są liczby 1 2 4
Jaka jest kolejna liczba i co łączy te liczby?

Oto skrypt który błyskawicznie i bezbłędnie rozwiązuje wszystkie tego typu testy. Jego napisanie zajęło dosłownie chwilkę. Równie łatwo można napisać program który rozwiązywał by inne typy testów „mierzących inteligencję”.

Ja jednak uważam, że ten program wcale nie jest inteligentny, choć w pewnych sytuacjach może być pożyteczny, a tego typu testy nie mają większego sensu. Nie trzeba być geniuszem aby się nauczyć na pamięć algorytmu według którego działa taki prosty program a potem rozwiązywać zagadki jak maszyna.

Wracając do skryptu - co on tak naprawdę robi?
Znajduje wzór na n-ty wyraz ciągu którego początkowe wyrazy ma podane, zadanie sprowadza się do rozwiązania układu równań liniowych. Jeśli ktoś jest ciekaw jak działa program do szybkiego rozwiązywania takich układów to polecam poczytać sobie skrypt (właściwie obliczenia zajmują 9 linijek, od linii 20 do 28).

Jeszcze mała uwaga co do zagadki. Czy zauważyliście, że ma ona wiele poprawnych odpowiedzi?

Jeśli ktoś powie, że kolejnymi liczbami są 8 i 16 to ma rację, jest to dobre rozwiązanie bo można przyjąć, że liczby powstają według wzoru 2⁽ⁿ⁻¹⁾

Ale ktoś inny powie, że kolejnymi liczbami są 7 i 11 to też ma rację, to również jest dobre rozwiązanie bo równie dobrze jak poprzednio można przyjąć, że kolejne liczby powstają według wzoru ½n² - ½n + 1

Właściwie to można podać dowolne liczby i też będą one poprawną odpowiedzią, a jak ktoś by chciał zaprotestować zawsze można podać wzór który je łączy (nawet dopisując do ciągu kolejne liczby zupełnie losowo program zawsze znajdzie jakiś sensowny wzór który je łączy).

5 komentarzy:

  1. Widzę, że ludzie jednak wolą ściągać głupoty z TVN playera niż bawić się w "najinteligentniejszy skrypt świata" :P

    OdpowiedzUsuń
  2. "zawsze znajdzie jakiś sensowny wzór który je łączy" czyli jak podam liczby pierwsze to obliczy mi następne liczby pierwsze? ;-) LOL

    OdpowiedzUsuń
    Odpowiedzi
    1. Z pewnością chodzi o to że zauważyłeś pewną ciekawostkę dotyczącą wielomianów interpolacyjnych.

      Jeśli dane wejściowe są liczbami całkowitymi to dane wyjściowe też będą całkowite.
      Jeśli dane wejściowe będą parzyste to dane wyjściowe też będą parzyste.
      Jeśli dane wejściowe dzielą się przez N (gdzie N to dowolna liczba) to dane wyjściowe też będą podzielne przez N.

      Jednak w drugą stronę zależność taka nie zachodzi - jeśli żadna z danych wejściowych nie dzieli się przez N to nie wynika z tego, że dane wyjściowe też nie będą się dzielić przez N.
      Czyli nie odkryłeś nowego sposobu na znajdowanie liczb pierwszych.

      Usuń
  3. Moi drodzy zapraszam Was do pisania aplikacji na android.

    OdpowiedzUsuń
    Odpowiedzi
    1. Osobiście nie widzę sensu w pisaniu programów tylko na jeden system.
      Zdecydowanie wolę napisać coś co działa na różnych systemach.

      Usuń