Problem beim zerlegen einer Zahl in einzelne Ziffern
#1
Habe folgende Aufgabe zu lösen:

Ein Code-Schloss kann mit den Ziffern 0 bis 9 codiert werden, allerdings darf jede Ziffer im Codewort nur einmal vorkommen. Frage: Wieviele Codierungen sind möglich? Man muss dazu die vorgegebene Zahl in einzelne Ziffern zerlegen und diese dann auf Gleichheit oder Ungleichheit vergleichen können. Hier komme ich nicht so richtig weiter. Danke für jede Hilfe im Voraus.

 Grüsse von Weinbaudidi  Huh
Antworten Top
#2
Hi, 

solche Aufgaben haben wir damals mit Fakultät gelöst.

Die Frage ist wie viele Stellen hat das Codeschloss.

Im einfachsten Anwendungsfall mit 10 Stellen, 10 Ziffern wäre es entsprechend 10! bzw. Fakultät(10). Für alles Weitere befasse dich bitte mit dem mathematischen Operator und wie man ihn anwendet.
z.B. könnte bei beispielsweise 4 aus 10 Ziffern der Binomialkoeffizient analog dem Lotto 6 aus 49 berechnet werden. Wikipedia sagt dir wie das geht...siehe "Fakultät (Mathematik)"

VG Jane
Antworten Top
#3
Hallo,
aus wieviel Ziffern besteht der Code?
Bei 4 Ziffern wäre das Beispiel richtig.

MfG Günter

.xlsx   Kombinationen.xlsx (Größe: 11,54 KB / Downloads: 11)
Win 11, Office 2024
Wenn Thema gelöst, dann bitte kennzeichnen.

Wer aufgibt, hat schon verloren.
Antworten Top
#4
Hallo
Permutation ohne Wiederholung.
=PERMUTATIONEN(10;4) 

Falls die Funktion in Excel nicht geht dann so

Arbeitsblatt mit dem Namen 'Tabelle1'
ABC
1Anzahl mögliche Ziffern10
2Anzahl Stellen4
3
4
5Möglichkeiten5040

ZelleFormel
C5=FAKULTÄT(C1)/FAKULTÄT(C1-C2)


zum nachvollziehen:

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCDEFGH
1Anzahl mögliche Ziffern3123
2Anzahl Stellen2132
3213
4231
5Möglichkeiten6312
6321

ZelleFormel
C5=FAKULTÄT(C1)/FAKULTÄT(C1-C2)


LG UweD
Antworten Top
#5
Hi Günther,

bei der von dir genannten Formel wird die Reihenfolge der Ziffern nicht berücksichtigt. Das ist z.B. bei der Ziehung der Lottozahlen korrekt - aber nicht bei einem Zahlenschloss. Das kannst du sehr leicht Prüfen, indem du beide Werte deiner Tabelle auf 10 setzt. Dann kommt logischerweise 1 raus.

Hier braucht man nicht die Zahl der "Kombinationen" sondern der "Permutationen". In diesem Fall die der Permutationen ohne Wiederholung. Jetzt muss man nur noch wissen, dass Excel der Meinung ist, dass Permutationen "Variationen" heißen.
Gruß,
Helmut

Win11 - Office365 / MacOS - Office365
Antworten Top
#6
Hallo Helmut,

ich denke, in diesem Fall ist es eher eine Variation anstatt einer Permutation ohne Wiederholungen, denn sonst müsste die Anzahl der Stellen gleich die Anzahl der Ziffern sein, also eine Sonderform der Variation. Leider hat der OP nichts darüber ausgesagt.

Knobbi38
Antworten Top
#7
(23.03.2026, 10:19)BigJane schrieb: Die Frage ist wie viele Stellen hat das Codeschloss.

Genau.

Nun dennoch haben wir 2 konkrete Vorschläge bis jetzt wie man das ausrechnet, schauen wir mal:
   

