Soutěž: Machr na algoritmy - Doplňování posloupností

Ostatní jazyky Ostatní programovací jazyky Machr na algoritmy - Doplňování posloupností

Soutěž již skončila

Zadání

Letní soutěž skončila, tak se zase pustíme do těch menších ;) A začneme hraním s posloupnostmi. Vaším úkolem bude napsat konzolovou aplikaci, která dostane prvních 8 členů posloupnosti a vypíše 8 dalších.
Ukázkový vstup (an+1 = an * 2 + 2):

1,4,10,22,46,94,190,382

Výstup:

766,1534,3070,6142,12286,24574,49150,98302

Úkolem programu je tedy odhadnout o jakou posloupnost se jedná a určit jak pokračuje.
Co se týče vstupu, budete posloupnosti číst ze souboru, který bude zadán při spuštění. Vstupní soubor bude obsahovat 200 řádek - na každé řádce bude jedna posloupnost složená z celých čísel oddělených čárkami.
Pokračování posloupností budete psát stejným způsobem do konzole na jednotlivé řádky.

Povolené jazyky: C, C++, C#, Java
Pokud budete chtít použít jiný (nebo budete mít nějaký dotaz k soutěži), zeptejte se v komentářích.

Výhra

Vítěz dostane placku Machr a ocenění do portfolia.

Výhra

Výsledky

Jméno bodů Řešení ( Stáhnout vše )
coells 99 Stáhnout řešení
Martin Dráb 95 Stáhnout řešení
Martin Vejvoda 80 Stáhnout řešení
Gramli 66 Stáhnout řešení
D0ll0k 61 Stáhnout řešení
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Tentokrát si budeme hrát s posloupnostmi čísel.

Soutěž končí 30. října 12:00, tak se nezapomeň zapojit! :)

Odpovědět 23. října 17:01
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Nahoru Odpovědět 23. října 17:11
2x piš, jednou debuguj
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

gcx11
Josef Kuchař (Pepa489)
Jedině pokud z toho zvládnete udělat spustitelný soubor... Programy a jejich výstupy budu testovat aplikací, která je spustí a bude kontrolovat jejich výstup.

Nahoru Odpovědět 23. října 18:02
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
gcx11:

Nebyl by tím pádem lepší i výstup do souboru? A na to pak diff?

 
Nahoru Odpovědět 23. října 18:26
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Martin Dráb:

Co Pascal/Delphi? Exátko samozřejmě bude.

Ten Python by podle mě nemusel být takový problém. Prostě tvoje testovací utilitka bude must umět spustit program s parametry. Ale je to samozřejmě na tobě.

Nahoru Odpovědět 23. října 18:26
2 + 2 = 5 for extremely large values of 2
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Martin Dráb
Zdeněk Pavlátka:

Pascal není problém, o Delphi skoro nic nevím :/

Nahoru Odpovědět 23. října 18:30
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Josef Kuchař (Pepa489):

Já ti to klidně do exe zabalím přes py2exe ;)

Nahoru Odpovědět 23. října 18:43
2x piš, jednou debuguj
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na gcx11
Zdeněk Pavlátka:

Tak změna, s Pythonem by neměl být problém.

Nahoru Odpovědět 23. října 18:51
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
polemes
Redaktor
Avatar
polemes:

Bude zadání vždycky od jedničky?

Nahoru Odpovědět 23. října 20:12
5 + 5 = 1010
Avatar
pocitac770
Redaktor
Avatar
pocitac770:

Pfff... Co to sakra je? :D
Tak na tohle fakt nemám mozek, ale rád se podívám na finální řešení, jak jste to vlastně dokázali a ještě se něco přiučím :)

 
Nahoru Odpovědět  +2 23. října 20:59
Avatar
Odpovídá na polemes
Petr Čech (czubehead):

Posloupnosti můžou začínat čímkoliv

Nahoru Odpovědět 23. října 21:05
Why so serious? -Joker
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Petr Čech (czubehead)
Martin Dráb:

ALe předpokládám, že v nich potkáme jen celá čísla (?)

Nahoru Odpovědět  -1 23. října 21:19
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Martin Dráb
Josef Kuchař (Pepa489):

