词语生成算法?

3
我是新来的,如果可能的话,希望能得到一些帮助。
我需要一个算法,输入可用的字母和单词长度后可以计算出一个单词列表。我正在我的网站上添加一个“画个东西”解决方案部分。我是一名Web开发人员,对XHTML、CSS有广泛的知识,还会一些JS,但这似乎不能在没有使用更加强大的语言如Python或C++的情况下完成?

2
JavaScript可以做到这一点,它是一种完整的编程语言。 - Fred Foo
1个回答

3

Javascript可以在您的浏览器上运行:

vocabulary = ['start', 'tarts', 'stars', 'rats', 'tears']  // ...etc. read from a file

function letters(word) {
    return word.split('');
}

function possibleWords(length, allowedLetters) {
    var isAllowedLetter = function(letter) {
        return allowedLetters.indexOf(letter) != -1;  // allowedLetters contains letter
    };
    return vocabulary.filter(function(word) {
        return word.length==length && letters(word).every(isAllowedLetter);
    })
}

示例:

> possibleWords(5, ['s','t','a','r'])
["start", "tarts", "stars"]

为了提高效率,你可以这样做:
vocabulary = ['start', 'tarts', 'stars', 'rats', 'tears']  // ...etc. read from a file

function letters(word) {
    return word.split('');
}

function set(iterable) {
    var data = {};
    iterable.forEach(function(x) {
        data[x] = true;
    });
    return {
        contains: function(x) {
            return !(data[x]===undefined);
        }
    };
}

function possibleWords(length, allowedLetters) {
    var isAllowedLetter = allowedLetters.contains;
    return vocabulary.filter(function(word) {
        return word.length==length && letters(word).every(isAllowedLetter);
    })
}

演示:

> possibleWords(5, set(['s','t','a','r']))
["start", "tarts", "stars"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接