Hilfe: Schleifenkonstrukt

Hallo zusammen.

Ich muss euch um Hilfe bitten bei einer Sache, die eigendlich kein Problem darstellen sollte, allerdings stehe ich irgendwie total auf dem Schlauch, warum auch immer.

Gesucht ist ein Konstrukt, welches folgenden output erzeugt:

Code:
100, 100, 100
99, 100, 100
100, 99, 100
99, 99, 100
100, 100, 99
99, 100, 99
100, 99, 99
99, 99, 99
98, 99, 99
99, 98, 99
...
1, 1, 1

Vorzugsweise C, Peusocode, oder was auch immer. Auch wäre ich für jeden Vorschlag dankbar, der mir hilft das selbst zu lösen, als zündende Idee quasi.

Grüße
 
Manchmal hilft es sich vor Augen zu führen, was von einer Zeile zur nächsten passiert.

Du hast 3 Elemente A, B und C und die starten alle mit 100.

Du kannst also eine Transitionsfolge relativ zur letzten Zeile formulieren.
Beispiel für A:

+A -> A inkrementieren
-A -> A dekrementieren
/A -> A bleibt gleich

Von 100, 100, 100 bis 99,99,99 kommt folgendes heraus:

Code:
 A  B  C  == (100,100,100)

-A /B /C => ( 99,100,100) 
+A -B /C => (100, 99,100)
-A /B /C => ( 99, 99,100)
+A +B -C => (100,100, 99)
-A /B /C => ( 99,100, 99)
+A -B /C => (100, 99, 99)
-A /B /C => ( 99, 99, 99)

Na, siehst du ein reproduzierbares Muster? ;)
 
Übrigens: Wenn du eine Binärzahl von 0 bis 7 hochzählst und die 1./2./3. Stelle von der Spalte A/B/C abziehst, kriegst du die Iteration von 100,100,100 auf 99,99,99 auch hin (mit A = 100 - z1, B 0 100 - z2, C = 100 - z3).
Code:
z | z1 z2 z3 | A B C
0 |  0  0  0 | 100 100 100
1 |  1  0  0 |  99 100 100
2 |  0  1  0 | 100  99 100
3 |  1  1  0 |  99  99 100
4 |  0  0  1 | 100 100  99
5 |  1  0  1 |  99 100  99
6 |  0  1  1 | 100  99  99
7 |  1  1  1 |  99  99  99
Und von 99 auf 98 gehts dann genauso weiter ...

Du kannst die Stelle z1-z3 (z.B: in C) berechnen durch
z1 = z & 1
z2 = z & 2
z3 = z & 4

mfg, metax.
 
Zurück
Oben