Heim > Artikel > Web-Frontend > Lustige Fragen zu JavaScript: Praktische Kombinationen von Permutationen
Schauen wir uns zunächst dieses Bild an, das dem Tasten-Desktop altmodischer Phablet-Telefone ähnelt.
Wenn wir die Taste „2“ drücken, können wir die drei Buchstaben „A“, „B“ und „C“ aufrufen.
Mit Ausnahme der Tasten „1“ und „0“ können andere Zifferntasten eine Vielzahl von Buchstaben aufrufen.
Die Frage ist nun: Wie viele alphanumerische Kombinationen erhalte ich, wenn ich vier beliebige Zifferntasten auswähle?
Zum Beispiel habe ich „0002“ ausgewählt, weil die Taste „0“ keinen entsprechenden Buchstaben hat und es daher nur drei Kombinationen davon gibt – „000A“, „000B“ und „000C“.
Nehmen wir ein komplizierteres Beispiel. Drücken Sie kontinuierlich „0023“, „0“ bleibt unverändert, „2“ kann „A“, „B“, „C“ entsprechen, „3“ kann „D“ entsprechen. „E“, „F“, dann sollte es entsprechend dem Wissen über Permutation und Kombination 1*1*3*3=9 Kombinationen geben.
Okay, mal sehen, wie wir dieses Problem lösen können.
Der erste Schritt besteht darin, eine Zuordnung basierend auf der Beziehung zwischen den Zifferntasten und den entsprechenden Buchstaben zu erstellen.
var map = { 1 : [ 1 ], 2 : [ "A", "B", "C" ], 3 : [ "D", "E", "F" ], 4 : [ "G", "H", "I" ], 5 : [ "J", "K", "L" ], 6 : [ "M", "N", "O" ], 7 : [ "P", "Q", "R", "S" ], 8 : [ "T", "U", "V" ], 9 : [ "W", "X", "Y", "Z" ], 0 : [ 0 ] };
Der zweite Schritt besteht darin, Rekursion zu verwenden, um Permutationen und Kombinationen zu lösen
function telephoneWords(digitString) { var array = []; var result = []; digitString.split("").forEach(function(e) { array.push(map[e]); }) var traverse = function foo(from, to) { if (to.length < 4) { var cur = from.shift(); for (var i = 0; i < cur.length; i++) { var newTo = to.slice(0); newTo.push(cur[i]); var newFrom = from.slice(0); foo(newFrom, newTo); } } else { result.push(to.join("")); } }; traverse(array, []); return result; }
Das Obige ist der Inhalt von JavaScript-interessanten Fragen: praktische Permutationen und Kombinationen Weitere Informationen Verwandte Inhalte, achten Sie bitte auf PHP Chinese Net (www.php.cn)!