to doufám, jinak moje plánované řešení nebude stačit :D

Nahoru Odpovědět 23. října 22:19
2x piš, jednou debuguj
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Martin Dráb
Zdeněk Pavlátka:

viz zadání

na každé řádce bude jedna posloupnost složená z celých čísel oddělených čárkami

Nahoru Odpovědět  +1 23. října 23:02
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Pavol Hejný
Redaktor
Avatar
Pavol Hejný:

Mohu použít Node JS?

Nahoru Odpovědět 23. října 23:16
http://pavolhejny.cz/
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 23. října 23:26
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
D0ll0k
Člen
Avatar
D0ll0k:

Budou ve vstupu i desetinná čísla?

Nahoru Odpovědět  -1 24. října 15:17
Ten, co se snaží "programovat"
Avatar
D0ll0k
Člen
Avatar
Odpovídá na D0ll0k
D0ll0k:

Pardon, nepřečetl jsem si to :-D budou tam jen celá

Nahoru Odpovědět  -1 24. října 15:18
Ten, co se snaží "programovat"
Avatar
Odpovídá na Zdeněk Pavlátka
Libor Šimo (libcosenior):

Bude v zadaní aj kombinácia záporných a kladných čísiel?

Nahoru Odpovědět 24. října 15:27
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na D0ll0k
krepsy3:

Takže jsi na to koukal, jo? Uvažuješ? Protože tohle já fakt nedávám, ne do třicátého :D

Nahoru Odpovědět 24. října 15:35
Programátor je stroj k převodu kávy na kód.
Avatar
Libor Šimo (libcosenior):

Odpoviem si sam.
Zrejme bude ked sa jedna o cele cisla.

Nahoru Odpovědět 24. října 16:04
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 24. října 16:33
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
coells
Redaktor
Avatar
coells:

Zdeňku, mohl bys zveřejnit testovací soubor, prosím?
Soubor třeba o 100 posloupnostech s očekávaným výsledkem.
Je dost těžké odhadnout, co si představuješ pod posloupností a řešení při 8 prvcích je vždy nejednoznačné.

 
Nahoru Odpovědět  +2 24. října 19:36
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na coells
Zdeněk Pavlátka:

Tak tedy drobná ukázka:

1,4,7,10,13,16,19,22
5,-5,5,-5,5,-5,5,-5
-1,-2,-3,-4,-5,-6,-7,-8
0,0,0,0,0,0,0,0
1,2,4,8,16,32,64,128
12,11,9,6,2,-3,-9,-16
256,245,234,223,212,201,190,179
1,2,5,14,41,122,365,1094
0,1,1,2,3,5,8,13
4,9,16,25,36,49,64,81

V podobném stylu bude vstupní soubor. "Funkční" část programu (tedy výstup) budu hodnotit procenty. Níže je řešení se vzorci pro každou z ukázek: (n = 1, 2, 3, ...):

an = an-1 + 3 | an = 3n - 2
25,28,31,34,3­7,40,43,46

an = -an-1 | an = 5 * (-1)n+1
5,-5,5,-5,5,-5,5,-5

an = an-1 - 1 | an = -n
-9,-10,-11,-12,-13,-14,-15,-16

an = 0
0,0,0,0,0,0,0,0

an = 2an-1 | an = 2(n-1)
256,512,1024,­2048,4096,8192,16384,327­68

an = an-1 - n + 1
-24,-33,-43,-54,-66,-79,-93,-108

an = an-1 - 11 | an = 267 - 11n
168,157,146,1­35,124,113,102,91

an = an-1 * 3 - 1
3281,9842,295­25,88574,265721,797162,2­391485,7174454

Fibonacciho posloupnost (an = an-1 + an-2)
21,34,55,89,1­44,233,377,610

an = (n + 1)2
100,121,144,1­69,196,225,256,289

Nahoru Odpovědět  +3 24. října 20:28
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
B42P6
Člen
Avatar
B42P6:

Zdravím,
mohol by si prosím popísat čo sa pokladá za "správne" pokračovanie postupnosti. Teraz tomu rozumiem tak že "správne pokračovanie je to, pri ktorom na novovzniknutú postupnost platí rovnaký vzorec pre každý člen".
Tu ale nastáva problém s tým ,že je možné vytvorit mnoho (myslím nekonečno, ale niesom si istý) "správných" pokračovaní. Napr:

