AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Kombinationen ausgeben

Ein Thema von Kegasetu · begonnen am 10. Nov 2020 · letzter Beitrag vom 25. Nov 2020
Antwort Antwort
Seite 1 von 2  1 2      
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#1

AW: Alle Kombinationen ausgeben

  Alt 10. Nov 2020, 12:40
Die beschriebene Rekursion findest du in

function bewerte( brett : TBrett ; n, k : integer ) : TRes; Du kannst ja mal im Debugger einen Breakpoint setzen am Anfang der Funktion und dann durchsteppen, damit du in etwa siehst was abläuft.

Jedes Mal, wenn in bewerte eine neue Kombination gefunden worden ist wird
function meingebewertungsfunktion( brett : TBrett) : TRes; aufgerufen. In dieser Funktion nimmst du die Bewertung vor. Die gefundene Kombination findest du im Array brett.wo.

Du fragst, was ein record ist - da liest du am besten kurz im Hilfe zu Delphi. Im Wesentlichen ist es eine Zusammenfassung von Variablen.

Zitat:
Und die Hoffung des es irgendwie mit einem simplen Array funktionert ist nach wie vor da
Genau diesen simplen Array hast du in brett.wo.
Hättest du vielleicht ein Beispiel mit 5 Halterungen und 20 Plätzen? Und als Ausgabe dann eine simple showMessage mit den Werten
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
771 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Alle Kombinationen ausgeben

  Alt 10. Nov 2020, 15:06
Hättest du vielleicht ein Beispiel mit 5 Halterungen und 20 Plätzen? Und als Ausgabe dann eine simple showMessage mit den Werten
Das Beispiel (siehe Link von oben) arbeitet mit 4 Halterungen und 10 Plätzen. Du kannst das leicht anpassen. Spiel's doch mal mit den 4 aus 10 durch. Du musst vorher nur noch in der Bewertungsfunktion meingebewertungsfunktion festlegen welche Kombination gut für dich ist und welche nicht. Danach lässt du das Programm laufen und eine beste Lösung wird berechnet.
Michael Gasser
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#3

AW: Alle Kombinationen ausgeben

  Alt 10. Nov 2020, 18:38
Hättest du vielleicht ein Beispiel mit 5 Halterungen und 20 Plätzen? Und als Ausgabe dann eine simple showMessage mit den Werten
Das Beispiel (siehe Link von oben) arbeitet mit 4 Halterungen und 10 Plätzen. Du kannst das leicht anpassen. Spiel's doch mal mit den 4 aus 10 durch. Du musst vorher nur noch in der Bewertungsfunktion meingebewertungsfunktion festlegen welche Kombination gut für dich ist und welche nicht. Danach lässt du das Programm laufen und eine beste Lösung wird berechnet.
Okay, ich probiere es morgen mal durch.

Eine Frage noch, wie wird das ganze getartet? Ich benutzte normalerweise nur eine Button.
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#4

AW: Alle Kombinationen ausgeben

  Alt 11. Nov 2020, 06:35

Eine Frage noch, wie wird das ganze getartet? Ich benutzte normalerweise nur eine Button.
Mein Fehler, weiter unten steht es.
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#5

AW: Alle Kombinationen ausgeben

  Alt 11. Nov 2020, 07:14
Hättest du vielleicht ein Beispiel mit 5 Halterungen und 20 Plätzen? Und als Ausgabe dann eine simple showMessage mit den Werten
Das Beispiel (siehe Link von oben) arbeitet mit 4 Halterungen und 10 Plätzen. Du kannst das leicht anpassen. Spiel's doch mal mit den 4 aus 10 durch. Du musst vorher nur noch in der Bewertungsfunktion meingebewertungsfunktion festlegen welche Kombination gut für dich ist und welche nicht. Danach lässt du das Programm laufen und eine beste Lösung wird berechnet.
Der Code funktioniert so weit. Nun bekomme ich aber das Problem, wenn ich mehr als 13 Stellen am Brett habe bekomme ich den Fehler: stack overflow

