Heim  >  Artikel  >  Backend-Entwicklung  >  让你永远赢得Popcap bookworm

让你永远赢得Popcap bookworm

WBOY
WBOYOriginal
2016-07-25 08:51:071218Durchsuche
Bookworm是个很不错的游戏,如果你不知道它,那么可以在app store里搜索一下。我用php写了一个永远会拼出最高分词汇的程序,嘿嘿,我好坏

fullwordlist.txt 就是词典,文件太长,就不贴出来了,感兴趣的朋友可以网上随便搜一个。

  1. 字符:


  2. 占分:




  3. // author: huangfeng爱吴佳旻
  4. if(empty($_POST)) die;
  5. // 接收并处理原始输入数据,w代表字符,v代表对应的分数
  6. $data = array();
  7. for($i=1;$i array_push($data, array('w' => strtoupper(trim($_POST['w'.$i])), 'v' => trim($_POST['v'.$i])));
  8. }
  9. // 去重以便计算求和的分数
  10. $data_unduplicated = array();
  11. foreach($data as $key => $value){
  12. $data_unduplicated[] = implode(',', $value);
  13. }
  14. $data_unduplicated = array_unique($data_unduplicated);
  15. // 求每个字符的出现频次
  16. $data_frequency = array();
  17. foreach ($data as $arr) {
  18. $data_frequency[] = $arr['w'];
  19. }
  20. $data_frequency_result = array_count_values($data_frequency);
  21. // 将词汇表文件读入数组
  22. $words = file('./fullwordlist.txt', FILE_IGNORE_NEW_LINES);
  23. // 将词汇表全部转成大写英文
  24. $words = array_map(function ($word){
  25. return strtoupper($word);
  26. }, $words);
  27. // 对每个单词进行频次判断
  28. $result = array();
  29. foreach ($words as $k => $word) {
  30. // 遇到含有'的单词,就略过
  31. if(strpos($word, "'") > 0) continue;
  32. // 对$word做字母拆解,判断每个字母的出现频次
  33. $word_arr = str_split($word);
  34. $word_arr_frequency = array_count_values($word_arr);
  35. $pass = true;
  36. foreach ($word_arr_frequency as $character => $frequency) {
  37. if(!array_key_exists($character, $data_frequency_result) || ($data_frequency_result[$character] $pass = false;
  38. }
  39. }
  40. // 对筛选出的$word进行求分数操作
  41. if($pass) {
  42. $word_value = 0;
  43. foreach ($word_arr as $wkey => $wchar) {
  44. foreach($data_unduplicated as $data_item) {
  45. $data_item = explode(',', $data_item);
  46. // var_dump($data_item); array 0 => string 'A' (length=1) 1 => string '3' (length=1)
  47. if($wchar != $data_item[0]) continue;
  48. $word_value += $data_item[1];
  49. }
  50. }
  51. $result[] = array('w' => $word, 'v' => $word_value);
  52. }
  53. }
  54. // 最后只选出分数最高的
  55. $k = 0;
  56. $highest = 0;
  57. foreach ($result as $key => $item) {
  58. if(intval($item['v']) >= $highest){
  59. $highest = $item['v'];
  60. $k = $key;
  61. }
  62. }
  63. echo '最高分的词是:' . $result[$k]['w'] . '('.$result[$k]['v'].')';;
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:CentOS里Apache强制UTF-8乱码的解决 Nächster Artikel:PHP aes算法