首页 > 解决方案 > 节点 - 如何从一个单词中删除 x 个字母

问题描述

作为一个练习,我正在尝试创建一个简单的猜字母游戏。我编写了这段代码,它将从.txt字典文件中提取一个随机单词。

    fs.readFile(filename, { encoding: 'utf-8' }, (error, data) => {
        if( error ) return new Error(error);
        let randomWord;
        const d = data.split('\n');
        for(let i = d.length - 1; i > 0; i--){
            const r = Math.floor(Math.random() * (i + 1));
            const tmp = d[i];
            d[i] = d[r];
            d[r] = tmp;
            randomWord = d[r];
        }
    
        const splittedWord = randomWord.split('');
        //console.log(splittedWord);
        
        console.log(`Selected word length is ${splittedWord.length}`);
        const mid = Math.floor( splittedWord.length / 2 ); 

        //console.log(mid);
        
        let outputWord;

        for(let e = mid - 1; e > 0; e--){
            const r = Math.floor(Math.random() * (e + 1));
            outputWord = splittedWord.splice(r, 1, '_');
        }
        // the output word have letters removed but sometimes not in a random way 
        console.log(splittedWord.toString());
        
            
    });

为了随机抽取要使用的单词,我实现了Fisher-Yates 算法。我能够从文本文件中获取一个随机单词,并将其拆分以获取一个包含单词单个字符的数组。我想要实现的是从单词中删除 x 个字母,然后将其显示给需要猜测删除的字母以重新创建原始单词的用户。实现这一目标的最佳方法是什么?我正在考虑使用相同的算法来随机抽取单词,但不确定。任何建议将不胜感激。

标签: javascriptnode.jsarrays

解决方案


let currentTimestamp=Date.now().toString()
currentTimestamp = currentTimestamp.split("")
let singleDigitRand = currentTimestamp[12]
console.log(singleDigitRand)

你可以像这样选择 x


推荐阅读