- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 25

Thema: Ein Zahlenproblem

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von iBot
    Registriert seit
    12.05.2008
    Ort
    ca. 20km von Nürnberg
    Beiträge
    160

    Ein Zahlenproblem

    Hallo Leute,
    eigentlich hat das Problem rein gar nichts mit Robotik zu tun, außer vlt dass es um Automatisierung geht.
    Aber jetzt ohne langes Reden gleich zum Problem :

    Ich habe 10 Zahlen (0-9) und ich möchte nun alle Kombinationsmöglichkeiten, wobei jede Zahl nur ein mal pro Kombination vorkommt (z. B. 1345267098 ) mittels eines Algorithmus ermitteln. (Später soll das dann mal in einem Programm für einen µC enden.)

    Laut Rechnung wären das 3628800 Möglichkeiten (k=n! bzw. k=1*2*3*4*5*6*7*8*9*10).

    Eine Idee wäre die Zahlen immer um einen Platz zu verschieben, also:
    Code:
    'ausgegangen von der Zahl abcdefghij
    
    a=b
    b=c
    c=d
    d=e
    e=f
    f=g
    g=h
    h=i
    i=j
    j=a
    
    z=z+1                    'bis z irgendwann 10 ist
    Das würde schon mal die Möglichkeiten deutlich verringern (wenn ich mich nicht irre wäre es dann nur noch 1/10 )
    Aber wie komm ich zu den restlichen 362880 Möglichkeiten ?

    Falls ich irgendwo einen Denkfehler hineingebracht habe, bitte bescheid geben.
    Geändert von iBot (29.07.2011 um 01:50 Uhr)


  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    23.07.2009
    Alter
    30
    Beiträge
    133
    Ohne jetzt länger drüber nachgedacht zu haben (ist ja schon spät) in irgendeiner Java-ähnlichen Fantasiesprache:
    Code:
    void schreibeAlleKombinationen(List<Ziffer> kombinationBisher, List<Ziffer> moeglicheZiffern){
    Iterator<Ziffer> i = moeglicheZiffern.getIterator();
    boolean foundSomething = false;
    while(i.hasNext()){
    Ziffer next = i.next();
    if(! kombinationBisher.contains(next)){
    schreibeAlleKombinationen(kombinationBisher.append(next),moeglicheZiffern);
    foundSomething = true;
    }
    }
    if(! foundSomething){
    System.out.println(kombinationBisher.toString());
    }
    }

  3. #3
    Super-Moderator Lebende Robotik Legende Avatar von Manf
    Registriert seit
    30.01.2004
    Ort
    München
    Alter
    71
    Beiträge
    13.075
    Die Positionen nacheinander betrachten:
    An der ersten Position steht nacheinander jede der Ziffern a-j.
    Für jeden der Fälle steht an der zweiten Position jede der Ziffern a-j mit Ausnahme der schon für die Position 1 ausgewählten Ziffer.
    Für jeden der Fälle steht an der dritten Position jede der Ziffern a-j mit Ausnahme der schon für die Position 1 und 2 ausgewählten Ziffern.
    ...

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Mein erster Gedanke:

    1:
    0123456789

    3628800:
    9876543210

    Ich vermute, man muss nur die Hälfte der Kombinationen errechnen, denn das Ergebniss sollte nach der Mitte gespiegelt sein.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ich würde den Hinweis von Manf in eine Formel fassen, das geht sicher am schnellsten
    (10)*(10-1)*(10-2).........
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied Avatar von iBot
    Registriert seit
    12.05.2008
    Ort
    ca. 20km von Nürnberg
    Beiträge
    160
    Danke für die vielen Antworten so früh

    @justin:
    Ich kann leider kein Java, aber hab ich das richtig verstanden? Du meinst es gäbe einen Befehl mit dem man das direkt machen kann?

    @Manf:
    ich versteh den Gedanken jetzt nicht 100%ig, kannst du das vlt in eine kleine Basic-Schleife verpacken?

    @radbruch:
    Ah ja, stimmt, das würde die erforderlichen Möglichkeiten noch einmal halbieren…
    Sprich: Es wären nur noch 181440 möglichkeiten


Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen