这个问题可能更适合编码高尔夫,但我想我会先尝试一下。
我有一个包含20,302个10个字母单词的数组:http://pastebin.com/NfzFiS92
我想知道如何从阵列中选择10个单词,受Scrabble字符的限制。哪个是......
9x A
2x B
2x C
4x D
12x E
2x F
3x G
2x H
9x I
1x J
1x K
4x L
2x M
6x N
8x O
2x P
1x Q
6x R
4x S
6x T
4x U
2x V
2x W
1x X
2x Y
1x Z
2x空白
答案 0 :(得分:1)
定义您的拼字游戏字母频率,如下所示:
$freqs = array(
"a"=>9,
"b"=>2,
"c"=>2,
...
);
然后你可以构建一个函数canBuild:
function canBuild($word){
global $freqs;
$temp = $freqs;
for($i=0;$i<strlen($word);$i++){
$letter = strtolower($word[$i]);
if($temp[$letter]>0){
$temp[$letter]--;
}else{
return false;
}
}
$freqs = $temp;
return true;
}
从这里迭代你的单词数组然后你喜欢并收集通过canBuild测试的前10次遇到。