JS 给诗歌 加密 (凯撒密码)

var lower = 'abcdefghijklmnopqrstuvwxyz'
var upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

var poem =
`
If by life you were deceived
Don't be dismal, don't be wild
In the day of grief, be mild
Merry days will come, believe
Heart is living in tomorrow
Present is dejected here
In a moment, passes sorrow
That which passes will be dear
`

var FindRow = function(s) {
    var array = [];
    for (var i = 0; i < s.length; i++) {
        if (upper.includes(s[i])) {
            console.log(`i ${i}`)
            for (var j = i + 1 ; j < s.length; j++) {
                if ((poem[j] == '\n')) {
                    // 找回车键 切句子
                    console.log(`j ${j}`)
                    var str = s.slice(i,j);
                    console.log(`str ${str}`)
                    array.push(str);
                    //console.log(array)
                    break;
                    // 找到一个 j 之后马上打断 j循环,接着继续 i 循环
                }
            }
        }
    }
    return array;
}
// FindRow(poem) 结果是一个包含 8条 字符串的数组;


var find = function(s1,s2) {
    var len = s1.length;
    if (s1.includes(s2)) {
        for (var i = 0; i < len; i++) {
            var str = s1[i];
            if (str == s2) {
                return i;
            }
        }
    }
    return -1;
}
var lowercase1 = function(s) {
    var result = '';
    for (var i = 0; i < s.length; i++) {
        if (upper.includes(s[i])) {
            var index = find(upper,s[i]);
            result += lower[index];
        } else {
            result += s[i];
        }
    }
    return result;
}
var uppercase1 = function(s) {
    var result = '';
    for (var i = 0; i < s.length; i++) {
        if (lower.includes(s[i])) {
            var index = find(lower,s[i]);
            result +=  upper[index];
        } else {
            result += s[i];
        }
    }
    return result;
}

var encode = function(s,shift) {
    str = lowercase1(s)
    var result = '';
    for (var i = 0; i < str.length; i++) {
        if (lower.includes(str[i])) {
            var index = find(lower,str[i]);
            var next = (index + shift) % 26;
            result += lower[next];
        }else {
            result += str[i];
        }
    }
    return result;
}

var encode1 = function(s) {
    var n = FindRow(s);
    var result = '';
    for (var i = 0; i < n.length; i++) {
        var str = '\n' + encode(n[i],i + 1) ;
        // 第一条字符串 i = 0; 重新加在 前面 加上换行符
        result += uppercase1(str);
    }
    return result;
}
encode1(poem)

控制台运行后得到加密版的诗歌:

"
JG CZ MJGF ZPV XFSF EFDFJWFE
FQP'V DG FKUOCN, FQP'V DG YKNF
LQ WKH GDB RI JULHI, EH PLOG
QIVVC HECW AMPP GSQI, FIPMIZI
MJFWY NX QNANSL NS YTRTWWTB
VXKYKTZ OY JKPKIZKJ NKXK
PU H TVTLUA, WHZZLZ ZVYYVD
BPIB EPQKP XIAAMA EQTT JM LMIZ"

之后也可以自己写decode程序,还原回诗歌,还是挺有趣的!

猜你喜欢

转载自www.cnblogs.com/hezhouhang/p/9177287.html
今日推荐