>  기사  >  백엔드 개발  >  Popcap 책벌레를 영원히 승리하게 해주세요

Popcap 책벌레를 영원히 승리하게 해주세요

WBOY
WBOY원래의
2016-07-25 08:51:071263검색
북웜(Bookworm)은 아주 좋은 게임입니다. 모르신다면 앱 스토어에서 검색해 보세요. 항상 최고 점수를 받는 단어를 철자하는 프로그램을 PHP를 사용하여 작성했습니다.

fullwordlist.txt 파일이 너무 길어서 게시하지 않겠습니다. . 관심 있는 친구들은 온라인으로 검색해 보세요.

  1. 字符:

  2. < ;input type="text" value="" id="w6" name="w6" style="width:50px;">
  3. < ;input type="text" value="" id="w16" name="w16" style="width:50px;">

  4. ×分:

  5. <입력 유형 ="text" value="" id="v4" name="v4" style="width:50px;">
  6. <입력 유형= "text" value="" id="v16" name="v16" style="width:50px;">



  7. // 작성자: huangfeng爱吴佳旻
  8. if(empty($_POST)) die;
  9. // 接收并处理原始输入数据,w代表字符,v代表对应的分数
  10. $data = array();
  11. for($i=1;$i<=24;$i ){
  12. array_push($data, array('w' => strtoupper(trim($_POST['w'.$i])), 'v' => Trim($_POST['v'.$i]))));
  13. }
  14. // 去重以以便计算求和的分数
  15. $data_unduplicated = array();
  16. foreach ($data as $key => $value){
  17. $data_unduplicated[] = implode(',', $value);
  18. }
  19. $data_unduplicated = array_unique($data_unduplicated);
  20. }
  21. $data_주파수_result = array_count_values($data_주파수);
  22. // 将词汇表文件读入数组
  23. $words = file('./fullwordlist.txt', FILE_IGNORE_NEW_LINES);
  24. // 将词汇表전체부转成大写英文
  25. $words = array_map(function ($word){
  26. return strtoupper($word);
  27. }, $words);
  28. // 对每个单词进行频次判断
  29. $result = array();
  30. foreach ($words as $k => $word) {
  31. // 遇到含有'的单词,就略过
  32. if(strpos($word, "'") > 0) continue;
  33. // 对$word做字母拆解 ,判断每个字母的 Out现频次
  34. $word_arr = str_split($word);
  35. $word_arr_주파수 = array_count_values($word_arr);
  36. $pass = true;
  37. foreach ($word_arr_주파수는 $character => $주파수) {
  38. if(!array_key_exists($character, $data_주파수_result) || ($data_주파수_결과[$문자] < $주파수)) {
  39. $pass = false;
  40. }
  41. }
  42. // 对筛选出的$word进行求分数操작
  43. if($pass) {
  44. $word_value = 0;
  45. foreach ($word_arr as $wkey => $wchar) {
  46. foreach($data_unduplicated as $data_item) {
  47. $data_item = 폭발(',', $data_item);
  48. // var_dump($data_item); 배열 0 => 문자열 'A' (길이=1) 1 => 문자열 '3' (길이=1)
  49. if($wchar != $data_item[0]) continue;
  50. $word_value = $data_item[1];
  51. }
  52. }
  53. $ result[] = array('w' => $word, 'v' => $word_value);
  54. }
  55. }
  56. // 最后只选流分数最高的
  57. $k = 0;
  58. $highest = 0;
  59. foreach ($result as $key => $item) {
  60. if(intval($item['v']) >= $ 최고){
  61. $최고 = $item['v'];
  62. $k = $key;
  63. }
  64. }
  65. echo '가장 높은 점수를 받은 단어는 다음과 같습니다.' . $result[$k]['w'] '('.$result[$k]['v'].')'; ;
코드 복사


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.