Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

intelligentes variablen vergleichen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
hydrotoxin



Anmeldungsdatum: 28.02.2008
Beiträge: 2

BeitragVerfasst am: 28.02.2008, 10:45    Titel: intelligentes variablen vergleichen Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 306

BeitragVerfasst am: 28.02.2008, 12:27    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
hydrotoxin



Anmeldungsdatum: 28.02.2008
Beiträge: 2

BeitragVerfasst am: 28.02.2008, 13:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 306

BeitragVerfasst am: 28.02.2008, 14:06    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz