20八/100
PHP数独生成器
昨天晚上整理电脑的时候看到了以前写的一个数独生成器的,正好顺便测试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 ? ' ':$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
喜欢这个文章吗?
CBD夜景 »
« linux 自动备份blog