webForumDet fria alternativet

Lottning

13 svar · 758 visningar · startad av cyprys

cyprysMedlem sedan dec. 20003 563 inlägg
#1

Jag håller på och skapar ett lottningsprogram för ett antal lag men har kört fast. Som sista utväg så tänker jag sätta mig ner och skriva in alla matcher i sina respektive omgångar. För det är just där problemet ligger.

Jag har en array där alla lag ligger.
lagnamnen("lag1", "lag2", osv osv)

Med den har jag skapat ett koordinatsystem och på så sätt fått ut alla matcher som ska spelas. Där x > y så att jag bara får ett möte mellan varje lag. x < y ger alltså samma matcher fast annat hemmalag. Vid x=y möter man ju sig själv.

Mitt problem består sedan av att dela in alla matcher i omgångar.
Jag har gjort ett script som jag nu kommit fram till att det inte fungerar.

'[alla_matcher] är samtliga matcher i en array som ska spelas i den ordning att de är tagna från vänster till höger rakt av från koordinatsystemet.

for x = 0 to 20
	for y= 0 to ubound(alla_matcher)
		lag1 = left(alla_matcher(y), instr(alla_matcher(y), "]"))
		lag2 = right(alla_matcher(y), len(alla_matcher(y))-instrrev(alla_matcher(y), "[")--1 )

		if instr(tempmatch, lag1) = 0 AND instr(tempmatch, lag2) = 0 AND alla_matcher(y) <> ""  then
		schema(y, x) = alla_matcher(y)
		tempmatch = tempmatch & alla_matcher(y)
		alla_matcher(y) = ""
		end if
	
	next
tempmatch = ""
next

Problemet med denna är att om man har fler än 8 lag så kommer den plocka matcherna fel.
Första omgången kommer alltid bli rätt men sedan kommer alla matcher inte att kunna spelas.
Det blir:
1Omg: 1-2, 3-4, 5-6, 7-8, 9-10
2Omg: 1-3, 2-4, 5-7, 6-8, [Men nian och tian har ju redan spelats]

Så jag testade att varranan gång loopa genom [alla_matcher] bakifrån och varranan framifrån men det funkade inte heller.

Det blir alltså en massa matcher över i slutet så det blir typ:
1Omg: 6 matcher
2Omg: 5 matcher
3Omg: 5 matcher
4Omg: 5 matcher
5Omg: 5 matcher
6Omg: 2 matcher [Där matcherna är 9 eller 8 mot alla lag de inte mött]
7Omg: 2 matcher [Där matcherna är 9 eller 8 mot alla lag de inte mött]

Jag har suttit med det här ett tag nu men tuggar på samma tråd hela tiden. Tänkte ifall någon kunde bidra med en frisk fläkt?

Hur dela upp alla matcher i olika omgångar på bästa sätt så att samma lag inte spelar flera matcher i samma omgång?
Jag är inte ute efter bara koden utan helst efter den idé som löser problemet. Kod eller idé. Helst ska det funka. :)

Öppnar även en tråd i jobb och tjänster för saken skull.

http://www.webforum.nu/showthread.php?s=&threadid=47451

icaaqMedlem sedan okt. 20005 273 inlägg
#2

Är det alltid ett fast antal lag eller varierar det?

cyprysMedlem sedan dec. 20003 563 inlägg
#3

Det varierar mellan 2, 4, 6, 8, 10 till 32 men ska likväl funka med alla jämna lag

joserMedlem sedan mars 20021 152 inlägg
#4

Rent idémässigt, tänker absolut inte komma med nån kod.

Föreställ dig bilden av två lag, jämna respektive ojämna om du vill, som går på rad, eller i ring, och tackar varandra för en god match. ;)

cyprysMedlem sedan dec. 20003 563 inlägg
#5

vackert. Men efter att jag gjorde om det till kod stod det bara:
Logedans!?!

EkströmMedlem sedan feb. 20022 594 inlägg
#6

joser: Du är min idol nu

joserMedlem sedan mars 20021 152 inlägg
#7

:e
Cyprus > Ville få dig att fundera lite över koordinatsystemet.

cyprysMedlem sedan dec. 20003 563 inlägg
#8

Jo Jag har funderat över dem. De blir inte vackrare för det :)

joserMedlem sedan mars 20021 152 inlägg
#9

Strunta i koordinater, se det som en tallinje som loopar och flyttas fram ett steg för varje omgång jämfört med ursprungsplatsen. Precis som en logdans med två ringar men bara den ena dansar.

Sen slumpar du vilket tal lagen ska ha.

cyprysMedlem sedan dec. 20003 563 inlägg
#10

PUSS :e

joserMedlem sedan mars 20021 152 inlägg
#11

Äsch.. :r

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#12

Fick du igång lottningen?

Håller på med ett liknande program och vet inte riktgt hur jag ska lösa det.

EitrazMedlem sedan sep. 2002366 inlägg
#13

Vad kul.. ska fundera lite över det där.. återkommer ;)

hmm.. kommer fram till samma som du ungefär bara.. att det ibland blir "de två sista" som vill spela igen...
ska forska lite i det där alltså.

EitrazMedlem sedan sep. 2002366 inlägg
#14

Har nog kommit på ett sätt man kan göra på. Har bara ideén men har inte programmerat något.
Hittade ett trevligt mönster i hur man gör uppställningen.
Svårt o förklara det här.. men det gör jag ändå.

om man "ritar upp" en laguppställning på papper kan man få det här mönstret (fick det efter lite funderingar efter mönster i det hela)

1 - 2 | 6 - 5 | 4 - 3
1 - 3 | 2 - 6 | 5 - 4
1 - 4 | 3 - 2 | 6 - 5
1 - 5 | 4 - 3 | 2 - 6
1 - 6 | 5 - 4 | 3 - 2

titta på det där så ser man att från kollumn "2" och frammåt så tar man nedersta värdet, sätter det övers i nästa och sen bara "räknar på" bland lagnummren.
ex:
Kol2: 2-3-4-5-6
Kol3: 6-2-3-4-5
Kol4: 5-6-2-3-4

Tror ni ser det där.
Detta är ju smidigt för att göra upp en inte så slumpad laguppställning, men om man lagrar det här i en matris och sen slumpar alla platser (man får ju kolla så inte samma lag är två gånger på varje "rad") så får man ju en slumpad laguppställning :D

jippi ;)

ska se om man kan fixa nån helsmidig kod på det där (vilket jag tror man kan)

-Eitraz

138 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)