запорожец машина Тьюринга.
Пример и формат записи входа.
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 '
'; ?>