Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html dir="rtl">
- <head>
- <title>סודוקו</title>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <meta name="viewport" content="height=device-height, width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=2.0, user-scalable=no, target-densitydpi=device-dpi" />
- <script src="../jquery.js"></script>
- <style type='text/css'>
- * {
- padding: 0;
- margin: 0;
- }
- table {
- direction: ltr;
- margin: 50px auto;
- border: 2px solid #000000;
- display: none;
- }
- td {
- border: 1px solid #000000;
- padding: 15px;
- }
- td.blank {
- background-color: #FF0000;
- }
- </style>
- <script>
- var counter;
- $(document).ready(function(){
- $soid = 0;
- $("#next").click(function(){
- $(".sudoku_board").hide();
- $("#" + ++$soid).show();
- });
- $("#perv").click(function(){
- $(".sudoku_board").hide();
- $("#" + --$soid).show();
- });
- //$soid = 50;
- counter = setInterval("ShowNext()",10);
- });
- function ShowNext(){
- $(".sudoku_board").hide();
- $("#" + ++$soid).show(); // on load
- if(!document.getElementById($soid)){
- clearInterval(counter);
- $soid--;
- $("#" + $soid).show();
- }
- }
- </script>
- </head>
- <body>
- <?php
- $sid = 0; // DEBUG, sudoku id
- $killme = 0;
- $sudoku = Array( 1=> Array( 1=> 0, 2=> 0, 3=> 0, 4=> 0, 5=> 0, 6=> 0, 7=> 0, 8=> 0, 9=> 0),
- 2=> Array( 1=> 0, 2=> 0, 3=> 0, 4=> 0, 5=> 0, 6=> 0, 7=> 0, 8=> 0, 9=> 0),
- 3=> Array( 1=> 0, 2=> 0, 3=> 0, 4=> 0, 5=> 0, 6=> 0, 7=> 0, 8=> 0, 9=> 0),
- 4=> Array( 1=> 0, 2=> 0, 3=> 0, 4=> 0, 5=> 0, 6=> 0, 7=> 0, 8=> 0, 9=> 0),
- 5=> Array( 1=> 0, 2=> 0, 3=> 0, 4=> 0, 5=> 0, 6=> 0, 7=> 0, 8=> 0, 9=> 0),
- 6=> Array( 1=> 0, 2=> 0, 3=> 0, 4=> 0, 5=> 0, 6=> 0, 7=> 0, 8=> 0, 9=> 0),
- 7=> Array( 1=> 0, 2=> 0, 3=> 0, 4=> 0, 5=> 0, 6=> 0, 7=> 0, 8=> 0, 9=> 0),
- 8=> Array( 1=> 0, 2=> 0, 3=> 0, 4=> 0, 5=> 0, 6=> 0, 7=> 0, 8=> 0, 9=> 0),
- 9=> Array( 1=> 0, 2=> 0, 3=> 0, 4=> 0, 5=> 0, 6=> 0, 7=> 0, 8=> 0, 9=> 0)
- );
- CreateNumbers(1,1);
- function CreateNumbers($row,$col){
- global $sudoku,$sid,$killme;
- $killme++; // no more infinite loops!
- if($row > 9 || $row < 1){
- return false;
- }
- if($col > 9 || $col < 1){
- return false;
- }
- if($sid > 1000 || $killme > 1000){
- return;
- }
- for($putin = 1; $putin <= 9; $putin++){
- if(CheckNumber($row,$col,$putin)){
- $sudoku[$row][$col] = $putin;
- PrintSudoku($row,$col);
- CreateNumbers($row+1,$col);
- CreateNumbers($row,$col+1);
- }
- }
- }
- // Good location for number?
- function CheckNumber($row,$col,$new_num){
- if(GoodRow($row,$col,$new_num)){ // row ok?
- if(GoodCol($row,$col,$new_num)){ // col ok?
- if(GoodBlock($row,$col,$new_num)){ // block(3x3) ok?
- return true;
- }
- }
- }
- return false;
- }
- // Check a row and decide if the number is ok
- function GoodRow($row,$col,$num){
- global $sudoku;
- for($i = 1; $i <= 9; $i++){
- if($sudoku[$row][$i] == $num){
- return false;
- }
- }
- return true;
- }
- // Check a colume and decide if the number is ok
- function GoodCol($row,$col,$num){
- global $sudoku;
- for($i = 1; $i <= 9; $i++){
- if($sudoku[$i][$col] == $num){
- return false;
- }
- }
- return true;
- }
- // Check a block(3x3) and decide if the number is ok
- function GoodBlock($row,$col,$num){
- global $sudoku;
- $same_row = (int)(($row-1) / 3);
- $same_col = (int)(($col-1) / 3);
- $start_row = (int)(($same_row*3)+1);
- $stop_row = (int)(($same_row+1)*3);
- $start_col = (int)(($same_col*3)+1);
- $stop_col = (int)(($same_col+1)*3);
- for($r = $start_row; $r <= $stop_row; $r++){
- for($c = $start_col; $c <= $stop_col; $c++){
- if($r == $row && $c == $col){
- continue;
- }
- //echo $sudoku[$r][$c]."<br />";
- if($sudoku[$r][$c] == $num){
- return false;
- }
- }
- }
- return true;
- }
- function PrintSudoku($bold_row=0,$bold_col=0){
- global $sudoku,$sid;
- $sid++;
- echo "<table cellspacing='0' class='sudoku_board' id='{$sid}'>\r\n";
- foreach($sudoku as $row_id => $col){
- echo "<tr>\r\n";
- foreach($col as $col_id => $value){
- $blank = ($value == 0)?"class='blank'":"";
- if($row_id == $bold_row && $col_id == $bold_col){
- echo "<td style='background-color: #FFFF00;' {$blank}>{$value}</td>";
- }
- else {
- echo "<td {$blank}>{$value}</td>";
- }
- }
- echo "\r\n</tr>\r\n";
- }
- echo "</table>\r\n\r\n";
- }
- ?>
- <?php PrintSudoku(); ?>
- <button id='next'>הבא</button>
- <button id='perv'>הקודם</button>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement