Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
hydrotoxin
Anmeldungsdatum: 28.02.2008 Beiträge: 2
|
Verfasst am: 28.02.2008, 10:45 Titel: intelligentes variablen vergleichen |
|
|
nur mal ne kurze info
1.programmiere selten, daher nich viel erfahrung -> eh nur mathematisches problem, hab grad qb nich zur hand gehabt und hab
einfach darkbasic genommen(nur lästig wegn umgewöhnung) -qbforum weil darkbasic nunmal eigentlich für 3d ist und das forum besser ist
2.mach das eigentlich nur zum spaß und um wieder mal was zu proggen
3.sudokuähnliches prinzip: es geht um einen würfel auf der auf jeder der 6 seiten 4 felder sind. es gibt 8 verschiedene zahlen zum füllen der 24 felder, in jeder spalte und zeile darf jede zahl nur einmal vorkommen
vorgekommen in spinter cell double agent [-und wehe jetzt schreibt wer was von killerspielen grr]
auf jeden fall möchte ich jetzt 4 variablen vergleichen und die letze variable ändert ihren wert auf den nächsthöheren freien wert und bei >8 dann wieder bei der kleinstmöglichen freien zahl also so
1 1 ...1 1
2 2 ...2 2
3 3 ...3 4
4 5 ...8 3 <-kleinstmögliche zahl
und dass ganze mit möglichst wenig code
und natürlich möcht ich dass selber programmieren und nicht nen fertiges programm usen |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 339
|
Verfasst am: 28.02.2008, 12:27 Titel: |
|
|
Ich bin mir ja nicht sicher, ob ich dich richtig verstanden habe.
Code: | a = 3
b = 5
c = 2
d = 6
x = d
DO
change = 0
IF x = a OR x = b OR x = c OR x = d THEN change = 1: x = x + 1: IF x > 8 THEN x = 1
LOOP UNTIL change = 0
d = x
CLS
PRINT "a "; a
PRINT "b "; b
PRINT "c "; c
PRINT "d "; d |
_________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
hydrotoxin
Anmeldungsdatum: 28.02.2008 Beiträge: 2
|
Verfasst am: 28.02.2008, 13:36 Titel: |
|
|
klar.. ne schleife, dann noch so lange laufen lassen bis meine bedingungen stimmen, , natürlich hab ich daran gedacht (weit hinten)
aber mir gings drum das OHNE schleife zu lösen damit es schnell geht.
ich werds natürlich ausprobieren aber bei millionen von durchläufen ist jede weitere schleife laaaaaangsam (ich wollte eigentlich eine mathematische lösung und dann vergleichen was schneller ist)
Vielleicht ist do loop ja schneller als next for, glaub ich aber nicht
aber wenig code recht hast du |
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 339
|
Verfasst am: 28.02.2008, 14:06 Titel: |
|
|
Die Schleife läuft ja nicht öfters als 5 mal, denke ich.
Und einen mathematischen Zusammenhang zwischen den einzelnen Zahlen gibts ja auch nicht wirklich, den müsstest du erst selber schaffen. Zb indem du die Zahlen der Größe nach ordnest. Wenn du wirklich nur Zahlen von 1-8 hast, so empfehle ich dir den Bucket-Sort (musst mal nach googlen).
Aprospos Bucket, da fällt mir gerade noch eine Methode ein, eine Schleifenmethode:
Code: | DIM Bucket(0 TO 7)
a = 0
b = 7
c = 6
d = 5
'Bucket leeren
FOR i = 0 TO 7: Bucket(i) = -1: NEXT
'Bucket fuellen
Bucket(a) = 1
Bucket(b) = 1
Bucket(c) = 1
Bucket(d) = 1
x = (d + 1) MOD 8
WHILE Bucket(x) = 1: x = (x + 1) MOD 8: WEND
d = x
PRINT d |
Auch hier gibts konstante Laufzeit. Und wenn man die Zahlen von 0-7 anstatt von 1-8 hat, so kann man sich den Code mit MOD verkürzen. _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
|