1,4,7,10,13,16,19,22

a(n) = 3n - 2
25, 28, 31, 34, 37, 40, 43, 46


a(n)=a(n-7)+a(n-6)+a(n-5)+a(n-4)
34, 46, 58, 70, 91, 121, 160, 208


a(n)=a(n-7)2+a(n-4)2
34, 46, 58, 70, 100, 130, 160, 208


a(n)=a(n-7)+21
(pokračovanie uz neuvádzam, iba vzorec)


a(n)=a(n-7)*22


atd.

Nahoru Odpovědět 29. října 15:10
'long long long' is too long for GCC
Avatar
B42P6
Člen
Avatar
Odpovídá na B42P6
B42P6:

Odporúčal by som asi takúto definíciu:
"Správne pokračovanie je to pri ktorom platí pre každý člen novovzniknutej postupnosti nerekruzívny (t.j. vo vzorci sa nevyskytuje iný člen)". To by ale znamenalo že nemôžeš použit Fibonacciho postupnost.

Nahoru Odpovědět 29. října 15:16
'long long long' is too long for GCC
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na B42P6
Martin Dráb:

V tomhle máš samozřejmě pravdu – existuje nekonečně mnoho posloupností, které mají prvních osm členů (a_{0}, ..., a_{7}) shodných se vstupem a pokračování je jiné, než požadovaný výstup. Spíš to vidím na použití zdravého rozumu (= vzorce generující posloupnosti nebudou patřit k těm pekelným). Je fakt, že zkrátka potřebuješ trochu... štěstí...

Na druhou stranu, tebou uváděné formule se pro případ, kdy znáš prvních osm členů, tak úplně nehodí. Pokud znám prvních osm členů a při výpočtu n-tého, potřebuju znát n-7mý, tak je v podstatě většina těch známých členů "napevno" definovaná (nedostaneš se k ní použitím tvojí formule, protože je jejich pořadové číslo příliš nízké).

Nahoru Odpovědět  +1 29. října 15:25
2 + 2 = 5 for extremely large values of 2
Avatar
coells
Redaktor
Avatar
Odpovídá na B42P6
coells:

Každou posloupnost můžeš vyjádřit rekurentně.
Každou posloupnost můžeš vyjádřit vzorcem bez závislosti na předchozích členech (i Fibonacciho).
Navíc pro libovolný 9. prvek je možné vždy najít vzorec, kterým bude pokračovat.

 
Nahoru Odpovědět  +1 29. října 15:30
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na B42P6
Zdeněk Pavlátka:

správne pokračovanie je to, pri ktorom na novovzniknutú postupnost platí rovnaký vzorec pre každý člen

tak to také je. Pro účely téhle soutěže hledej ty vzorce co nejjednodušší. Často půjde o aritmetické a geometrické posloupnosti.
Plus významné posloupnosti jako Fibonacciho posloupnost nebo posloupnost prvočísel.

Nahoru Odpovědět 29. října 18:30
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
coells
Redaktor
Avatar
Odpovídá na Martin Dráb
coells:

Dokonce se to dá formalizovat pomocí a priori definice třídy modelu a pravděpodobnosti její správnosti pod posteriorem.

Zrovna prvočísla teda spadají do kategorie pekelných předpisů ;-)
Ale je mi jasné, že s tímhle si středoškolská matematika neporadí, takže je to aspoň o to zajímavější.

Zdeněk Pavlátka
Jedna posloupnost naoplátku, uhádneš pokračování? 10,11,13,17,1­9,21,23,29

 
Nahoru Odpovědět 29. října 23:12
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na coells
Martin Dráb:

Ano, prvočísla mě překvapila.

Hm, nedá se říci, že bych použil nějakou extra vysokoškolskou matiku. Spíš věci, které se z daného úhlu pohledu na střední neukazovaly (resp. nepamatuju si to).

Nahoru Odpovědět 29. října 23:20
2 + 2 = 5 for extremely large values of 2
Avatar
coells
Redaktor
Avatar
Odpovídá na Martin Dráb
coells:

