Autor |
Beitrag |
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 16.11.08 17:12
Hi!
In der SB ist es schon angeklungen, ich brauche mal wieder einen Ansatz von euch. Bzw. ich hab sogar schon einen, aber bevor ich da weiter mache möchte ich erstmal wissen was das eigentlich ist
Aaaalso.
Es gibt eine Menge Punkte. Jeder dieser Punkte ist durch X,Y und eine 'Farbe' definiert.
Ich möchte jetzt eine Art 'Umrisse' finden, so dass folgendes passiert:
- Jeder Umriss enthält möglichst viele Knoten gleicher Farbe und
- keinen Knoten einer anderen Farbe
- Kein Knoten ist weiter als $limit vom nächsten im zugehörigen Umriss entfernt
- ist eins davon nicht möglich, muss ein neuer Umriss begonnen werden
- Umrisse können daher auch aus 1..2 Elementen bestehen, obwohl beides eigentlich keine Flächen beschreibt.
Im Anhang findet man einige Beispiele.
Rot und grün sind wegen 3. gespalten. Im Grunde auch wegen 2.
Gelb ist nichtkonvex, da blau eine direkte Verbindung verhindert. Durch 3. und 5. steht unten ein einzelner gelber Punkt.
Grün demonstriert Regel 1, also dass der größte Umkreis gesucht ist, in dem andere Punkte gleicher Farbe liegen.
Gausi in der SB hat folgendes geschrieben: | Meinst du die konvexe Hülle einer Punktmenge? |
Fällt mir grade auf... eigentlich nicht, siehe Gelb.
Klingt eigentlich nach einer Paranuss... hoffentlich hab ich hier nicht grade durch Zufall eine erwischt
cu
Martok
Einloggen, um Attachments anzusehen!
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Gausi
      
Beiträge: 8548
Erhaltene Danke: 477
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: So 16.11.08 17:22
_________________ We are, we were and will not be.
|
|
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: So 16.11.08 17:25
Du weißt nicht, wie es heißt, aber es ist dir zu einfach?!?
_________________ 1405006117752879898543142606244511569936384000000000.
|
|
Martok 
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: So 16.11.08 18:25
Delphi-Quelltext 1:
| Wolle92.IronieDetektor.CheckFuntionality; |
Mein Ansaz wäre irgendwie so:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| AlleKnoten:= array of Punkt(x,y,Farbe) solange AlleKnoten nicht leer: Neuer Graph Nimm Knoten aus alleKnoten; graph.farbe := dieserKnoten.Farbe solange AlleKnoten nicht leer: nimm knoten aus alleKnoten where farbe = graph.farbe; //hups, zu viel SQL gemacht... wäre graph immer noch gültig? ja: knoten einfügen knoten aus alleKnoten entfernen sonst: schleife verlassen wiederhole wiederhole |
Oder irgendwie so.
Okay, ist tatsächlich geometrisch.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
miniC#
      
Beiträge: 75
Wiin XP Home
C# VS Express 2008
|
Verfasst: So 16.11.08 20:16
brauchen die farben für eine einfache lösung nicht eine zeichenfolge, bzw prioritäten ?
diese punktmenge:
hat zwo lösungen :
ohne prioritäten müssest du bei jedem schritt den ganzen baum erstellen und ihn mit dem alternativbaum in der anzahl der verbleibenden punkte vergleichen.
also entweder prios oder lookahead, oder verstehe ich da was falsch ?
edit : wo ich es grade poste , sehe ich , dass lösung 2 nicht ganz korrekt verbunden ist 
_________________ Zitat MDSN : " ... C# (gesprochen: "si scharp") "
|
|
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: So 16.11.08 21:23
ne, lösung 2 ist schon ok so...
es können auch Umrisse mit einem Knoten existieren, aber Lösung 1 hat den Fehler, das im Rot-Umriss nen blauer Punkt steckt...
_________________ 1405006117752879898543142606244511569936384000000000.
|
|
miniC#
      
Beiträge: 75
Wiin XP Home
C# VS Express 2008
|
Verfasst: So 16.11.08 21:35
Wolle92 hat folgendes geschrieben : | ne, lösung 2 ist schon ok so... |
naja der dritte rote punkt ist verbindbar (angenommen erliegt innerhalb der maximalreichweite) und es sollen immer alle möglichen verbindungen gefunden werden.
Wolle92 hat folgendes geschrieben : | aber Lösung 1 hat den Fehler, das im Rot-Umriss nen blauer Punkt steckt... |
das war doch meine frage/hinweis. ich seh nämlich keine regel, die die verkettungspriorität der farben bestimmt. das beispiel ist etwas
unglücklich gewählt von mir. verschiebe den in beispiel 2 von mir nicht verbundenden roten punkt 1 cm hoch in das blaue rechteck, dann
hast du es deutlicher :
l1 = {rot1,rot2,rot3} & {blau1,blau2} & blau3
l2 = {b1,b2,b3} & {r1,r2} & r3
edit : ah , ok jetzt verstehe ich , es soll keine verkettung gleichfargbiger punkte sein , sondern inselchen 
_________________ Zitat MDSN : " ... C# (gesprochen: "si scharp") "
|
|
Wolle92
      
Beiträge: 1296
Windows Vista Home Premium
Delphi 7 PE, Delphi 7 Portable, bald C++ & DirectX
|
Verfasst: So 16.11.08 21:48
genau, und in den inseln sollen sich dann, wenn möglich, möglichst viele gleichfarbige punkte befinden...
_________________ 1405006117752879898543142606244511569936384000000000.
|
|
Martok 
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mo 17.11.08 01:13
Genau... möglichst wenige möglichst große Inselchen 
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
freedy
      
Beiträge: 403
Erhaltene Danke: 1
Winows 7
Delphi XE
|
Verfasst: Di 18.11.08 10:48
Hi,
gibt es inzwischen eigentlich ein bisschen Code. Würde mich sehr interessieren, wie und ob ihr das Problem gelöst habt.
Grüße,
|
|
Martok 
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Mi 19.11.08 00:45
Naja, Pseudocode gibts ja oben... zum implementieren fehlt mir im Moment die Zeit... unter anderem, weil in dem Browsergame für das das eigentlich ist uns grad der Krieg erklärt wurde xD
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
|