Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
mkfezzo
Anmeldungsdatum: 16.08.2007 Beiträge: 25
|
Verfasst am: 16.08.2007, 21:08 Titel: Prob bei Erstellung eines Spielplanes für Fussballgame |
|
|
Hallo zusammen!
Mir brennt die Birne, seit zwei Tagen versuche ich auf diverse Art und Weise einen Spielplan für ein Fussballgame zu proggen. Das schien so einfach, aber nach etlichen versuchen hier mal mein bis dato bester versuch:
nr=0'zähler für paarungsspeicher
for sptag=1 to 17'spieltage-1
for lauf=1 to 9'neun partien pro spieltag
do
z1=int(rnd(1)*18)+1'gegner 1
z2=int(rnd(1)*18)+1'gegner 2
if z1<>z2 then 'bitte nicht derselbe
f=0'=kein problem
for t=0 to 1000'zu hoch gesetzt, ich weiss
a$=str$(z1)
b$=str$(z2)
nix1$=a$+"-"+b$
nix2$=b$+"-"+a$'im paarungsspeicher nixda nach paarung suchen
if nixda(t)=nix1$ or nixda(t)=nix2$ then f=1:exit for'noch nicht vergeben also raus...
next t
if f=0 then exit do
end if
loop'sonst solange bis paarung gefunden die noch nicht existiert
paarungen(z1,sptag)=z2'speichern
paarungen(z2,sptag)=z1'auch fürn gegner
nixda(nr)=nix1$:nr=nr+1:? nixda(nr-1)'paarungsspeicher erweitern
nixda(nr)=nix2$:nr=nr+1:? nixda(nr-1)'dito gespiegelt
? nr
next lauf
next sptag
for t=1 to 18
for z=1 to 18
? paarungen(t,z);
next z
?
next t
...leider habe ich immer diverse spieltage bei den vereinen die einfach übergangen werden, also "nullen" bei mehreren Spieltagen hintereinander.
Und finde das problem absolut nicht!
wäre sehr nett, wenn das einer erkennen könnte (wirklich, das ist das beste was ich seit zwei tagen hinbekomme!)
Besten Dank! :cry: |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 16.08.2007, 21:12 Titel: |
|
|
also ich würde das thereotisch so lösen:
der spielplan wird nicht zufällig erstellt, sondern schön der reihe nach: mannschaft 1 gegen mannschaft 2, mannschaft 1 gegen mannschaft 3...... mannschaft 1 gegen mannschft x --- (mannschaft 2 gegen mannschaft 1 - ist schon drin), mannschaft 2 gegen mannschaft 3, usw.....
das lässt sich prima mit for-schleifen lösen.
danach würde ich den plan nochmal mit eine for-schleife durchlaufen und dann jeden eintrag mit einem zufallseintragvertauschen (SWAP) . _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
mkfezzo
Anmeldungsdatum: 16.08.2007 Beiträge: 25
|
Verfasst am: 16.08.2007, 21:19 Titel: das habe ich schon versucht... |
|
|
(so ähnlich, allerdings ohne swap), ergebnis:
es passiert dann öfter, das eine mannschaft an einem Spieltag vielleicht zwei oder mehr spiele ausführt...sollte aber nur ein spiel sein.
Das ist echt ne kopfnuss!
Trotzdem danke...vielleicht sollte ich das nochmals (heul) mit einfachen? for-next schleifen probieren  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 16.08.2007, 21:30 Titel: |
|
|
hm, das mit dem spieltag könntest du evtl so lösen, dass du mit einer Function (ginge sicher auch anders, ist so aber imo bequemer) prüfst, ob eine der mannschaften, die geSWAPt werden sollen, schon an diesem tag spielt... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
mkfezzo
Anmeldungsdatum: 16.08.2007 Beiträge: 25
|
Verfasst am: 16.08.2007, 21:51 Titel: |
|
|
ich stimme dir insofern zu, dass ich diese variante mit der vorherigen Prüfung auch schon einmal unter den 180? varianten hatte mit denen ich mir die finger wundgetippt habe. ich möchte nur ungern von der jetzigen variante abweichen (nichtnochmalvonvornezumxtenmale). ich habe die logik des letzten codes zigmal durchgespielt-und finde das ding zwar nicht schön, aber logisch fehlerfrei (was ja offensichtlich nicht stimmt) und das wurmt mich.
Ich fürchte ich übersehe oder überdenke da nur eine winzige kleinigkeit...und schwupps läuft das teil. ich hab das hier mal reingehauen, da ich hoffe das vier augen mehr sehen als zwei... |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 17.08.2007, 21:56 Titel: |
|
|
Wenn ich das richtig sehe, testest du nur ob eine bestimmte Kombination bereits aufgetreten ist, aber nicht, dass jede Mannschaft an jedem Spieltag nur ein Turnier bestreiten soll (nehme ich mal an, auch wenn ich von Fußball nicht viel Ahnung habe ). Was also passieren kann ist folgendes: Am ersten Spieltag wird erst 1 gegen 2 ausgelost (lauf=1) und anschließend 1 gegen 3 (lauf=2). Damit kommt am ersten Spieltag irgend eine Mannschaft nicht zum Zug.
Was anderes: Statt rnd(1) sollte rnd auch schon reichen. Die Berechnung von nix1$ und nix2$ würde ich aus der Schleife (t=0 to 1000) rausnehmen, weil sie da drin ja immer gleich sind. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|