To mě taky, ale chápu, že dokud člověk nenarazil na obecnou algebru, tak se tváří poměrně jednoduše.

 
Nahoru Odpovědět 30. října 0:45
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na coells
Zdeněk Pavlátka:

Prvočísla, Fibonacciho posloupnost a pár dalších budou bonusové, většina vstupu se bude skládat z aritmetických a geometrických posloupností a jejich kombinace (an = q × an-1 + d) .

A k té tvojí posloupnosti mě nenapadá žádné pravidlo... (teoreticky tam může být cokoli)

Nahoru Odpovědět 30. října 0:53
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
coells
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
coells:

Jak říkám, to je v pořádku, se záludnostmi je to zábavnější.

Moje posloupnost jsou "prvočísla", je to jen ukázka, proč jsou složitá.
Pokud definuju a[n] jako nejmenší číslo větší než a[n-1] a nesoudělné s a[1], ..., a[n-1], dostanu pro:

a[1] = 2: 2,3,5,7,11,13­,17,19,23,...
a[1] = 3: 3,4,5,7,11,13­,17,19,23,...
a[1] = 10: 10,11,13,17,1­9,21,23,29,31,­...

 
Nahoru Odpovědět  +1 30. října 1:04
Avatar
Odpovídá na coells
Martin Vejvoda:

Můžu se zeptat na vzorec posloupnosti prvočísel? Nikde jsem to nenašel

Nahoru Odpovědět 30. října 12:39
while (!asleep()) sheep++;
Avatar
Odpovídá na Martin Vejvoda
Petr Čech (czubehead):

Na posloupnost prvočísel neexistuje žádný obecný vzorec, hledají se relativně komplikovaně, je to součástí kryptografie

Nahoru Odpovědět  +1 30. října 12:58
Why so serious? -Joker
Avatar
Odpovídá na Petr Čech (czubehead)
Martin Vejvoda:

Díky, tak nějak jsem to čekal.

Jinak můžu se zeptat, kdy asi bude soutěž vyhodnocena?

Nahoru Odpovědět 30. října 13:01
while (!asleep()) sheep++;
Avatar
coells
Redaktor
Avatar
Odpovídá na Martin Vejvoda
coells:

Vzorců je spousta, ale neexistuje žádný obecný.
Je to věc, která úzce souvisí s Riemannovou hypotézou https://en.wikipedia.org/…n_hypothesis
To je pro změnu jeden z Problémů milénia http://www.claymath.org/…ize-problems

Když tohle pominu, tak "býti prvočíslem" je vlastnost čísla, nesouvisí s číselnými posloupnostmi.
Na tohle se už žádný obecný program napsat nedá, například 2,6,12,18,30,­42,60,72,...
Další prvek je 102, protože člen v tomhle případě musí splňovat vlastnost "býti průměrem prvočíselných dvojčat".
U téhle posloupnosti ani není jisté, že je nekonečná.

 
Nahoru Odpovědět 30. října 13:20
Avatar
Šimon Rataj
Člen
Avatar
Odpovídá na Martin Vejvoda
Šimon Rataj:

Není to úplně posloupnost, ale udělal jsem tuto funkci v php, kde parametr int je limit.

function primeNumbers($int) {
    for($i = 0; $i<=$int; $i++) {
      $r[0] = 1;
      if($i>0)
        $r[$i-1] = $i;
      unset($r[0]);
    };
    foreach($r as $k => $v) {
      for($i = $v; $i<$int; $i++) {
        if(isset($r[$i]) && $r[$i]%$v==0)
          unset($r[$i]);
      };
    };
    return $r;
  };
Editováno 1. listopadu 18:43
 
Nahoru Odpovědět 1. listopadu 18:43
Avatar
Odpovídá na Šimon Rataj
Martin Vejvoda:

Díky, ale PHP vůbec neznám, takže se v tom moc nevyznám

Editováno 1. listopadu 18:46
Nahoru Odpovědět 1. listopadu 18:46
while (!asleep()) sheep++;
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:

Na této stránce to funguje.

 
Nahoru Odpovědět  +1 1. listopadu 18:49
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Zdeněk Pavlátka:

