胡子的网志 学习·改变·生活

20八/100

PHP数独生成器

QQ14_thumb.png

昨天晚上整理电脑的时候看到了以前写的一个数独生成器的,正好顺便测试WLW发布blog的事儿,就把这个数独生成器贴过来吧。其实思路很简单

数独用一个二维数组存储,九行九列
定义种子数组$key=array(1,2,3,4,5,6,7,8,9);
先找一个成立的数独,用格子中的数作为键值在$key中取值,定义数组对象$data
shuffle打乱种子数组
这时候数组对象$data便是一个随机的数独了
根据难度每行抽取掉相应个数的数就是一道数独题了

思路很简单,代码实现也简单,如下


<style>
  span{font-size:30px;display:block;float:left;text-align:center;background:#ffeeff;border:solid 1px #ccc;width:40px;height:40px;}

br{clear:both;}

.h{border-bottom:solid 1px #000;}

.w{border-right:solid 1px #000;}

</style>

<h1>Sudoku</h1>

<?php

$key = array(1,2,3,4,5,6,7,8,9);

shuffle($key);

$data = array(

    array($key[8],$key[6],$key[7],$key[2],$key[0],$key[1],$key[5],$key[3],$key[4]),

    array($key[2],$key[0],$key[1],$key[5],$key[3],$key[4],$key[8],$key[6],$key[7]),

    array($key[5],$key[3],$key[4],$key[8],$key[6],$key[7],$key[2],$key[0],$key[1]),

    array($key[6],$key[7],$key[8],$key[0],$key[1],$key[2],$key[3],$key[4],$key[5]),

    array($key[0],$key[1],$key[2],$key[3],$key[4],$key[5],$key[6],$key[7],$key[8]),

    array($key[3],$key[4],$key[5],$key[6],$key[7],$key[8],$key[0],$key[1],$key[2]),

    array($key[7],$key[8],$key[0],$key[1],$key[2],$key[3],$key[4],$key[5],$key[6]),

    array($key[1],$key[2],$key[3],$key[4],$key[5],$key[6],$key[7],$key[8],$key[0]),

    array($key[4],$key[5],$key[6],$key[7],$key[8],$key[0],$key[1],$key[2],$key[3])

);

for($i = 0;$i < 9;$i ++){
      $r_d = array_rand($data,3);

    $data[$i][$r_d[0]] = 0;

    $data[$i][$r_d[1]] = 0;

    $data[$i][$r_d[2]] = 0; 

}

for($i = 0;$i<9;$i++){
      for($j = 0;$j<9;$j ++){

        $c = $data[$i][$j] == 0 ? '&nbsp;':$data[$i][$j];

        $clah = '';

        $claw = '';

        if($i == 2 || $i == 5){

            $clah = 'h';

        }

        if($j == 2 || $j == 5){

            $claw = 'w';

        }

        echo '<span class="'.$clah.' '.$claw.'">'.$c.'</span>';

    }

    echo '<br />';

}

?>

看看效果 Demo

QQ截图未命名[14]

喜欢这个文章吗?

考虑订阅我们的RSS Feed吧!

评论 (0) 引用 (0)

还没有评论.


发表评论


还没有引用.