";
}
$ip=@$REMOTE_ADDR;
$ip=$_SERVER['REMOTE_ADDR'];
$kpi=$ip=='173.34.161.242';
//if (!$kpi)
{
$send=true;
$referer=@$_SERVER['HTTP_REFERER'];
$accept=$_SERVER['HTTP_ACCEPT'];
$agent=$_SERVER['HTTP_USER_AGENT'];
if (strpos(strtoupper($referer),'?GO=')) $send=false;
if (strpos(strtoupper($referer),'HOMEWORDS')) $send=false;
$referer=str_replace('http://','',$referer);
$s=print_r($_SERVER,true);
if (strpos(strtoupper($s),'SPIDER')) $send=false;
if (strpos(strtoupper($s),'BOT')) $send=false;
if (strpos(strtoupper($s),'SLURP')) $send=false;
if (strpos(strtoupper($s),'ASK J')) $send=false;
if (strpos(strtoupper($s),'MEDIAPARTNERS-GOOGLE')) $send=false;
//if ($send)
mm('mark@telmasters.com','mark@telmasters.com',"HomeWords hit from $referer ac=$accept ag=$agent",' s='.$s.' '.implode(" \n ", $_SERVER));
}
// seed with microseconds
function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
srand(make_seed());
require 'connect.php';
$lastxx=99;
function boldit($s,$k)
{
$S=$s;
for ($i=0;$i' ')
$S=str_replace($K,"$K",$S);
}
return "$S";
}
function GetWord($a)
{
global $keys;
global $code;
global $times;
global $z;
global $n;
global $language;
global $lastxx;
$k=' '.$keys;
//if ($times==1) { echo "$k=$keys "; }
$nn=100; // try at most 100 times , just dont loop forever
while ($nn>0)
{
$nn--;
if ($nn==0)
{
echo "Sorry, an unexpected error has occured. Please try again with different options.";
mymail("markpkolb@gmail.com","markpkolb@gmail.com","Lost Letters $n x $z ERROR ","$q $nn","");
exit;
}
$xx=$lastxx;
while ($xx==$lastxx) $xx=rand(0,$z-1);
$lastxx=$xx;
if ($z==5)
{
switch ($xx)
{
case 0: $mask=$a.'____'; break;
case 1: $mask='_'.$a.'___'; break;
case 2: $mask='__'.$a.'__'; break;
case 3: $mask='___'.$a.'_'; break;
case 4: $mask='____'.$a.''; break;
}
}
if ($z==6)
{
switch ($xx)
{
case 0: $mask=$a.'_____'; break;
case 1: $mask='_'.$a.'____'; break;
case 2: $mask='__'.$a.'___'; break;
case 3: $mask='___'.$a.'__'; break;
case 4: $mask='____'.$a.'_'; break;
case 5: $mask='_____'.$a.''; break;
}
}
if ($z==7)
{
switch ($xx)
{
case 0: $mask=$a.'______'; break;
case 1: $mask='_'.$a.'_____'; break;
case 2: $mask='__'.$a.'____'; break;
case 3: $mask='___'.$a.'___'; break;
case 4: $mask='____'.$a.'__'; break;
case 5: $mask='_____'.$a.'_'; break;
case 6: $mask='______'.$a.''; break;
}
}
if ($z==8)
{
switch ($xx)
{
case 0: $mask=$a.'_______'; break;
case 1: $mask='_'.$a.'______'; break;
case 2: $mask='__'.$a.'_____'; break;
case 3: $mask='___'.$a.'____'; break;
case 4: $mask='____'.$a.'___'; break;
case 5: $mask='_____'.$a.'__'; break;
case 6: $mask='______'.$a.'_'; break;
case 7: $mask='_______'.$a.''; break;
}
}
if ($z==9)
{
switch ($xx)
{
case 0: $mask=$a.'________'; break;
case 1: $mask='_'.$a.'_______'; break;
case 2: $mask='__'.$a.'______'; break;
case 3: $mask='___'.$a.'_____'; break;
case 4: $mask='____'.$a.'____'; break;
case 5: $mask='_____'.$a.'___'; break;
case 6: $mask='______'.$a.'__'; break;
case 7: $mask='_______'.$a.'_'; break;
case 8: $mask='________'.$a.''; break;
}
}
$q = "Select Root from Words where WordLength=$z and LEVEL>0 and LEVEL<9 and Root like '$mask'";
if ($language<>'')
$q = "Select Alpha from Words$language where WordLength=$z and Alpha like '$mask'";
$result = mysql_query($q);
if (!$result)
{
echo "Sorry, an unexpected error has occured. Please try again with different options. ";
mymail("markpkolb@gmail.com","markpkolb@gmail.com","Lost Letters $n x $z ERROR ","$q $nn","");
exit;
}
//echo "$q";
//if ($times==1) exit;
//echo "$q ";
$nrows = mysql_num_rows($result);
$r=rand(0,$nrows-1);
//echo "$r $nrows ";
for ($i=0; $i < $nrows; $i++)
{
$row = mysql_fetch_array($result);
if ($i>=$r)
{
$w=$row[0];
$ok=true;
for ($x=0; $x<$z; $x++)
if ($x<>$xx)
if (strpos($k,substr($w,$x,1))>0) $ok=false;
if ($ok)
{
$code=$code.$w;
return($w);
}
}
if ($i>$r+10) break;
}
}
}
if ($n<>'' || $z<>'')
{
if (!$n) $n=5;
if (!$z) $z=5;
if ($z<5) $z=5;
if ($z>9) $z=9;
if ($n>9) $n=9;
if ($n<4) $n=4;
$akeyz=array('e','b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z');
$Words=array();
$Clues=array();
$code='';
$akeys=array();
$akeys=$akeyz;
$keys='';
$k=$n;
if ($n*$z>20) $k=5;
if ($n*$z>25) $k=6;
if ($n*$z>32) $k=7;
if ($n*$z>40) $k=8;
if ($n*$z>50) $k=9;
while (strlen($keys)<>$k)
{
$r=rand(0,count($akeys));
if (@$akeys[$r]<>'')
{
$keys=$keys.$akeys[$r];
$akeys[$r]='';
}
}
$s=GetWord(chr(ord(substr($keys,0,1))));
$Words[]=strtoupper($s);
$s=GetWord(chr(ord(substr($keys,1,1))));
$Words[]=strtoupper($s);
$s=GetWord(chr(ord(substr($keys,2,1))));
$Words[]=strtoupper($s);
$s=GetWord(chr(ord(substr($keys,3,1))));
$Words[]=strtoupper($s);
if ($n>4)
{
$s=GetWord(chr(ord(substr($keys,4,1))));
$Words[]=strtoupper($s);
}
if ($n>5)
{
$s=GetWord(chr(ord(substr($keys,5,1))));
$Words[]=strtoupper($s);
}
if ($n>6)
{
$s=GetWord(chr(ord(substr($keys,6,1))));
$Words[]=strtoupper($s);
}
if ($n>7)
{
$s=GetWord(chr(ord(substr($keys,7,1))));
$Words[]=strtoupper($s);
}
if ($n>8)
{
$s=GetWord(chr(ord(substr($keys,8,1))));
$Words[]=strtoupper($s);
}
$wpx='800px';
if ($mobile) $wpx='460px';
echo "
";
echo "
Drag the following LOST LETTERS ";
$s=$Words[0].$Words[1].$Words[2].@$Words[3].@$Words[4].@$Words[5].@$Words[6].@$Words[7].@$Words[8];
$k=strtoupper(" $keys");
for ($a='A'; $a<='Z'; $a++)
{
for ($i=0; $i<$n*$z; $i++)
if (strpos($k,$a)===false)
if (substr($s,$i,1)==$a)
echo "$a ";
}
$NA=array('','','','','four','five','six','seven','eight','nine','ten');
$NN=$NA[$n];
echo " into the grid below to make $NN $z-letter $language words, using the patterns in the clue boxes below.
";
echo "
";
$Cubes=Array();
// build cube
// 1 2 3
// 4 5 6
// 7 8 9
for ($i=0; $i<$n; $i++)
for ($j=0; $j<$z; $j++)
{
$cube=Array(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ');
// horizontal
$r=$j;
$q='';
while ($r==$j) $r=rand(0,$z-1);
$leftof=' left of '; $lo=2;
$ll='…';
if (abs($r-$j)==1) { $leftof=''; $lo=1; $ll=''; }
if ($r<$j)
{
$row=1+$lo;
$c1=''.substr($Words[$i],$r,1).''.$leftof.''.substr($Words[$i],$j,1).' L ';
$cube[1]=substr($Words[$i],$r,1);
$cube[2]=$ll;
$cube[1+$lo]=substr($Words[$i],$j,1);
}
if ($r>$j)
{
$row=1;
$c1=''.substr($Words[$i],$j,1).''.$leftof.''.substr($Words[$i],$r,1).' R ';
$cube[1]=substr($Words[$i],$j,1);
$cube[2]=$ll;
$cube[1+$lo]=substr($Words[$i],$r,1);
}
// vertical
$r=$i;
while ($r==$i) $r=rand(0,$n-1);
$immed=''; $im=6; $ii='≡';
if (abs($r-$i)==1) { $immed=' immediately '; $im=3; $ii=''; }
if ($r>$i)
{
$c2=''.substr($Words[$i],$j,1).''." $immed above ".''.substr($Words[$r],$j,1).' A ';
$cube[$row+3]=$ii;
$cube[$row+$im]=substr($Words[$r],$j,1);
}
if ($r<$i)
{
$c2=''.substr($Words[$i],$j,1).''." $immed below ".''.substr($Words[$r],$j,1).' B ';
$cube[7]=$cube[1]; $cube[8]=$cube[2]; $cube[9]=$cube[3];
$cube[1]=' ';$cube[2]=' ';$cube[3]=' ';
$cube[$row]=substr($Words[$r],$j,1);
$cube[$row+3]=$ii;
//$cube[$row-$im]=substr($Words[$i],$j,1);
}
$Clues[]=$c1.', '.$c2;
$Cubes[]=$cube;
}
// position known letters
$keys=strtoupper($keys);
$Known='';
for ($i=0; $i<$n; $i++)
for ($j=0; $j<$z; $j++)
{
if ( (substr($Words[$i],$j,1)<>substr($keys,0,1)) &&
(substr($Words[$i],$j,1)<>substr($keys,1,1)) &&
(substr($Words[$i],$j,1)<>substr($keys,2,1)) &&
(substr($Words[$i],$j,1)<>substr($keys,3,1)) &&
(substr($Words[$i],$j,1)<>substr($keys,4,1)) &&
(substr($Words[$i],$j,1)<>substr($keys,5,1)) &&
(substr($Words[$i],$j,1)<>substr($keys,6,1)) &&
(substr($Words[$i],$j,1)<>substr($keys,7,1)) &&
(substr($Words[$i],$j,1)<>substr($keys,8,1)) )
{
$Known=$Known.' ';
}
else
{
$Known=$Known.substr($Words[$i],$j,1);
}
}
// show the grid
echo "
";
for ($i=0; $i";
for ($j=0; $j<$z; $j++)
{
$W=substr($Known,$i*$z+$j,1);
if (trim($W)<>'')
echo "
$W
";
else
echo "
_
";
}
}
echo "
";
// shuffle the clues
$Klues=array();
$Kubes=array();
while (count($Klues)<>count($Clues))
{
$r=rand(0,count($Clues));
if (@$Clues[$r]<>'')
{
$Klues[]=$Clues[$r];
$Kubes[]=$Cubes[$r];
$Clues[$r]='';
$Cubes[$r]='';
}
}
//print_r($Klues);
//print_r($Kubes);
echo "
Each clue box below contains a pattern for orienting the lost letters.
Tap a box after you have used it's pattern to hide it.
";
echo "
";
$points=round($n*$z + $n*$z / 3);
echo "
Turns Left: $points
";
echo "
";
echo "
";
if ($mobile) $x15=7;
$clue=0;
$P1=''; $P2='';
for ($i=0; $i";
$cube=$Kubes[$i];
for ($j=1; $j<9; $j++)
if ($cube[$j]==' ') $cube[$j]=' ';
if (trim($cube[2].$cube[5].$cube[8])==' ')
{
$cube[2]='';$cube[5]='';$cube[8]='';
}
$echo.=boldit($cube[1].$cube[2].$cube[3],$Known);
$PMR.=$cube[1].$cube[2].$cube[3];
if (trim($cube[4].$cube[5].$cube[6])<>' ')
if (trim($cube[4].$cube[5].$cube[6])<>' ')
{
$echo.= " ";
$echo.=boldit($cube[4].$cube[5].$cube[6],$Known);
$PMR.=$cube[4].$cube[5].$cube[6];
}
if (trim($cube[7].$cube[8].$cube[9])<>' ')
{
$echo.= " ";
$echo.=boldit($cube[7].$cube[8].$cube[9],$Known);
$PMR.=$cube[7].$cube[8].$cube[9];
}
else $PMR.='---';
$echo.= "
";
if (@$sc<>'')
{
$f=1;
if ($n*$z<43) $f=2;
echo "";
for ($i=0; $i";
echo "";
}
// stick a button here
// [Solution]
// to regenerate table with answer
//$code=" $code ";
//echo "
Each horizontal grid line holds just one word. Letters already in the grid are unique. Missing letters are above the grid.
Patterns are presented in boxes below the grid.
Using these patterns, drag a missing letter from the top of the puzzle into the grid.
If the pattern includes dots or bars, the letters are somewhere in the row (...) or column (bars) but NOT ADJACENT.
If the clue is a pair of letters (eg SE TR ZI), they must be placed ADJACENT in the grid (up or down as indicated).
If you have placed wrongly, tap the letter to return it.
Look for pairs of letters that match one of the starter letters first.
Start with double letters in the patterns.
Starter letters (those already shown in the grid) are not duplicated.
Use process of elimination for guessing some letter positions.
Look for junctions of known letters.