Díky všem za účast, zde jsou výsledky:

coells - 99 bodů
Správnost výsledků:

  • 99,5 % -> 74 bodů

Program:

  • špatně byla jen prvočísla ;)
  • kód je stručný, komentovaný

Splnění zadání:

  • výstup jsi sice psal do souboru místo do konzole, ale u toho pythonu to bylo trochu nejasné :-S

Martin Dráb - 95 bodů
Správnost výsledků:

  • 100 % -> 75 bodů

Program:

  • pěkný kód (jen je asi zbytečné psát return; do metod které nic nedělají)
  • metody jsou popsané v komentářích

Splnění zadání:

  • vstup jsi měl číst ze souboru, ne z konzole -> -5 bodů

Gramli - 66 bodů
Správnost výsledků:

  • 62,3 % -> 46 bodů

Program:

  • u spousty posloupností tvůj výtvor střídavě mění znaménka (lichá čísla měla opačné znaménko)
    • např. pro zadání 2,2,2,2,2,2,2,2 tvůj program vypsal -2,2,-2,2,-2,2,-2,2
    • tvoje "konstantní posloupnost" ignoruje znaménka a generuje je střídavě
  • až na mínusy funguje dobře pro aritmetické a geometrické posloupnosti
  • kód nevypadá špatně, ale nějak jsi zapomněl na komentáře
  • spoléháš na to, že konce řádků ve vstupním souboru jsou '\n' (v tomhle případě ale jsou "\r\n")

D0ll0k - 61 bodů
Správnost výsledků:

  • 72,1 % -> 54 bodů

Program:

  • dělíš nulou, porovnáváš desetinná čísla pomocí == a !=
  • díky používání desetinných čísel ti to nevychází přesně
  • veliká čísla vypisuješ ve vědecké notaci
  • s komentáři ses tedy nepředal

Splnění zadání:

  • vstupní soubor měl být zadán mnou, ne napsaný v kódu -> -3 body

Pozn.:

  • musel jsem odstranit většinu kódu pro výstup, abych to mohl automaticky testovat

Martin Vejvoda - 80 bodů
Správnost výsledků:

  • 85,3 % -> 63 bodů

Program:

  • většinou, když tvůj program vrátil špatné výsledky, bylo to kvůli přetečení u geometrických posloupností
  • kód nevypadá špatně, je dostatečně komentovaný

Splnění zadání:

  • vstupní soubor měl být zadán mnou, ne napsaný v kódu -> -3 body

Placku tedy získává coells, Martin Dráb Gratuluji :)

Nahoru Odpovědět  +2 8. listopadu 21:21
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Martin Dráb:

vstup jsi měl číst ze souboru, ne z konzole -> -5 bodů

V zadání mi nepřišlo specifikované, jakým způsobem je soubor programu předhozen, a tak jsem předpokládal, že jeho obsah uvidím na standardním vstupu. Ale nevermind.

Nahoru Odpovědět 8. listopadu 21:38
2 + 2 = 5 for extremely large values of 2
Avatar
Gramli
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
Gramli:

Tak to sem solidne posmolil.. Kazdopadne super napad na machra. Diky za hodnoceni :-)

Nahoru Odpovědět 8. listopadu 22:25
Kdo to říká ten to je...
Avatar
IT Man
Redaktor
Avatar
IT Man:

coells a Martin Dráb: 99,5% a 100% úspěšnosti - wow, gratuluji hoši, obdivuji vás. Jen tak dál! :)

Nahoru Odpovědět  +2 8. listopadu 22:39
Když nevíš jak dál, podá ti ruku někdo, od koho by jsi to nečekal. A tu šanci musíš přijmout!
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na IT Man
Martin Dráb:

Ono tady také dost záleželo na věku – na tom, jak moc matiky jsi již potkal.

Moje řešení bylo založené téměř čistě na řešení soustav lineárních rovnic (Gaussova eliminace), což s trochou snahy pokryje "všechny" klasické posloupnosti (a některé, u kterých by to běžný člověk fakt nečekal).

Prvočísla tam byla prakticky natvrdo: kdyby ta posloupnost byla posloupnost prvočísel snížených o dvojku, tak bych ji neměl.

