Loop mit allen Zahlenkombinationsmöglichkeiten Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Seimann
Posts: 2
Joined: 06 Jan 2018, 03:32

Loop mit allen Zahlenkombinationsmöglichkeiten

06 Jan 2018, 03:58

Hey Leute,
Ich habe mir schon stunden den Kopf zerbrochen und kein korrektes Ergebnis erhalten, deshalb wende ich mich an euch :)
Ich möchte sämtliche Zahlenkombinationsmöglichkeiten erstellen, jede kombination ruft die selbe Funktion auf.

Das hab ich mal so:

Code: Select all

; Variablen range input
periode_start = 10
periode_ende = 15

hot_start = 0
hot_ende = 5

zeit_start = 10
zeit_ende = 20

; Start script
periode_count = %periode_start%
hot_count = %hot_start%
zeit_count = %zeit_start%

Loop {
	periode_var = %periode_count%
	hot_var = %hot_count%
	zeit_var = %zeit_count%
	
	MyFunc(periode_var, hot_var, zeit_var)
	
	Loop {
		periode_var++
		MyFunc(periode_var, hot_var, zeit_var)
		if (periode_var = periode_ende) {
			periode_var = %periode_count%
			periode_count++
			if (periode_count > periode_ende) {
				periode_count = %periode_start%
			}
			break
		}
	}
	
	Loop {
		hot_var++
		MyFunc(periode_var, hot_var, zeit_var)
		if (hot_var = hot_ende) {
			hot_var = %hot_count%
			hot_count++
			if (hot_count > hot_ende) {
				hot_count = %hot_start%
			}
			break
		}
	}
	
	Loop {
		zeit_var++
		MyFunc(periode_var, hot_var, zeit_var)
		if (zeit_var = zeit_ende) {
			zeit_var = %zeit_count%
			zeit_count++
			if (zeit_count > zeit_ende) {
				zeit_count = %zeit_start%
			}
			break
		}
	}
	
}

MyFunc(periode_var, hot_var, zeit_var)
{
	; Führt Function aus....
}
Das Script ist so nicht sehr effizient... Kombinationen sind doppelt bzw. es werden kombinationen übersprungen.
Echt knifflig das Script, ich schaffe es einfach nicht eine Lösung zu finden, vilt. gibt es hier paar kluge Köpfe die eine Lösung haben :D

Die Variablen mit _start und _ende sind echte Variablen und soll man auch verändern können, sie sind keine festen werte.
Am ende soll es eben jede Zahlenkombinationsmöglichkeit die Funktion "MyFunc" aufrufen. Optimal wenn auch keine doppelt ausgeführt werden :?
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Loop mit allen Zahlenkombinationsmöglichkeiten  Topic is solved

06 Jan 2018, 06:01

Ich würde, wenn ich 3 Zahlen Bereiche zu verarbeiten hätte 3 Loops ineinander verschachteln anstatt nur 2.
Jeder ist dann für seinen eigenen Bereich zuständig:

Code: Select all

Loop % längeBereich1 {
    wertBereich1 := startBereich1 + A_Index - 1
    Loop % längeBereich2 {
        wertBereich2 := startBereich2 + A_Index - 1
        Loop % längeBereich3 {
            wertBereich3 := startBereich3 + A_Index - 1
            myFunc( wertBereich1, wertBereich2, wertBereich3 )    
        }
   }
}
Recommends AHK Studio
just me
Posts: 9442
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Loop mit allen Zahlenkombinationsmöglichkeiten

06 Jan 2018, 06:25

Moin,

ein eher klassischer Ansatz, der aber auch 3 geschachtelte Schleifen (eine pro Wertebereich) nutz:

Code: Select all

#NoEnv
SetBatchLines, -1

; Variablen range input
periode_start := 10
periode_ende := 15

hot_start := 0
hot_ende := 5

zeit_start := 10
zeit_ende := 20

; Start script
periode_var := periode_start
While (periode_var <= periode_ende)
{
   hot_var := hot_start
   While (hot_var <= hot_ende)
   {
      zeit_var := zeit_start
      While (zeit_var <= zeit_ende)
      {
         MyFunc(periode_var, hot_var, zeit_var)
         zeit_var++
      }
      hot_var++
   }
   periode_var++
}

MsgBox, Bingo!
Return

MyFunc(periode_var, hot_var, zeit_var)
{
   ToolTip, %periode_var% - %hot_var% - %zeit_var%
   Sleep, 250
}
Seimann
Posts: 2
Joined: 06 Jan 2018, 03:32

Re: Loop mit allen Zahlenkombinationsmöglichkeiten

06 Jan 2018, 13:33

Ich danke euch, es funktioniert :)

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 23 guests