Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bordsplacerings algoritm #35

Open
cNille opened this issue May 10, 2017 · 0 comments
Open

Bordsplacerings algoritm #35

cNille opened this issue May 10, 2017 · 0 comments
Labels
Milestone

Comments

@cNille
Copy link
Contributor

cNille commented May 10, 2017

(Detta är så jag minns algoritmen, variabelnamnen kan variera i koden.)
I algoritmen gör man det enkelt för sig och tänker sig att alla bord sitter ihop i ett enda långbord.
Till detta långbord har vi två listor av sittande gäster, en för varje sida bordet.
List leftSide, list rightSide.

Initial data

Vi har 4 typer av gäster:

  • Student, tjej
  • Student, kille
  • Företags-representant, tjej
  • Företags-representant, kille

Om varje student vet vi iaf namn, kön och vilken sektion de går i.
Om varje företagare vet vi iaf namn, företag och sektioner företaget är intresserad av. Vi kanske inte har alla namn på representanter, det kan man lösa genom att ha "Tetra pak 1, tetra pak 2..." osv.

Steg 1: Justera listorna.

Det första man gör är att justera så att dessa 4 listor är lika stora (släng över några från kill till tjejsidan exempelvis). Sedan kan man shuffle'a listorna.

Steg 2: Placera studenter

På ena sidan bordet, ex: leftSide, fylla upp platserna med varannan kill och tjej student.

Steg 3: Placera företagare

Alternera igen mellan tjej och kille mellan företagare. Tänk på att alternera kön tvärtom än studenter, så att killar sitter mitt emot tjejer.

För varje position i rightSide man ska fylla med en företagare, så kollar man vilka tre studenter som sitter tvärs över. Den positionen i rightside ska man fylla men den företagaren vars företag söker så många av de sektioner av de tre studenterna som möjligt.

Steg 4: Kasta över gäster mellan bordssidorna

Vi tänkte att det var tråkigt om företagare var på en sida och studenter på andra sidan. Kanske det fungerar ändå. Men vi valde att byta plats med hälften av företagarna och studenter. Så här:
Från: (S => student, F => företagare)

S1 | | F1
S2 | | F2
S3 | | F3
S4 | | F4
S5 | | F5
S6 | | F6
S7 | | F7
S8 | | F8

Till:

S1 | | F1
S2 | | F2
F4 | | S4
F3 | | S3
S5 | | F5
S6 | | F6
F8 | | S8
F7 | | S7

De två första lätt vi vara, de två nästa kastade vi över diagonalt mellan listorna. Vi gjorde det diagonalt för att bibehålla varannan tjej och varannan kille. Resultatet blir att längs en sida är det student, student, företagare, företagare, student, student, företagare....

Här kommer buggen in. Eftersom vi jämförde företagaren med de tre sektionerna som satt mitt emot kommer vi i den diagonala omslängningen göra så att de inte längre är grannar. Kolla exempelvis på S2 och F3 i illustrationen ovan.

För att lösa buggen måste man i jämförelsen av sektioner ta i beaktning om man kommer kastas diagonalt och isf jämföras med de studenter man kommer ha som grannar sen.

Steg 5: Kapa upp långbordet till de faktiskta borden

Ta de långa listorna av placering och fyll upp platserna till de faktiska borden med rätt storlek.

@cNille cNille added the bug label May 10, 2017
@cNille cNille added this to the IT-2017 milestone May 10, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant