2017-12-26 49 views
3

Ich erzeuge mögliche Kombination von drei Buchstaben wie (A, B, C) in unten Muster. Fixieren Sie den äußeren Brief und wechseln Sie nach innen.Get Index der Combination Sequence

Für (A, B, C) = 3 * 3 * 3 Möglichkeiten.

Ich speichere alle in Array, jetzt durch Sequenz können wir wissen, in welchem ​​Index bestimmte Kombination aufgetreten war. Beispiel: "A B C" bei 6, "C C C" bei 27.

Auch durch den Index ist es möglich abzuleiten, in welchem ​​Index es wie 6 = "A B C" erschien.

Gibt es ein Muster, das herauszufinden? nicht erwartet Code nur Formel

A A A 
A A B 
A A C 

A B A 
A B B 
A B C 

A C A 
A C B 
A C C 

B A A 
B A B 
B A C 

B B A 
B B B 
B B C 

B C A 
B C B 
B C C 

C A A 
C A B 
C A C 

C B A 
C B B 
C B C 

C C A 
C C B 
C C C 

Antwort

3

Ihre Kombinationen entsprechen Basis-3 Zahlen, die A Buchstaben verwenden, B und C für ihre Ziffern:

  • A entspricht 0
  • B entspricht 1
  • C entspricht 2

Wenn Sie einen Index in base-3 konvertieren, erhalten Sie die entsprechende Kombination. Sie nummerieren Kombinationen beginnend bei 1, daher müssen Sie vor der Konvertierung 1 subtrahieren.

Um zum Beispiel die Kombination für Reihe 6 zu erhalten, subtrahiere 1, um 5 zu bekommen, dann wandle 5 in Basis-3 um 012 zu erhalten, dann Ziffern durch Buchstaben zu ersetzen.

In ähnlicher Weise können Sie eine Kombination zu Base-3, z. CAB wird 201, konvertiert es dann in dezimal, um 19 zu erhalten, addiere 1, um 20 zu bekommen - den Index von CAB in deiner Liste.

2

die im einfachen Fall von A und B

aussehen Lassen Sie

AA 
AB 
BA 
BB 

Aber warten Sie bekommen - das ist nur wie binäre

00 
01 
10 
11 

So wie in diesem Fall - wenn Wir schreiben Zeilen, die wir bekommen:

1 = AA 
2 = AB 
3 = BA 
4 = BB 

Es ist also genau wie die binäre Darstellung einer Linie - 1; Zum Beispiel Zeile 2 => 2-1 = 1 => 1 binär ist 01 => AB

So in der Tat sollten Sie nur die gleichen, aber nicht binär, aber trinary (ist das ein Wort?) - Index von 3 in Ihrem Beispiel bedeutet

das Recht ‚digit‘ ist die Alphabetgröße (3 in Ihrem Beispiel) in der Leistung von 0 der nächsten ist die Alphabetgröße in der Leistung von 1

So - CAC => 2 * 3^2 + 0 * 3^1 + 2 * 3^0 = 18 + 0 + 2 = 20 (+1 um zu fixieren, dass die Zeilen bei 0 beginnen) = 21 usw.