You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发decode(message_file)函数解码文本隐藏消息遇阻求助

解码消息函数的问题修复与实现

需求说明

需要实现一个decode(message_file)函数,读取文本内容(每行包含一个数字和一个单词),将数字按金字塔结构排列:

1
 2 3
4 5 6

解码规则是提取金字塔每行末尾数字对应的单词(示例中的1、3、6),忽略其他单词,最终返回拼接后的字符串。

现有代码问题

你的代码逻辑错误,只是按输入行的顺序依次取第currentIndex个元素,完全没有遵循金字塔末尾数字的规律。正确的目标数字是前n个自然数的累加和:第1行末尾是1(1),第2行是3(1+2),第3行是6(1+2+3),以此类推,直到累加和超过输入中的最大数字。

修复后的代码

function decode(input) {
    // 将每行内容转换为数字-单词的映射
    const wordMap = new Map();
    const lines = input.trim().split('\n');
    let maxNumber = 0;
    
    lines.forEach(line => {
        const [numStr, word] = line.trim().split(' ');
        const num = Number(numStr);
        wordMap.set(num, word);
        if (num > maxNumber) {
            maxNumber = num;
        }
    });
    
    const targetNumbers = [];
    let currentSum = 0;
    let n = 1;
    
    // 计算所有金字塔行末尾的数字
    while (currentSum + n <= maxNumber) {
        currentSum += n;
        targetNumbers.push(currentSum);
        n++;
    }
    
    // 按顺序收集对应单词并拼接
    return targetNumbers.map(num => wordMap.get(num)).join(' ');
}

// 测试示例输入
const testInput = `3 love
6 computers
2 dogs
4 cats
1 I
5 you`;

console.log(decode(testInput)); // 输出: "I love computers"

解码长列表内容

将你提供的长列表输入到修复后的函数中,得到的解码结果为:

I especially like the element of surprise

内容的提问来源于stack exchange,提问作者harish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:59:54