Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie viel Dreiecke siehst du? (https://www.delphipraxis.net/205563-wie-viel-dreiecke-siehst-du.html)

Amateurprofi 23. Sep 2020 23:47

Wie viel Dreiecke siehst du?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Auf diese Frage stieß ich neulich.
Nach kurzem Zählen stand für mit fest : 12.
Dann klickte ich zur Lösung und lernte: Es sind 24.
Ich nahm das zum Anlass ein Programm zu schreiben, mit dem man solche Zeichnungen anfertigen und nach 3-, 4-, 5-, ..., N-Ecken suchen kann.
Eine manuelle Prüfung, zumindest für 3- bis 5-Ecke ergab, dass das Programm diese korrekt gefunden hatte.
Es werden konvexe und konkave nicht überschlagende N-Ecke gefunden.
Das Programm incl. Sourcedateien ist im Anhang.
Anregungungen und Kritik sind willkommen.
Anhang 53074

Michael II 24. Sep 2020 10:13

AW: Wie viel Dreiecke siehst du?
 
Ich habe dein Programm geladen aber noch nicht gross gecheckt.

Zwei Lösungswege fallen mir für Dreiecke spontan ein:
1. Du nummerierst die Punkte und zählst nun alle möglichen Punktetripel P auf. Das sind in deinem Fall 11 tief 3. Sei G die Menge aller Geraden g, in deinem Fall sind das sieben. Du prüfst für jedes Tripel p=(a,b,c) in P, ob die drei Tupel (a,b), (b,c), (a,c) in drei Geraden g1,g2,g3 liegen. Immer wenn dies der Fall ist, hast du ein Dreieck gefunden.

2. "Schöner" und sehr direkt geht's via Adjanzenzmatrix. In deinem Fall notierst du in einer 11x11 Matrix A, welcher Punkt mit welchem verbunden ist. Wenn du wissen willst über wie viele Wege du von einem Punkt a über zwei Punkte x, y wieder zu a zurück gelangst (Dreieck), dann kannst du dies direkt berechnen; du berechnest einfach A^3.
In der Diagonalen von A^3 kannst du für jeden der 11 Punkte ablesen auf wie viele Arten du von p über zwei Punkte nach p zurück gelangst.
a) Du zählst dabei jedes Dreieck abc mehrfach; in A^3 an den drei Positionen (a,a) [2 Wege abca, acba], (b,b), (c,c) je doppelt.
b) Du willst sicher die Dreiecke ohne Inhalt nicht mitzählen. Wie viele solche Dreiecke gibt es? Liegen auf einer Geraden drei Punkte, dann gibt es ein Dreieck. Liegen auf deiner Geraden vier Punkte, dann gibt es 4 tief 3=4 Dreiecke, bei n Punkten n tief 3. Diese "Dreiecke" zählst du natürlich in der Diagonalen von A^3 mit und musst sie entsprechend subtrahieren.
(Diese Methode funktioniert natürlich nicht nur für dein Beispiel sondern allgemein. Und nebenbei: Wenn in Zeile a, Spalte b von A^3 n steht, dann weisst du, dass du über n Wege von a nach b gelangen kannst.)

https://de.wikipedia.org/wiki/Adjazenzmatrix

KodeZwerg 24. Sep 2020 10:46

AW: Wie viel Dreiecke siehst du?
 
Zitat:

Zitat von Amateurprofi (Beitrag 1474134)
Anregungungen und Kritik sind willkommen.

Deine verbaute Hilfe konnte ich auf Windows 10 nicht öffnen, da ploppt Browser auf mit Verweis das ich WinHlp32.exe brauche, alle Download-Varianten von Microsoft schlagen auf Windows 10 fehl zu installieren.
Da führt mich ein klick auf Hilfe hin.
Von daher meine Frage, wie bedient man das Programm das es nachvollziehbar ist das auf der Grafik 24 Dreiecke sind?

KodeZwerg 24. Sep 2020 10:54

AW: Wie viel Dreiecke siehst du?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im ausgemalten zustand komme ich auch auf 24.
Danke für die Unterhaltung, tut auch mal gut :-)

Im Anhang meine Lösung.

//edit
12 Dreiecke wenn man von standard dreiecken ausgeht.
24 nur wenn eine geometrische form auch mittenmank von Linien durchkreuzt sein darf, sollte man dazu erwähnen...

freimatz 24. Sep 2020 13:14

AW: Wie viel Dreiecke siehst du?
 
was ist "mittenmank"

KodeZwerg 24. Sep 2020 13:21

AW: Wie viel Dreiecke siehst du?
 
Zitat:

Zitat von freimatz (Beitrag 1474185)
was ist "mittenmank"

Am besten schau mal in meine "Lösung" rein.
Mit Worte kann ich es nicht gut beschreiben.
Halt ein Dreieck was erst zu einem Dreieck wird wenn man Linien die das Dreieck kreuzen weg-ignoriert.

