|
Programiranje Java, Perl, VB, ASP, .NET, C, C++, Pascal, Delphi Sponzor:
![]() |
![]() |
|
Alati teme | Način prikaza |
|
![]() |
#1 |
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 |
![]() |
![]() |
![]() |
|
|