Loop mit allen Zahlenkombinationsmöglichkeiten

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Loop mit allen Zahlenkombinationsmöglichkeiten

Re: Loop mit allen Zahlenkombinationsmöglichkeiten

Post by Seimann » 06 Jan 2018, 13:33

Ich danke euch, es funktioniert :)

Re: Loop mit allen Zahlenkombinationsmöglichkeiten

Post by just me » 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
}

Re: Loop mit allen Zahlenkombinationsmöglichkeiten

Post by nnnik » 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 )    
        }
   }
}

Loop mit allen Zahlenkombinationsmöglichkeiten

Post by Seimann » 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 :?

Top