Log Browser > index.php.090215 | |
Recent files:
|
File contains 3002
lines and was last altered on Jul 1 2020
Showing the last 500 lines of this file ( 20 lines 200 lines 500 lines )
$value = get_param( 'value' );
$square = get_param( 'square' );
$mode = get_param( 'mode' );
/*
echo "start act=$action,mode=$mode,";
echo "POST=";
print_r( $_POST);
echo "GET=";
print_r($_GET);
*/
# for search engines
if ( ereg('^66_249_71', $ip ) ) {
$action = 'About';
sleep( 2 );
}
if ( $action == '' ) { $action = $mode; }
if ( $mode == '' ) { $mode = $action; }
if ( $mode == '' ) { $mode = 'Play'; }
if ( in_array( $mode,array( 'Clear','Create','Text' ) ) ) {
$mode = 'Create';
}
if ( $action == '' and $value == '' ) {
load_state( $ip );
create_new_sudoku( );
save_state($ip);
$action = 'About';
} else {
load_state( $ip );
$msg = 'Select a free square and then a number';
}
#
# should the messages be more sparse?
#
$txt = "action=$action sq=$square val=$value,mode=$mode,";
#log_msg( $txt );
#
# do actions
#
if ( $action == 'Finish' ) {
$orig[83]=-1;
restart_puzzle();
complete_puzzle();
} elseif ( $action == 'Print' ) {
$mode = 'Play';
} elseif ( $action == 'DELETE' ) {
if ( $orig[81] == 'Random' ) {
$str = $orig[82];
} else {
$str = implode( ',', array_slice($orig,0,81) );
}
$sql = "delete from sudoku_pos where board = '$str' limit 1 ";
run_sql( $sql );
$level = 'Next';
$mode = 'Play';
create_new_sudoku( );
$action = 'Pause';
} elseif ( $action == 'Get' ) {
$level = '';
create_new_sudoku( );
$mode = 'Play';
$action = 'Pause';
} elseif ( $action == 'Batch' or $action == 'List' ) {
$lines = array();
initialise_lines();
$start_time = time();
$cnt = 1;
echo "<html>
<body link=#3333FF alink=#3333FF vlink=#3333FF bgcolor=$background_color>
<a href=$web_page>Back</a>\n";
if ( $action == 'Batch' ) {
echo "or <a href=$web_page?action=Batch>process more puzzles</a>\n";
$sql = "select board,state from sudoku_pos order by created_time";
} else {
$sql = "select board,state from sudoku_pos order by state, created_time";
}
$result = run_sql( $sql );
while( list( $str,$level ) = mysql_fetch_row( $result ) ) {
restart_puzzle();
$orig = explode(',',$str);
echo "<hr><table width=99%><tr><td width=25%><center>
<a href=$web_page?action=Get&level=$level&str=$str>$level puzzle $cnt</a>
</center>
<table border=1>";
for( $c=0;$c<9;$c++ ) {
echo "<tr>";
for( $i=0; $i<9;$i ++ ) {
echo "<td bgcolor=$col_0_play width=14 height=14>";
$p=$c*9 + $i;
if ( $orig[$p] > 0 ) {
print( $orig[$p] );
} else {
print( "." );
}
echo "</td>";
}
print( "</tr>\n" );
}
print( "</table>\n" );
$cnt ++;
if ( $action == 'Batch' ) {
complete_puzzle();
echo "</td><td valign=top width=30%><ul>\n";
$msg = ereg_replace( '^.*left>', '<br>', $msg );
$tmp = explode( '<br>',$msg );
$c = 0;
foreach( $tmp as $t ) {
if ( $c > 30 ) {
echo "</ul></font></td><td valign=top width=30%><font size=-3><ul>\n";
$c=0;
}
if ( strlen($t) > 5 ) {
echo "<li>$t\n";
$c++;
}
}
echo "</ul></font></td></tr></table>\n";
$sql = "update sudoku_pos set created_time='" .
date( 'Y-m-d' ) . " " . date( 'H:i' ) .
"' where board='$str'";
run_sql( $sql );
# stop after 20 secs
if ( time() - $start_time > 20 ) {
break;
}
sleep( 1 );
} else {
print( "</td><td><table><tr><td><code>" );
for( $c=0;$c<9;$c++ ) {
if ( $c % 3 == 0 ) { echo "+---+---+---+<br>\n"; }
for( $i=0; $i<9;$i ++ ) {
if ( $i %3 == 0 ) { echo "|"; }
$p=$c*9 + $i;
if ( $orig[$p] > 0 ) {
print( $orig[$p] );
} else {
print( "." );
}
}
print( "|<br>\n" );
}
echo "+---+---+---+";
echo "</code></td></tr></table></td></tr></table>\n";
}
}
if ( $action == 'Batch' ) {
echo "<a href=$web_page?action=Batch>process more puzzles</a>\n";
}
echo "</body></html>\n";
exit;
} elseif ( $action == 'Save' ) {
$mode = 'Play';
$str = get_param( 'str' );
if ( $str > '' ) {
# clear board
for( $c=0; $c<81; $c++ ) {
$orig[$c] = 0;
}
# if a shorter string then no gaps between digits
if ( strlen( $str ) < 200 ) {
# clean up the string
$str = preg_replace('/\s+/',' ',$str);
$str = ereg_replace( '\|','',$str );
$str = ereg_replace( '[+][-]+','',$str );
$str = ereg_replace( '[-]+[+]','',$str );
# search for the most often occuring character
# and assume this is the empty square char
$bsf_cnt = 0;
$bsf_chr = '+';
foreach (count_chars($str, 1) as $i => $val) {
if ( $val > $bsf_cnt ) {
$bsf_cnt = $val;
$bsf_chr = (string) chr($i);
}
}
# remove anuthing other than digits 1-0 and empty square char
$keep = '[^' . "1-9${bsf_chr}" . ']';
$str = ereg_replace( $keep,'',$str );
# populate the board
for( $c=0; $c<81; $c++ ) {
if ( substr( $str,$c,1 ) == $bsf_chr || strlen( $str ) < $c) {
$orig[$c] = 0;
} else {
$orig[$c] = substr( $str,$c,1 );
}
}
} else {
# prepare string
$str = ereg_replace( '\|',' ',$str );
$str = preg_replace('/\s+/',' ',$str);
$str = trim($str);
$words = explode( " ",$str );
$i = 0;
$p = 0;
$word = current($words);
while( $word > '' ) {
# get word
if ( strlen( $word ) == 1 && $word >= 1 and $word <= 9 ) {
$orig[ $p++ ] = $word;
} elseif ( $word > 9
or eregi( 'a', $word )
or eregi( '[1-9a].*-', $word )
or in_array( $word, array( '-', '+', '_', '.' ) ) ) {
$orig[ $p++ ] = 0;
}
$word = next($words);
}
}
}
restart_puzzle();
save_state($ip);
$action = 'Pause';
} elseif ( $value > '' ) {
# check square clicked
if ( $square >= 0 and $square <= 80 ) {
if ( $mode == 'Create' ) {
$sq[$square] = array( $value );
$board[$square] = 0;
}
$flg = 0;
foreach( $lines as $line ) {
$type = array_shift( $line );
if ( in_array( $square,$line ) ) {
foreach( $line as $p ) {
if ( $board[$p] == $value ) {
$flg = 1;
$msg = "<font color=red>There is a $value already " .
"in that $type</font>";
}
}
}
}
if ( $flg == 0 ) {
play_move( $square,$value );
if ( $mode == 'Create' ) {
$pos = array(99);
$val = array(99);
$orig = $board;
$square = ($square + 1) %81;
}
}
} else {
$msg = "<font color=red>You must select a square and then choose a value</font>";
}
} elseif ( $action == 'Empty' && $square >= 0 ) {
if ( $square >= 0 and $square <= 80
and $board[$square] > 0
&& ( in_array( $square,$pos ) or count($pos) == 1 ) ) {
$board[$square] = 0;
$orig[$square] = 0;
init_options();
if ( count($pos) == 1 ) {
$action = 'Create';
} else {
$action = 'Pause';
}
# remove from playlist
$tmp = array_search( $square, $pos );
if ( $tmp > 0 ) {
$pos[$tmp] = 82;
$val[$tmp] = 0;
}
save_state($ip);
}
} elseif ( $action == 'New' or $action == 'Quit' ) {
$level = '';
create_new_sudoku( );
$mode = 'Play';
$action = 'Pause';
} elseif ( $action == 'Next' ) {
$level = 'Next';
$mode = 'Play';
create_new_sudoku( );
$action = 'Pause';
} elseif ( $action == 'Restart' ) {
$mode = 'Play';
restart_puzzle();
$orig[83] = time();
} elseif ( $action == 'Normal' ) {
$mode = 'Play';
$last_move = -1;
$info_screen = 0;
$mode='Play';
} elseif ( $action == 'Hint' ) {
$orig[83]=-1;
if ( $mode != 'Info' ) {
$mode = 'Info';
$last_move = -1;
$info_screen = 1;
$old_sq = $sq;
$old_pos = $pos;
$old_val = $val;
$old_board = $board;
$old_orig = $orig;
make_a_move( 4 );
$sq = $old_sq;
$pos = $old_pos;
$val = $old_val;
$board = $old_board;
$orig = $old_orig;
# show hint
if ( finished() ) {
$msg = "The puzzle is finished !";
} elseif ( $last_move == -1 ) {
$msg = ereg_replace( ').*$', ')Can you see a move here?',$msg );
} else {
$msg = "($last_move)Can you see a move here?";
}
$orig[83]=-1;
} else {
$mode='Play';
}
} elseif ( $action == 'Play' || $action == 'Step' ) {
$mode = 'Play';
$orig[83]=-1;
# square is set to 99 on first call so we can reset the board
if ( $action == 'Step' && $square != 99 ) {
restart_puzzle();
$square = 0;
$total_comp_time = 0;
$msg = 'Sit back and watch the puzzle get solved';
} else {
$last_move = -1;
$prev_opt_cnt = count_options_left();
$start_time = time();
make_a_move( 4 );
$total_comp_time += (time() - $start_time);
}
if ( $testing ) { echo $last_move; }
if ( finished() ) {
save_in_db( 0 );
if ( ! finished() ) {
$msg = "Oh dear, I'm stuck !!!";
} else {
$msg = "finished !";
log_msg( $msg );
}
$action = 'Pause';
}
} elseif ( $action == 'Create' or $action == 'Clear' ) {
$mode = 'Create';
$orig[83]=-1;
if ( $action == 'Clear' ) {
for( $c=0; $c<81; $c++ ) {
$board[$c] = 0;
$orig[$c] = 0;
}
init_options();
$action = 'Create';
}
$pos = array(99);
$val = array(99);
$orig = $board;
$orig[81] = '';
$msg = "To edit select squares and enter starting values";
}
save_state($ip);
start_screen_html();
print_board( );
print( "<input type=hidden name=mode value=$mode>" );
if ( $action == 'About' ) {
$mode = 'Play';
$action = 'Pause';
}
end_screen_html();
?>
|