2017-05-16 71 views
-2

使用撥碼開關的您可能熟悉caeser密碼(see this wiki on caesers cipher AKA ROT13解決Caesers密碼在Javascript

我一直在尋找的密碼解決方案,但任何使用switch語句我沒有看到。鑑於挑戰(見下文),這個問題是否可以通過使用switch聲明來解決?我把我的代碼放在下面,但它不起作用。

function cciph(str) { 
    var code = ""; 

    switch {switch (str) { 
    case 'A': 
     code = "N"; 
     break; 
    case 'B: 
     code = 'O'; 
     break; 
     //..... 
    case 'M': code = 'Z'; 
    } 
    return str; 
} 

cciph("GUR DHVPX OEBJA QBT WHZCRQ BIRE GUR YNML SBK."); 
+3

看起來像你的問題是缺少有關當前試圖解決這個問題的一些信息。你錯過了一段代碼嗎? – Ken

+0

不是我寫的那種挑戰。如果你喜歡,你可以改變它。您不必遵循格式,但密碼仍然存在。希望它有幫助 –

+2

您有一個名爲'cciph'的函數,它接受一個參數並按原樣返回它。如果這就是你想要做的事情,那麼你的代碼運作良好 –

回答

0

我不知道一個開關,但這會給你所有26個可能的字符串突變,理論上包括解碼的字符串。

var alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; 
 

 

 
function cciph(cipherText) { 
 
    for(i = 0; i < 26; i++) { 
 
    var decodedText = cipherText.split("").map(function(c) { 
 
     var charIndex = alphabet.indexOf(c.toLowerCase()); 
 
     if (charIndex == -1) { 
 
     return c; 
 
     } 
 
     var modifiedIndex = charIndex + i; 
 
     var correctedIndex = modifiedIndex % 26; 
 
     return alphabet[correctedIndex]; 
 
    }); 
 
    console.log(decodedText.join("")); 
 
    } 
 
} 
 

 
cciph("GUR DHVPX OEBJA QBT WHZCRQ BIRE GUR YNML SBK.");

+0

謝謝@ Ken。看看上面編輯的問題。我試圖使用一個開關,但它不起作用。有可能調整它嗎?或者切換代碼不可行? –

+0

我回答如上。本質上,您的開關將映射字母表的字符到另一個結果。您需要根據循環內部的迭代器等輸入來改變每個字母大小寫的輸出,以便測試所有26種可能性。 @ Dr.Apell – Ken

+0

@ Ken。感謝您的洞察力。 –