首頁  >  文章  >  後端開發  >  讓你永遠贏得Popcap bookworm

讓你永遠贏得Popcap bookworm

WBOY
WBOY原創
2016-07-25 08:51:071263瀏覽
Bookworm是個很不錯的遊戲,如果你不知道它,那麼可以在app store裡搜尋一下。我用php寫了一個永遠會拼出最高分詞彙的程序,嘿嘿,我好壞

fullwordlist.txt 就是字典,文件太長,就不貼出來了,有興趣的朋友可以上網隨便搜一個。

  1. 字元:

  2. ;
  3. ;

  4. 佔分:



  5. form>

  6. / /作者:黃峰愛吳佳旻
  7. if(empty($_POST)) die;
  8. //接收並處理原始輸入數據,w代表字符,v代表分數的分數
  9. $data = array();
  10. for($i=1;$i array_push($data, array('w' =>; strtoupper(trim($_POST[ 'w'.$i])), 'v' =>; rim($_POST['v'.$i])));
  11. }
  12. //去重計算求和分數
  13. $data_unduplicated = array();
  14. foreach ($data as $key => $value){
  15. $data_unduplicated[] = implode(',', $value);
  16. }
  17. $data_unduplicated = array_unique($data_unduplicated);
  18. // 求每個字元的出現頻率
  19. $data_Frequency = array();
  20. foreach ($data as $arr) {
  21. $data_Frequency[] = $arr['w'];
  22. }
  23. $data_Frequency_result = array_count_values($data_Frequency);
  24. //將詞彙表檔案讀入資料庫
  25. $words file('./fullwordlist.txt', FILE_IGNORE_NEW_LINES);
  26. // 將詞彙表全部轉成大寫英文
  27. $words = array_map(function ($word){
  28. return str word);
  29. }, $words);
  30. //對每個單字進行頻次判斷
  31. $result = array();
  32. foreach ($words as $k => $ word) {
  33. // 遇到有'的單字,就略過
  34. if(strpos($word, "'") > 0) continue;
  35. // 對$word做字母拆解,判斷每個字母的出現頻次
  36. $word_arr = str_split($word);
  37. $word_arr_Frequency = array_count_values($word_arr);
  38. $pass = true;
  39. foreach ($comm_arr_Frequword_arr_Frequency_arr_Frequency _Frequword $character => $Frequency) {
  40. if(!array_key_exists($character, $data_Frequency_result) || ($data_Frequency_result[$character] $pass = false; 🎜> }
  41. //篩選出的$word進行分數運算
  42. if($pass) {
  43. $word_value = 0;
  44. foreach ($word_arr as $wkey => $ wchar) {
  45. foreach($data_unduplicated as $data_item) {
  46. $data_item = explode(',', $data_item);
  47. // var_dump($data_item); 陣列0 =>字串'A ' (長度=1) 1 =>字串'3' (長度=1)
  48. if($wchar != $data_item[0]) continue;
  49. $word_value = $data_item[1];
  50. }
  51. }
  52. $ result[] = array('w' => $word, 'v' => $word_value);
  53. }
  54. }
  55. //最終只選出投票數最高的
  56. $k = 0;
  57. $highest = 0;
  58. foreach ($result as $key => $item) {
  59. if(intval($item[' v']) >= $最高){
  60. $highest = $item['v'];
  61. $k = $key;
  62. }
  63. }
  64. echo '最高分的字是:' . $result[$k]['w'] . '('.$result[$k]['v'].')';;
複製程式碼


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn