字生成器算法?

时间:2012-04-08 12:28:48

标签: algorithm word generator

我是网站的新手。如果可能的话,我会提供一些帮助。

我想要一种算法,在输入可用字母和字长后计算单词列表。我在我的网站上添加了Draw Something解决方案部分。我是一名Web开发人员,对XHTML,CSS和一些JS有广泛的了解,但就是这些,我不认为如果不使用python或C ++等更强大的东西就可以做到这一点吗?

1 个答案:

答案 0 :(得分: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"]