All pastes #617572 Raw Edit

Sudoku generator

public php v1 · immutable
·published 2007-07-13 10:23 UTC
rendered paste body
<?php$puzzle=generate(30);$unsolved=explode(",", $puzzle[1]);$count=0;$puzzleoutput="<pre><table border=2>";foreach($unsolved as $element) {    if ($count==9) {        $puzzleoutput.="</tr>";        $count=0;    }    if ($count==0) {        $puzzleoutput.="<tr border=2>";    }    if ($element!=NULL) {        $puzzleoutput.="<td border=2>".$element."</td>";    } else {        $puzzleoutput.="<td>&nbsp;</td>";    }    $count++;}$puzzleoutput.="</table></pre>";echo $puzzleoutput;function generate($removed) {	$origin=array();	array_push($origin, array(1,2,3,4,5,6,7,8,9));	array_push($origin, array(4,5,6,7,8,9,1,2,3));	array_push($origin, array(7,8,9,1,2,3,4,5,6));	array_push($origin, array(2,3,4,5,6,7,8,9,1));	array_push($origin, array(5,6,7,8,9,1,2,3,4));	array_push($origin, array(8,9,1,2,3,4,5,6,7));	array_push($origin, array(3,4,5,6,7,8,9,1,2));	array_push($origin, array(6,7,8,9,1,2,3,4,5));	array_push($origin, array(9,1,2,3,4,5,6,7,8));	for($i=0; $i<rand(2,$removed); $i++) {		switch(rand(1,2)) {			case 1:				$origin=switchRows($origin);				break;			case 2:				$origin=switchGroups($origin);				break;		}	}	$solved=array();	foreach($origin as $row) {		foreach($row as $cell) {			array_push($solved, $cell);		}	}		$unsolved=$solved;	for($i=0; $i<$removed;) {		$key=rand(0, 80);		if($unsolved[$key]!=NULL) {			$unsolved[$key]=NULL;			$i++;		}	}	return array(0, implode(",",$unsolved), implode(",",$solved));}function switchRows($origin) {	switch(rand(1,3)) {	case 1:		$swapfirst=$origin[0];		$swapsecond=$origin[2];		$origin[0]=$swapsecond;		$origin[2]=$swapfirst;		break;	case 2:		$swapfirst=$origin[3];		$swapsecond=$origin[5];		$origin[3]=$swapsecond;		$origin[5]=$swapfirst;		break;	case 3:		$swapfirst=$origin[6];		$swapsecond=$origin[8];		$origin[6]=$swapsecond;		$origin[8]=$swapfirst;		break;	}	return $origin;}function switchGroups($origin) {	switch(rand(1,3)) {	case 1:		$swap1=$origin[0];		$swap2=$origin[1];		$swap3=$origin[2];		$swap4=$origin[3];		$swap5=$origin[4];		$swap6=$origin[5];		$origin[0]=$swap4;		$origin[1]=$swap5;		$origin[2]=$swap6;		$origin[3]=$swap1;		$origin[4]=$swap2;		$origin[5]=$swap3;		break;	case 2:		$swap1=$origin[0];		$swap2=$origin[1];		$swap3=$origin[2];		$swap4=$origin[6];		$swap5=$origin[7];		$swap6=$origin[8];		$origin[0]=$swap4;		$origin[1]=$swap5;		$origin[2]=$swap6;		$origin[6]=$swap1;		$origin[7]=$swap2;		$origin[8]=$swap3;		break;	case 3:		$swap1=$origin[6];		$swap2=$origin[7];		$swap3=$origin[8];		$swap4=$origin[3];		$swap5=$origin[4];		$swap6=$origin[5];		$origin[6]=$swap4;		$origin[7]=$swap5;		$origin[8]=$swap6;		$origin[3]=$swap1;		$origin[4]=$swap2;		$origin[5]=$swap3;		break;	}	return $origin;}?>