Hier ist die Datei:

.xlsx   Möglichkeiten.xlsx (Größe: 11,29 KB / Downloads: 4)

Ich würde sagen die korrekte Antwort für Scenario A ist 9 und für Scenario B ist 8. Oder habe ich da was falsch verstanden?

Andreas.
Antworten Top
#8
Hallo nochmal

In der Frage steht.

   >> allerdings darf jede Ziffer im Codewort nur einmal vorkommen. 


Also ist doch in Scenario  A 

1; 1                 
2; 2
3; 3

falsch

Edit:
Ebenso in Scenario B: die Mehrfachnennungen

Ohne Wiederholung nicht möglich, da es nur 2 mögliche Zahlen gibt, aber 3 Räder eingestellt werden sollen.
 

LG UweD
Antworten Top
#9
Hallo Andreas,

da hast du leider etwas falsch verstanden. 

Angenommen du hast ein Zahlenschloss mit 4 Rädern mit den Ziffern 0..9 und jede Ziffer darf in der Lösung nur einmal vorkommen, dann gibt es dafür 5040 Lösungen: 10 * 9 * 8 * 7 = 5040 oder als Formel "=Variationen(10;4)"

Bei deinem Problem wäre also die Lösung A = 6 und Variante B wäre ungültig.

Knobbi38

https://de.wikipedia.org/wiki/Variation_(Kombinatorik)
Antworten Top
#10
Hier noch die Auflistung der Möglichkeiten.
Code in ein Modul kopieren

0 bis 9 stehen in Spalte A (können auch Buchstaben sein)
Ausgabe erfolgt in D

Code:
Option Explicit

Sub Permutationen()
    Dim arr() As String
    Dim Anz As Long, Stellen As Long, Kombi As Integer
    Dim i As Long
   
    ' Anzahl der belegten Zellen in Spalte A
    Anz = WorksheetFunction.CountA(Columns(1))
   
    ' Eingabe der Permutationslänge
    Stellen = InputBox("Anzahl Stellen", , 3) ' z.B. 3 für ABC
   
    If Stellen > Anz Then
        MsgBox "Anzahl Stellen darf nicht größer als die Anzahl der Werte sein!"
        Exit Sub
    End If
   
    'mögliche Kombinationen
    Kombi = WorksheetFunction.Fact(Anz) / WorksheetFunction.Fact(Anz - Stellen)
    MsgBox Kombi & " Kombinationen möglich"
   
    'Reset
    Columns(4).ClearContents
   
    ' Array mit den Werten aus Spalte A füllen
    ReDim arr(1 To Anz)
    For i = 1 To Anz
        arr(i) = Cells(i, 1).Value
    Next i
   
    ' Alle Permutationen generieren
    Call Generate(arr, "'", Stellen) 'Wird als Text ausgegeben
End Sub

Sub Generate(arr() As String, prefix As String, k As Long)
    Dim i As Long, j As Long, idx As Long
    Dim newArr() As String
    Dim n As Long
   
    If k = 0 Then
        Cells(Rows.Count, 4).End(xlUp).Offset(1, 0).Value = prefix
        Exit Sub
    End If
   
    n = UBound(arr) - LBound(arr) + 1
   
    For i = LBound(arr) To UBound(arr)
        If n = 1 Then
            ' Letztes Element, einfach anhängen und schreiben
            Cells(Rows.Count, 4).End(xlUp).Offset(1, 0).Value = prefix & arr(i)
        Else
            ' Array für nächsten Rekursionsschritt bauen
            ReDim newArr(1 To n - 1)
            idx = 1
            For j = LBound(arr) To UBound(arr)
                If j <> i Then
                    newArr(idx) = arr(j)
                    idx = idx + 1
                End If
            Next j
            ' Rekursion
            Generate newArr, prefix & arr(i), k - 1
        End If
    Next i
End Sub


LG UweD
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: