"; $starts=mt_rand(1,3); $ends=mt_rand(9,12); $row1= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row2= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row3= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row4= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row5= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row6= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row7= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row8= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row9= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row10= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row11= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); $row12= array(1=> 0,2=>0,3=>0,4=>0,5=>0,6=>0,7=>0,8=>0,9=>0,10=>0,11=>0,12=>0 ); /* From starting point, move, precluding possibility of backwards, and remember all places gone, in order */ if ($start==1 ||$start==3){ $curcol=$starts; if($start==1){ $row12[$ends]+=$eadd; $endspot="12#$ends"; } else { $row1[$ends]+=$eadd; $endspot="1#$ends"; } } else { $currow=$starts; if ($start==2){ $reval="row{$ends}"; ${$reval}[1]+=$eadd; $endspot="$ends#1"; } else { $reval="row{$ends}"; ${$reval}[12]+=$eadd; $endspot="$ends#12"; } } //mover and movec are primary vector $rval="row{$currow}"; ${$rval}[$curcol]+=$add; $move[]="$currow#$curcol"; $ovecs=0; $lastmove=$end; for ($count=1;$count>0;$count++) { //echo "$currow, $curcol
"; $top="yes"; $bot="yes"; $right="yes"; $left="yes"; //figure out what cannot be used (from borders or other spaces already visited) if($currow==1) { $top="no"; // echo "no top/b
"; } else if($currow==12) { $bot="no"; // echo "no down/b
"; } if($curcol==1) { $left="no"; // echo "no left/b
"; } else if($curcol==12) { $right="no"; // echo "no right/b
"; } $crp1=$currow+1; // echo "
rp1 $crp1"; $crm1=$currow-1; // echo "
rm1 $crm1"; $ccp1=$curcol+1; // echo "
cp1 $ccp1"; $ccm1=$curcol-1; // echo "
cm1 $ccm1"; $acount=0; $bigun=$move; //if ($acount<$ovecs ||$bt==1) $bigun=array_merge($move,$ovec0); while ($acount<=$ovecs) { if($acount<$ovecs) { $current="ovec{$acount}"; $bigun=array_merge($bigun,$$current); $acount++; } if($bt==1) { $current="ovec{$acount}"; $bigun=array_merge($bigun,$$current); $acount++; } else { $acount++; } } //print_r($bigun); $precount=count($bigun); // if($precount!=count($move)) echo "problem!"; // echo $precount; if ($precount==144) { // echo "All done!"; break; } for($mcount=0;$mcount<$precount; $mcount++) { if($bigun[$mcount]=="$currow#$ccm1") { $left="no"; //echo "no left
"; } if($bigun[$mcount]=="$crm1#$curcol") { $top="no"; //echo "no top
"; } if($bigun[$mcount]=="$currow#$ccp1") { $right="no"; //echo "no right
"; } if($bigun[$mcount]=="$crp1#$curcol") { $bot="no"; // echo "no down
"; } } // populate array with viable possibilities if($top=="yes") $dir[]=1; if($right=="yes") $dir[]=2; if($bot=="yes") $dir[]=3; if($left=="yes") $dir[]=4; //print_r($dir); // if one choice, take it, if none backwards $arcount=count($dir); if($arcount==1) { $newmove=$dir[0]; if($bt==1) { $bt=0; $ovecs++; //echo "ovec is closed;
"; } } //the big one. if($arcount==0) { // we now are at the last of move, slowly transmitting it to a new array carrying the incorrect vector // also need to add correct number to row arrays (later) if ($bt==0) { $newcurr=array_pop($move); $currovec="ovec{$ovecs}"; ${$currovec}[]=$newcurr; // print_r($$currovec); $newmove=5; $newcurr=end($move); $newcurra=explode("#",$newcurr); //print_r($newcurra); $currow=$newcurra[0]; $curcol=$newcurra[1]; //echo "trapped1, new row is $currow and col is $curcol"; $bt=1; } else { // if we didn't pop last time, but didn't close ovec $newcurr=array_pop($move); $currovec="ovec{$ovecs}"; ${$currovec}[]=$newcurr; //print_r($$currovec); $newmove=5; // echo "trapped#, new row is $currow and col is $curcol"; $newcurr=end($move); $newcurra=explode("#",$newcurr); //print_r($newcurra); $currow=$newcurra[0]; $curcol=$newcurra[1]; // echo "trapped#, new row is $currow and col is $curcol"; } if ($count<99) $count--; } if($arcount>1){ $rand=mt_rand(1,$arcount); $rand-=1; $newmove=$dir[$rand]; if($bt==1) { $bt=0; $ovecs++; //echo "ovec is closed
"; } //echo $newmove; } $oldrow=$currow; $oldcol=$curcol; switch($newmove): case 1: $currow-=1; $addy=1; $naddy=4; break; case 2: $curcol+=1; $naddy=8; $addy=2; break; case 3: $currow+=1; $naddy=1; $addy=4; break; case 4: $curcol-=1; $naddy=2; $addy=8; break; case 5: $never="mind"; //echo " it is 5 "; break; endswitch; //print_r($move); if($never=="mind") {$newmove=$nmove; $never="loser"; } else { $move[]="$currow#$curcol"; $oldarray="row$oldrow"; ${$oldarray}[$oldcol]+=$addy; $newarray="row$currow"; ${$newarray}[$curcol]+=$naddy; } $lastmove=$newmove; //echo "
ovecs is $ovecs "; // now just add corrrect values to correct cells; unset($dir); unset($bigun); } //echo "$currow, $curcol
"; //echo "

"; //print_r($move); //echo "

"; //print_r($row1); // all done, now display something for ($count=1;$count<=12;$count++) { $now="row$count"; echo "
"; foreach($$now as $whatev) { echo ""; } echo "
"; } ?>