gpt4 book ai didi

JavaScript Row Transposition Cipher - 如何将键转换为列号

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:13:57 26 4
gpt4 key购买 nike

我在将 key 中的字母转换为它们在行换位密码中的字母顺序时遇到了一些问题。

例如,如果我们将单词“fruit”作为键,它应该转换为以下数字序列:“6(f) 18(r ) 21(u) 9(i) 20(t)"

我设法使用这个函数实现了这一点:

function filterKey(key) {
var result = [];
for (var i = 0; i < key.length; i++) {
var c = key.charCodeAt(i);
result.push((c - 65) % 32);
}
return result;
}

我的问题是:如何将上述数字序列转换为列号?

像这样:"6(f) 18(r) 21(u) 9(i) 20(t)" --> "1(f) 3(r) 5(u) 2(i) 4(t)”

最佳答案

我不知道你是想在函数内还是在返回结果之后执行此操作。

无论哪种方式,以下内容都可以完成工作:

var key = "fruit";
var result = key.split("").map(function(x) {return (x.charCodeAt(0) - 65) % 32}); // (one-liner for your function)
var sorted = result.slice(0).sort(function(a, b) {return a - b});
var columnNumbers = result.map(function(x) {
var index = sorted.indexOf(x);
sorted[index] = 0; // reset value in case of duplicate chars
return index + 1;
});
console.log(columnNumbers);

请注意,这是为了处理键中的重复字母而设计的。

例如 "froot" 将输出 [1, 4, 2, 3, 5]

关于JavaScript Row Transposition Cipher - 如何将键转换为列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com