//header("Content-type: text/plain");
if ($_SERVER['QUERY_STRING']=='about'){
echo "
Это запорожец машина Тьюринга.
Пример и формат записи входа.
q1|q2 0r|q2 1r
q2|q0 1L|q1 0r
Входное слово: 111101
Contact: ...
"; die ();
}
function check($v){
if (!in_array($v['mov0'],array('L','R','S'))) return 'L,R or S in mov0 please';
if (!in_array($v['mov1'],array('L','R','S'))) return 'L,R or S in mov1 please';
if (!in_array($v['ret0'],array('0','1'))) return '0 or 1 in ret0 please';
if (!in_array($v['ret1'],array('0','1'))) return '0 or 1 in ret1 please';
if (strlen($v['id'])<1) return 'commandnameID empty';
if (strlen($v['go0'])<1) return 'commandnameGo0 empty';
if (strlen($v['go1'])<1) return 'commandnameGo1 empty';
return true;
}
function cv($v){
for ($i=0; $i$v) if ($k==$ptr) echo "$c$v"; else echo $v;
echo "\n";
return 1;
}
if (!$_POST) die();
$first='';
$word=$_POST['word'];
if (!cv($word)) die ('bad word');
$list= $_POST['text'];
$list=str_replace("\r",'',$list);
$list = explode("\n", $list);
$cmd=array();
foreach ($list as $k){
if (trim($k)=='') continue;
$v=array();
$s=$k;
While(strpos($s,' ')!==false) $s=str_replace(' ',' ',$s);
//id
$p=strpos($s,'|');
$v['id']=substr($s,0,$p);
$s=substr($s,$p+1);
//go0
$p=strpos($s,' ');
$v['go0']=substr($s,0,$p);
$s=substr($s,$p+1);
//do0
$p=strpos($s,'|');
$v['do0']=substr($s,0,$p);
$s=substr($s,$p+1);
//go1
$p=strpos($s,' ');
$v['go1']=substr($s,0,$p);
$s=substr($s,$p+1);
//do1
//$p=strpos($s,'|');
$v['do1']=$s;
//$s=substr($s,$p+1);
/*preg_match("!(.*?)|(.*?)/s(.*?)|(.*?)/s(.*?)!",$k,$ok);
var_dump($ok);
list($v['all'],$v['id'],$v['go0'],$v['do0'],$v['go1'],$v['do1']) = $ok;
*/
$v['ret0']=strtoupper($v['do0']{0});
$v['mov0']=strtoupper($v['do0']{1});
$v['ret1']=strtoupper($v['do1']{0});
$v['mov1']=strtoupper($v['do1']{1});
if ($first=='') $first=$v['id'];
unset($v['do0'],$v['do1']);
ksort($v);
$r=check($v);
if ($r!==true) die ($r);
//var_dump($v);
$cmd[$v['id']]=$v;
}
echo '';
echo "T\t|\t 0\t\t|\t 1\t\t\n
";
foreach ($cmd as $v) echo "{$v['id']}\t|{$v['go0']}\t {$v['ret0']}\t{$v['mov0']}\t|{$v['go1']}\t {$v['ret1']}\t{$v['mov1']}\t\n";
echo "-------------------\n";
$w=array();
for ($i=0; $iostanoff'; break; }
$newval=$cmd[$c]['ret'.$w[$ptr]];
$newptr=$cmd[$c]['mov'.$w[$ptr]];
$c=$cmd[$c]['go'.$w[$ptr]];
$w[$ptr]=$newval;
if ($newptr=="S") {echo 'ostanoff'; break;}
if ($newptr=="L") $ptr--;
if ($newptr=="R") $ptr++;
if (!isset($w[$ptr])) $w[$ptr]='0';
$loop++;
}
if ($loop>99) echo "/n Terminated; more than 100 loops/movs";
echo '
';
?>