Jestli máme ty ködy ještě nějak speciálně zveřejnit, tak to tam trochu více rozeberu.

Nahoru Odpovědět  +1 8. listopadu 23:08
2 + 2 = 5 for extremely large values of 2
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Martin Dráb
Zdeněk Pavlátka:

Vítězové by je zveřejnit měli.

Nahoru Odpovědět 8. listopadu 23:15
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
coells
Redaktor
Avatar
Odpovídá na Martin Dráb
coells:

Zírám na tvůj kód a nevěřícně kroutím hlavou, kolik práce jsi musel mít jenom s tím, než jsi to odladil?
Klobouk dolů! :-)

Jenom si dávej pozor na ty složitější modely.
Když máš na vstupu 8 čísel, bude mít polynomiální model tendenci na overfit.

 
Nahoru Odpovědět 8. listopadu 23:53
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na coells
Martin Dráb:

Zírám na tvůj kód a nevěřícně kroutím hlavou, kolik práce jsi musel mít jenom s tím, než jsi to odladil?

Klobouk dolů!

Kupodivu jsem s odladěním funkčnosti moc problémů neměl. Gaussovku jsem odladil dost rychle (byly tam asi dvě menší chyby, na které jsem přišel prakticky hned). No dobře, nezabývá se případy, kdy soustava rovnic nemá řešení (tam si v zásadě nějaké (špatné) vymyslí).

Víc práce jsme měl tam s těmi šablonami, což byla z větší části práce zbytečná (myslím to procházení std::tuple). Jen jsem si chtěl zkusit, zda jsem tyhle věci ještě nezapomněl :-).

Jenom si dávej pozor na ty složitější modely.

Když máš na vstupu 8 čísel, bude mít polynomiální model tendenci na overfit.

Myslím, že jsem tam snad nikdy nevyužil všech 8 čísel pro tvorbu vzroce posloupnosti. Vždy tam nějaké zůstalo, na kterém se vytvořený vzorec vyzkoušel. Když vzorec nevyšel, nepoužil se.

Polynomiální modely jsem tam zaváděl, abych podchytil větší množství posloupností (hlavně ty modely, kde byla i explicitní závislost na indexu členů). Nevím, zda to ve skutečnosti něco přineslo, do takové hloubky jsem nad tím nepřemýšlel. Jakmile fungovala G. eliminace, tak tyhle věci byly v zásadě zadarmo.

Nahoru Odpovědět  +2 9. listopadu 0:04
2 + 2 = 5 for extremely large values of 2
Avatar
Odpovídá na Zdeněk Pavlátka
Martin Vejvoda:

Díky za machra a gratuluju vítězům. Kouknul jsem na jejich řešení a bohužel moje znalosti C++, Pythonu a matiky nejsou na dostatečný úrovni, abych je pochopil :-S Za to načítání souboru se omlouvám, měl jsem to v kódu, abych nemusel pořád vybírat soubor a pak jsem to zapomněl předělat :) Ale chci se tě ještě zeptat, nemohl bys zveřejnit soubor, kterým jsi to testoval?

Editováno 9. listopadu 13:33
Nahoru Odpovědět 9. listopadu 13:31
while (!asleep()) sheep++;
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Martin Vejvoda
Zdeněk Pavlátka:

Vstupní soubory byly náhodně generovány, každý program byl testován 10× a výsledky byly zprůměrovány. Jestli chceš, můžu sem večer dát ukázku.

Nahoru Odpovědět 9. listopadu 16:01
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na Zdeněk Pavlátka
Martin Vejvoda:

Jo takhle, já jsem myslel, že jsi měl soubor, který byl pro všechny stejný. Ale ukázku bys sem dát mohl (pokud by ti to nevadilo), celkem by mě to zajímalo

Nahoru Odpovědět 9. listopadu 17:25
while (!asleep()) sheep++;
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět  +1 9. listopadu 19:38
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na coells
Ondřej Krsička:

Ta lineární regrese se učí na gymplu, nebo až na VŠ? :)

 
Nahoru Odpovědět 9. listopadu 20:23
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Ondřej Krsička
Martin Dráb:

Možná bude někde ve statistice na střední, ale určitě ne všude. Myslím, že já se ji na gymplu neučil.

Ale Gaussova eliminace (řešení soustav lin. rovnic) se na gymplu (popř. SŠ) určitě probírá. Myslím ale, že se moc neukazuje, k čemu všemu je to dobré, snad mimo analytické geometrie.

Nahoru Odpovědět  +1 9. listopadu 20:35
2 + 2 = 5 for extremely large values of 2
Avatar
coells
Redaktor
Avatar
Odpovídá na Ondřej Krsička
coells:

Lineární regrese se dřív vyučovala ve statistice na Obchodní akademii, pak se od toho upustilo kvůli složitosti.
Já jsem z regrese použil jen metodu nejmenších čtverců, tu jsme se na gymplu učili včetně odvození.

Ovšem ta varianta, kterou jsem použil, se opravdu učí až na vysoké.
Na škole ses učil řešit soustavu rovnic pomocí dosazování nebo eliminace (to je Gaussovka, jak uvedl Martin).
Existuje ještě způsob, kdy si soustavu rovnic převedeš na jedinou kvadratickou rovnici a pak jí vyřešíš ve dvou krocích.
Tohle se ale učí až na magisterském studiu na vysoké.

 
Nahoru Odpovědět  +1 9. listopadu 21:03
Avatar
Odpovídá na Martin Dráb
Luboš Běhounek (Satik):

Asi se to dost liší - my gaussovku na střední (osmiletý gympl) neměli, ségra ji měla na čtyřletým gymplu ve druháku (chodila na jinej gympl).

Nahoru Odpovědět 10. listopadu 9:51
:)
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Martin Dráb
Zdeněk Pavlátka:

Já měl Gaussovku na gymplu "navíc" (když zbyl čas na konci roku) a ještě se jí učila jen jedna ze 3 skupin na matiku (+ se probírala v extra předmětu ve 4 ročníku - ten předmět byl jako příprava na VŠ)

Nahoru Odpovědět 10. listopadu 10:21
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
krepsy3
Redaktor
Avatar
krepsy3:

U nás na gymplu teda čas navíc v matice rozhodně nemáme, třídní (matikářka) nám často říká, že kvůli zvládnutí maturity to s maturanty dojíždí po pátečních ránech, a ještě před maturitou vždycky chytá nervy (je trochu cholerička) že se sami derivovat nenaučí a že jí odpadá moc hodin. Teď jsem ve třeťáku a berem analytiku (geometrii - vektory atd.). Tak jsem zvědavej, protože řešit soustavy lineárních rovnic jsme už měli, ale fakt neznám Gaussovu eliminaci ani lineární regresi.

Nedovedu si představit algoritmické řešení tohoto úkolu. Asi bych to řešil tak, že bych postupně zkoušel všechny různé druhy posloupností s různými koeficienty. Plus samozřejmě prvočíselné řady. Ale bohužel teď na to nemám čas, momentálně jsem rád že stíhám školu :D

Nahoru Odpovědět 10. listopadu 11:00
Programátor je stroj k převodu kávy na kód.
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na krepsy3
Martin Dráb:

Na některých gymnáziích (popř. asi i jiných druzích středních škol) si ve předposledním či posledním ročníku můžeš vybrat tzv. semináře – předměty, které nějaké téma pokrývají více do hloubky. Já jsem takhle navštěvoval přídavnou matiku, kde jsme se učili řešit 1001 různých druhů rovnic a nerovnic, limit a snad i integrálů.

Nahoru Odpovědět  +2 10. listopadu 13:44
2 + 2 = 5 for extremely large values of 2
Avatar
krepsy3
Redaktor
Avatar
Odpovídá na Martin Dráb
krepsy3:

Já vedle matiky navštěvuju deskriptivu a právě na aplikovanou matiku, kde probíráme to, co se do hodin matiky nevejde. To jsou klasické semináře - deskriptiva je třeba na dva roky, takže si ji užiju i ve čtvrťáku. Jak jsem psal, jsem ve třeťáku.

Nahoru Odpovědět 10. listopadu 15:11
Programátor je stroj k převodu kávy na kód.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 62 zpráv z 62.