/edit
Rechtschreibfehler
"mittenmang" mit G hinten wirds geschrieben.
Duden

freimatz 24. Sep 2020 14:20

AW: Wie viel Dreiecke siehst du?
 
Danke. Mich hat primär erst mal nur das Wort interessiert - zumal ich mit google nichts brauchbares fand :-)

Amateurprofi 24. Sep 2020 16:27

AW: Wie viel Dreiecke siehst du?
 
Zitat:

Zitat von Michael II (Beitrag 1474169)
Ich habe dein Programm geladen aber noch nicht gross gecheckt.

Zwei Lösungswege fallen mir für Dreiecke spontan ein:
1. Du nummerierst die Punkte und zählst nun alle möglichen Punktetripel P auf. Das sind in deinem Fall 11 tief 3. Sei G die Menge aller Geraden g, in deinem Fall sind das sieben. Du prüfst für jedes Tripel p=(a,b,c) in P, ob die drei Tupel (a,b), (b,c), (a,c) in drei Geraden g1,g2,g3 liegen. Immer wenn dies der Fall ist, hast du ein Dreieck gefunden.

2. "Schöner" und sehr direkt geht's via Adjanzenzmatrix. In deinem Fall notierst du in einer 11x11 Matrix A, welcher Punkt mit welchem verbunden ist. Wenn du wissen willst über wie viele Wege du von einem Punkt a über zwei Punkte x, y wieder zu a zurück gelangst (Dreieck), dann kannst du dies direkt berechnen; du berechnest einfach A^3.
In der Diagonalen von A^3 kannst du für jeden der 11 Punkte ablesen auf wie viele Arten du von p über zwei Punkte nach p zurück gelangst.
a) Du zählst dabei jedes Dreieck abc mehrfach; in A^3 an den drei Positionen (a,a) [2 Wege abca, acba], (b,b), (c,c) je doppelt.
b) Du willst sicher die Dreiecke ohne Inhalt nicht mitzählen. Wie viele solche Dreiecke gibt es? Liegen auf einer Geraden drei Punkte, dann gibt es ein Dreieck. Liegen auf deiner Geraden vier Punkte, dann gibt es 4 tief 3=4 Dreiecke, bei n Punkten n tief 3. Diese "Dreiecke" zählst du natürlich in der Diagonalen von A^3 mit und musst sie entsprechend subtrahieren.
(Diese Methode funktioniert natürlich nicht nur für dein Beispiel sondern allgemein. Und nebenbei: Wenn in Zeile a, Spalte b von A^3 n steht, dann weisst du, dass du über n Wege von a nach b gelangen kannst.)

https://de.wikipedia.org/wiki/Adjazenzmatrix

Danke.
So ähnlich wie unter (2) mache ich das.

Amateurprofi 24. Sep 2020 16:48

AW: Wie viel Dreiecke siehst du?
 
Zitat:

Zitat von KodeZwerg (Beitrag 1474174)
Zitat:

Zitat von Amateurprofi (Beitrag 1474134)
Anregungungen und Kritik sind willkommen.

Deine verbaute Hilfe konnte ich auf Windows 10 nicht öffnen, da ploppt Browser auf mit Verweis das ich WinHlp32.exe brauche, alle Download-Varianten von Microsoft schlagen auf Windows 10 fehl zu installieren.
Da führt mich ein klick auf Hilfe hin.
Von daher meine Frage, wie bedient man das Programm das es nachvollziehbar ist das auf der Grafik 24 Dreiecke sind?

1) Menu > Datei > Figurendatei laden > Neue Datei
"11 Punkte.shp" (Die Datei ist im Anhang enthalten)
Alternativ die Zeichnung selbst erstellen.
2) Menu > Suchen > Dreiecke

In der unteren Listbox sollte dann die Liste der gefundenen Dreiecke stehen.
Tipps:
Mit Menu > Ansicht > "Punkte anzeigen" kannst du einstellen, dass die Eck- / Schnittpunkte in der Zeichnung markiert werden.
Mit Menu > Ansicht > "Nummern der Eckpunkte anzeigen" kannst du einstellen, dass in der Zeichnung die Nummern der Punkte in der Zeichnung ausgegeben werden.
Wenn du in der Liste der gefundenen N-Ecke einen Eintrag linksklickst, wird das betreffende Dreieck in der Zeichnung markiert.
Mit Down/Up kannst du dir die Dreiecke nacheinandern anschauen.
Wenn du in der Liste der gefundenen N-Ecke einen Eintrag rechtsklickst, wird das betreffende Dreieck in der Zeichnung markiert, solange die rechte Maustaste gedrückt ist.

Amateurprofi 24. Sep 2020 16:51

AW: Wie viel Dreiecke siehst du?
 
Zitat:

Zitat von freimatz (Beitrag 1474185)
was ist "mittenmank"

Frag mal Tante Google nach "mittenmang" (Mit g am Ende)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz