Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Jakub Král
Člen
Avatar
Jakub Král:3.1.2019 19:56

Ahoj, mám seznam, případně n-tici 2018-ti čísel a potřebuji ji rozdělit na podmnožiny tak, abych pokryl všechny možné podmnožiny (množiny o jednom čísle, dvou číslech až 2018 číslech) tak, aby se žádná podmnožina neopakovala, ale aby program vytvořil všechny možné, ne jenom ty z čísel jdoucích hned po sobě.

Zkusil jsem: Zkoušel jsem použít jednoduchou kombinatoriku, googlit všechno možné, ale bezvýsledně.

Chci docílit: Na tento problém jsem narazil v matematice a nepodařilo se mi ho nijak vyřešit, ani se řešení přiblížit.

 
Odpovědět
3.1.2019 19:56
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:4.1.2019 15:27

Pseudo-kod by mohl vypadat nejak takto.

a = 0
cyklus(i=0..n) // pocet prvku
    list[a] = []
    cyklus(j=0..i) // index pole
        cyklus(k=0..n) // value pole
            list[a][j] = k

Nechapu, co ma matematika spolecneho s programovanim.

  • Musis vedet, jak ma vypadat, to, co chces vytvorit.
  • A pak uz jen musis vytvorit postup prace, jakym se to da vytvorit.

Podle mne mas chaos v tom, jak by mel vypadat vysledek. Nejspis se jedna o skolni ukol. A nejspis ses na to cele vanoce ani nepodival. A nebylo by lepsi se priste na to podivat hned a pokud ti neni neco jasne, zeptat se rovnou ucitele?

Jo, jestli je to seznam predem dany, tak misto =k tam bude jen seznam[k].

A tez by bylo fajn, dat n=3 a napsat si na papir vsechno, co by ten program mel udelat. A podle toho ten progam pak snadno udelas,ne?

Editováno 4.1.2019 15:30
 
Nahoru Odpovědět
4.1.2019 15:27
Avatar
Odpovídá na Jakub Král
Bohuslav Kolman:4.1.2019 18:28

Kombinatorika ti pouze řekne kolik podmnožin dané velikosti lze vytvořit. K výpočtu použij vztah pro kombinace

C= n!/(k!*(n-k)!)

To platí pro variantu, kdy nezáleží na pořadí prvků v podmnožině, tzn. {1,2,3} = {2,1,3}

Pouze si dej pozor na množství podmnožin: z 2018 prvků mohu vytvořit 2035153 dvoučlenných podmnožin, nebo 1,3 miliardy tříčlenných podmnožin, nebo 5,3x10605 1009-členných podmnožin.

 
Nahoru Odpovědět
4.1.2019 18:28
Avatar
Jakub Král
Člen
Avatar
Odpovídá na Bohuslav Kolman
Jakub Král:4.1.2019 22:52

Moc děkuju za odpověď

 
Nahoru Odpovědět
4.1.2019 22:52
Avatar
Jakub Král
Člen
Avatar
Odpovídá na Peter Mlich
Jakub Král:4.1.2019 22:54

Moc děkuji za odpověď, jen k té části, že matematika nemá s programováním nic společného... tato úloha je úkol na matematiku, ne abych vytvořil ten program, to mě napadlo až po Novém roce, protože matematickou cestu jsem nenašel.

 
Nahoru Odpovědět
4.1.2019 22:54
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 5 zpráv z 5.