加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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表中充满了正确的单词.

我如何创建所有字母组合,以便制作一个如下选择:
从单词IN(‘A’,’AT’,…)的单词中选择*,只是从这些组合中取出正确的单词??

另一种可能的方法是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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读