【发布时间】:2019-05-20 13:25:00
【问题描述】:
我想使用以下加密方案加密一行文本。
这是示例输入。首先,从文本中删除空格。
haveaniceday
然后,返回字符串(L = 12) 的长度。接下来,将字符写入网格,其行和列具有以下约束:
字符串的长度将返回L 的平方根在3 和4 之间。因此,改写为 3 行 4 列:
have
anic
eday
最后通过在一列中显示字符,插入一个空格,然后显示下一列并插入一个空格,以此类推,得到编码的消息。
例如,上述矩形的编码消息是:
hae and via ecy
在我的代码 sn-ps 中,网格["have", "anic", "eday"] 已经创建,但我不知道如何实现下一个阶段。
const s = "haveaniceday";
let result = encryption(s);
function encryption(s) {
let sqr = Math.sqrt(s.length),
col = Math.ceil(sqr),
row = Math.floor(sqr);
let chunks = chunkSubstr(s, col);
// => ["have", "anic", "eday"]
console.log(chunks);
for (var i = 0; i < chunks.length; i++) {
// do some magic here...
// expected output: "hae and via ecy"
}
}
function chunkSubstr(str, size) {
const numChunks = Math.ceil(str.length / size)
const chunks = new Array(numChunks)
for (let i = 0, o = 0; i < numChunks; ++i, o += size) {
chunks[i] = str.substr(o, size)
}
return chunks
}
【问题讨论】:
-
停止将编程视为魔术:现在您需要从第一个“单词”中获取第一个字符,然后从第二个“单词”中获取第一个字符,...,然后从第一个“单词”中获取第二个字符"等
标签: javascript arrays string algorithm ecmascript-6