php – 拼字游戏单词生成器
发布时间:2020-12-13 17:19:03 所属栏目:PHP教程 来源:网络整理
导读:看着我的兄弟在像拼字游戏这样的 iphone游戏中作弊后,我想知道什么是algotithm behing it. 给出一些字母:A B C T E E. 而SQL表中充满了正确的单词. 我如何创建所有字母组合,以便制作一个如下选择: 从单词IN(‘A’,’AT’,…)的单词中选择*,只是从这些组合
看着我的兄弟在像拼字游戏这样的
iphone游戏中作弊后,我想知道什么是algotithm behing it.
给出一些字母:A B C T E E. 而SQL表中充满了正确的单词. 我如何创建所有字母组合,以便制作一个如下选择: 另一种可能的方法是SQL表,每个单词的列中包含每个字母. 例如: c1 c2 c3 c4 这个问题只是为了提供好奇心,并且学习巫婆算法,它可能用于创建所有这些组合(带有完整和部分给定的字母),以便在事后检查它们. 谢谢! 字体:http://icon.cat/worder/wordsfinder 解决方法
要查找所有可能的有效字,请执行以下步骤
>找到所有可能的组合 脚本 $tiles = array( "A","B","C","T","E","E") ; $words = array(); $set = powerSet($tiles,2); $mysql = new mysqli("localhost","root","","word"); $sql = "SELECT id from dic WHERE word = '%s'" ; foreach ($set as $key => $value) { $word = implode("",$value); $wordPermutation = permute($word); foreach($wordPermutation as $keyWord) { if(!in_array($keyWord,$words)) { //if($result = $mysql->query(sprintf($sql,$keyWord))) //{ //var_dump(sprintf($sql,$keyWord)); //if($result->num_rows > 0) //{ $words[] = $keyWord ; //} //} } } } print_r($words); 功能 function powerSet($in,$minLength = 1,$max = 10) { $count = count ( $in ); $members = pow ( 2,$count ); $return = array (); for($i = 0; $i < $members; $i ++) { $b = sprintf ( "%0" . $count . "b",$i ); $out = array (); for($j = 0; $j < $count; $j ++) { if ($b {$j} == '1') $out [] = $in [$j]; } if (count ( $out ) >= $minLength && count ( $out ) <= $max) { $return [] = $out; } } return $return; } function permute($str) { if (strlen($str) < 2) { return array($str); } $permutations = array(); $tail = substr($str,1); foreach (permute($tail) as $permutation) { $length = strlen($permutation); for ($i = 0; $i <= $length; $i++) { $permutations[] = substr($permutation,$i) . $str[0] . substr($permutation,$i); } } return $permutations; } 请注意,我注释了数据库验证部分,以便演示可以工作 见演示 http://codepad.viper-7.com/oG6E6w (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |