Ich habe eine Funktion geschrieben, bei der die Werte der Buchstaben in einer empfangenen Zeichenfolge um 13 Stellen verschoben sind.ROT13-Chiffre in so wenigen Codezeilen möglich
Meine Lösung ist sehr ineffizient und müsste komplett neu geschrieben werden, wenn der Verschiebungsfaktor geändert wurde.
Hier ist meine Lösung:
function rot13(str) {
var charArray = str.split("");
var myArray = [];
for (var i = 0; i < charArray.length; i++) {
switch (charArray[i]) {
case "A":
myArray.push("N");
break;
case "B":
myArray.push("O");
break;
case "C":
myArray.push("P");
break;
case "D":
myArray.push("Q");
break;
case "E":
myArray.push("R");
break;
case "F":
myArray.push("S");
break;
case "G":
myArray.push("T");
break;
case "H":
myArray.push("U");
break;
case "I":
myArray.push("V");
break;
case "J":
myArray.push("W");
break;
case "K":
myArray.push("X");
break;
case "L":
myArray.push("Y");
break;
case "M":
myArray.push("Z");
break;
case "N":
myArray.push("A");
break;
case "O":
myArray.push("B");
break;
case "P":
myArray.push("C");
break;
case "Q":
myArray.push("D");
break;
case "R":
myArray.push("E");
break;
case "S":
myArray.push("F");
break;
case "T":
myArray.push("G");
break;
case "U":
myArray.push("H");
break;
case "V":
myArray.push("I");
break;
case "W":
myArray.push("J");
break;
case "X":
myArray.push("K");
break;
case "Y":
myArray.push("L");
break;
case "Z":
myArray.push("M");
break;
case " ":
myArray.push(" ");
break;
case ",":
myArray.push(",");
break;
case "!":
myArray.push("!");
break;
case "?":
myArray.push("?");
break;
case ".":
myArray.push(".");
break;
}
}
console.log(myArray.join(""));
}
rot13("GUR DHVPX OEBJA QBT WHZCRQ BIRE GUR YNML SBK.");
Können Sie mir zeigen eine effizientere weniger umständliche Lösung?
Tipps: 'var map = {A: 'N', ...}' Tipp 2: 'String.fromCharCode (str.charCodeAt (...) + 13)' ... – deceze
Diese Frage könnte sein, geeignet für [Code Review] (http://codereview.stackexchange.com/help), solange (a) Ihr Code wie vorgesehen funktioniert, (b) Ihr Code aus echtem Code und nicht aus Beispielcode besteht und (c) Ihr Code ist im Hauptteil der Frage enthalten. Wenn Sie möchten, dass ein Peer-Review alle Aspekte Ihres Codes verbessert, veröffentlichen Sie ihn bitte in der Code Review. –
Vielleicht mit ihren ASCII-Werten und dann verschieben sie um eine beliebige Zahl, in diesem Fall 13? – praetoriaen