FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Allgemeines

- SIM - Programm

- SIM - Programm 2008-10-19 14:21
Sheepy
Huhu also ich darf mal kurz das Problem schildern. Gegeben sei ein N-Eck und alle Linien zwischen dessen Eckpunkten. Abwechselnd färber zwei Spieler die Linien ein. Dabei verliert der bei dem sich zuerst ein geschlossenes Dreieck ergibt (nur die Eckpunkte zählen, also überschneidunngen sind legitim). Wie kann ich nun anhand der Eckpunkte die Anzahl der Dreiecke bestimmen, und gibt es eine Methodik ananhand eines Durchlaufs aller Punkte alle möglichen dreiecke zu bekommen. (beispielsweise in eine List tun o.ä.)

Gruß Sheepy

RE: - SIM - Programm 2008-10-19 18:59
garou
Die Anzahl der möglichen Dreiecke in deinem n-Eck kannst du mit der gleichen Formel berechnen wie deine Lottochancen, du ziehst halt 3 aus n statt 6 aus 49:
(n * (n-1) * (n-2)) / (1 * 2 * 3)

Update: Die tatsächlichen Dreiecke sollte man durch folgenden Algorithmus erhalten können (, den ich allerdings gerade mit gut feeling designed habe und nochmal gründlich überprüfen wollen würde, bevor ich ihn einsetzen würde):
Nimm eine geordnete Liste aller Knoten (die Ordnung ist beliebig, ich benutze den Begriff "geordnet" hier nur, um die Existenz einer Restliste zu betonen). Nimm nacheinander das erste bis vorvorletzte Element der Liste und verfahre für die Restliste folgendermaßen: Nimm nacheinander das erste bis vorletzte Element der Liste und verfahre für die Restliste folgendermaßen: Füge für jedes Element der Liste ein Dreieck in deine Dreiecksliste ein, bestehend aus eben diesem Element und den zwei zuvor Selektierten.

Noch Fragen, euer Ehren?

RE: - SIM - Programm 2008-10-19 21:48
Sheepy
Uff ja danke das werd ich zwar noch 5 mal lesen müssen bevor ich es vertanden habe aba danke

RE: - SIM - Programm 2008-10-20 00:28
low_level
Abwechselnd färber zwei Spieler die Linien ein.

Färben sie mit der gleichen Farbe, oder hat jeder eine eigene?

RE: - SIM - Programm 2008-10-20 04:00
garou
def allTriangles(nodelist):     if len(nodelist)<3:         return []     else:         trianglelist = []         for firstnode in range(0, len(nodelist)-2):             for secondnode in range(firstnode+1, len(nodelist)-1):                 for thirdnode in range(secondnode+1, len(nodelist)):                     trianglelist.append([nodelist[firstnode],                                          nodelist[secondnode],                                          nodelist[thirdnode]])         return trianglelist >>> allTriangles(["a","b","c","d"]) [['a', 'b', 'c'], ['a', 'b', 'd'], ['a', 'c', 'd'], ['b', 'c', 'd']] Ich liebe Python!

RE: - SIM - Programm 2008-10-20 10:20
Sheepy
jeder hat eine eigene

RE: - SIM - Programm 2008-10-23 18:41
Sheepy
Fertig : aba noch ent so benutzerfreundlich:

utzel.ath.cx/uhh

Delete -> eckenzahl eingeben so ca 12 ^^ -> reset -> 10 ->10 ->400 ->400 eingeben und dann darin in der näher der punkte klicken ^^