3

私はこのサイトに不慣れです。可能であれば、何らかの助けが必要です。

使用可能な文字と単語の長さを入力すると、単語のリストを計算するアルゴリズムが必要です。自分の Web サイトに Draw Something ソリューション セクションを追加しています。私は Web 開発者であり、XHTML、CSS、およびいくつかの JS に関する膨大な知識を持っていますが、それだけです。Python や C++ などのより強力なものを使用しないと、これを実行できないと思いますか?

4

1 に答える 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"]
于 2012-04-08T12:51:03.957 に答える