Es sollte schon möglich sein so um die 200 Stellen besetzten zu können.
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#6

AW: Alle Kombinationen ausgeben

  Alt 11. Nov 2020, 08:48
Hättest du vielleicht ein Beispiel mit 5 Halterungen und 20 Plätzen? Und als Ausgabe dann eine simple showMessage mit den Werten
Das Beispiel (siehe Link von oben) arbeitet mit 4 Halterungen und 10 Plätzen. Du kannst das leicht anpassen. Spiel's doch mal mit den 4 aus 10 durch. Du musst vorher nur noch in der Bewertungsfunktion meingebewertungsfunktion festlegen welche Kombination gut für dich ist und welche nicht. Danach lässt du das Programm laufen und eine beste Lösung wird berechnet.
Der Code funktioniert so weit. Nun bekomme ich aber das Problem, wenn ich mehr als 13 Stellen am Brett habe bekomme ich den Fehler: stack overflow

Es sollte schon möglich sein so um die 200 Stellen besetzten zu können.
Das Problem hat sich auch geklärt. Ich werde mich jetzt mal ransetzten alles zusammen zuwürfeln.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
771 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Alle Kombinationen ausgeben

  Alt 11. Nov 2020, 13:50
Der Code funktioniert so weit. Nun bekomme ich aber das Problem, wenn ich mehr als 13 Stellen am Brett habe bekomme ich den Fehler: stack overflow

Es sollte schon möglich sein so um die 200 Stellen besetzten zu können.

Wie du später gemerkt hast, gibt's keinen Stack Overflow.

Wenn du aber echt mit 200 Stellen rechnen lassen willst, dann musst du dir bewusst sein, dass das Aufzählen aller möglichen Kombinationen länger dauern kann als wir alle warten können. Beispiel n=200 Stellen und an k=100 Stellen was reinhängen: 9.054851465610329e+58 mögliche Kombinationen.
(Alle Zahlenkombinationen aus Lotto k=6 aus n=49 :13983816)

Kurz: Für grosse n musst du andere Wege gehen.
Michael Gasser
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#8

AW: Alle Kombinationen ausgeben

  Alt 11. Nov 2020, 13:54
Der Code funktioniert so weit. Nun bekomme ich aber das Problem, wenn ich mehr als 13 Stellen am Brett habe bekomme ich den Fehler: stack overflow

Es sollte schon möglich sein so um die 200 Stellen besetzten zu können.

Wie du später gemerkt hast, gibt's keinen Stack Overflow.

Wenn du aber echt mit 200 Stellen rechnen lassen willst, dann musst du dir bewusst sein, dass das Aufzählen aller möglichen Kombinationen länger dauern kann als wir alle warten können. Beispiel n=200 Stellen und an k=100 Stellen was reinhängen: 9.054851465610329e+58 mögliche Kombinationen.
(Alle Zahlenkombinationen aus Lotto k=6 aus n=49 :13983816)

Kurz: Für grosse n musst du andere Wege gehen.
Das Problem bin ich auch schon durchgegangen. Es gilt, k ist maximal 13 und zudem gibt es mehrere Möglichkeiten die passend sind, die Lösung liegt vermutlich im ersten zehntel der Zeit.
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
771 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Alle Kombinationen ausgeben

  Alt 11. Nov 2020, 14:27
Dann bist du bei maximal n=200 für maximal k=13 bei maximal 88326646952501950000 . Viel Glück
Michael Gasser
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#10

AW: Alle Kombinationen ausgeben

  Alt 11. Nov 2020, 14:36
Sorry Kegasetu für meine böse Bemerkung: Aber ohne mathematische Kenntnisse kann man kein vernünftiges Computerprogramm "programmieren".
Die von Michael II genannte Aufzählung von 88326646952501950000 Varianten würde auf einem extrem starken PC (sagen wir großzügig 1 Milliarde Operationen pro Sekunde) über 2,8 TAUSEND Jahre dauern…
Denk mal darüber nach!
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 (11. Nov 2020 um 14:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz