|
Programiranje Java, Perl, VB, ASP, .NET, C, C++, Pascal, Delphi Sponzor: |
|
Alati teme | Način prikaza |
|
10. 03. 2011. | #1 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
rasporedjivanje osoba po vremenskom rasporedu (?)
Postoji X ucenika i 1 profesor. Svaki od ucenika ima vremenski interval u kome je slobodan da uzme cas (startTime i endTime). Profesor radi od profesorStartTime do profesorEndTime.
Treba napisati fju koja ce umeti da rasporedi sve ucenike (njih X) u vremenskom intervalu profesorStartTime - profesorEndTime uzimajuci u obzir kada je koji ucenik slobodan. Nijedan vremenski uslov(interval) nesme biti prekrsen. Ukoliko nije moguce napraviti raspored, treba da vrati false. Uh tako nekako nije tolko bitan programski jezik, ko ovo uspe da mi resi ima pragnje u Nisu ili Palicu ove godine. |
10. 03. 2011. | #2 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
Da dodam duzina casa je N, odnosno svaki put kad se pozove fja dodeljuje se nova duzina casa.
|
10. 03. 2011. | #3 |
nobody
Expert
Datum učlanjenja: 19.04.2007
Poruke: 537
Hvala: 14
705 "Hvala" u 106 poruka
|
Ovo verovatno neće biti odgovor kome se nadaš, ali možda pomogne:
http://www.unitime.org/ http://muller.unitime.org/Na prvom linku je open source aplikacija za pravljenje rasporeda, a na drugom imaš i neke radove koji se bave teorijskom (ima, čini mi se, i nekakvog koda u njima) stranom problema. |
"Hvala" nn.nn za poruku: |
10. 03. 2011. | #5 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Ako ti nisu bitne performanse, uvek ostaje brute force:
Kôd:
# trazi redosled ucenika za koji je moguce napraviti raspored def rasporedi ucenici, profa, cas ucenici.keys.permutation.map{|redosled| poredjaj ucenici, profa, cas, redosled }.find{|e| e} end # za zadati redosled ucenika, odredjuje pocetak i kraj casa def poredjaj ucenici, profa, cas, redosled poc = profa.first redosled.inject({}) do |acc, ime| poc = [ucenici[ime].first, poc].max return nil if poc+cas > [profa.last, ucenici[ime].last].min acc[ime] = [poc, poc+cas] poc += cas acc end end ucenici = { pera: [6,8], # slobodan od 6 do 8 zika: [2,5], # slobodan od 2 do 5 mika: [1,3] # slobodan od 1 do 3 } profa = [1,8] # slobodan od 1 do 8 p rasporedi ucenici, profa, 1 #=> {:mika=>[1, 2], :zika=>[2, 3], :pera=>[6, 7]} p rasporedi ucenici, profa, 2 #=> {:mika=>[1, 3], :zika=>[3, 5], :pera=>[6, 8]}
__________________
blog |
3 članova zahvaljuje jablan za poruku: |
10. 03. 2011. | #6 |
Banned
Knowledge base
Datum učlanjenja: 01.07.2005
Poruke: 1.598
Hvala: 206
140 "Hvala" u 89 poruka
|
Dakle, jablane ne samo pragnje nego i pivo da speres
|
10. 03. 2011. | #7 |
Ivan Dilber
Sir Write-a-Lot
|
to bi trebalo da je jedan od ovih problema http://en.wikipedia.org/wiki/Dynamic_programming
__________________
Leadership is the art of getting people to want to do what you know must be done. |
2 članova zahvaljuje ivanhoe za poruku: |
16. 07. 2011. | #8 |
član
Certified
Datum učlanjenja: 26.12.2007
Lokacija: juzno od ekvatora
Poruke: 91
Hvala: 2
4 "Hvala" u 3 poruka
|
prvo gledas da li je profesor zauzet, zatim definises array ucenika pa gledas ucenik[n]=false i onda mu dodelis timeslot
problem zaista deluje simple i cudi me da programer tvog kalibra nije mogao resiti |
31. 07. 2011. | #9 |
old school
Professional
Datum učlanjenja: 15.06.2005
Lokacija: Novi Beograd
Poruke: 448
Hvala: 21
70 "Hvala" u 46 poruka
|
@miloshz :-) :-) :-) :-)
Hajde probaj da ga optimalno rešiš :-)
__________________
http://www.vesic.org | Blog: http://www.vesic.org/blog/ | Fina kolekcija programa: http://www.vesic.org/programi/ |
"Hvala" DejanVesic za poruku: |
|
|