Программная модель машины Тьюринга




КУРСОВОЙ ПРОЕКТ

по дисциплине «Дискретные структуры»

на тему:

Формирование формального определения и написание программы, реализующей работу машины Тьюринга (Javascript)


 

Целью данной курсовой работы является формирование формального определения и написание программы, реализующей работу машины Тьюринга. В рамках курсовой работы предусмотрено изучение методик языка Javascript по формализации и решению поставленной задачи, технологических приемов разработки программ на языке Javascript, HTML, CSS.

Результатом курсовой работы является html страница, которая демонстрирует работу поставленной задачи в полном объёме.

МАШИНА ТЬЮРИНГА, ВРЕМЕННАЯ СЛОЖНОСТЬ, АЛФАВИТ, ЛЕНТА, ЯЗЫК, РАСПОЗНАВАНИЕ, ПРОТОКОЛ, ПРИНАДЛЕЖНОСТЬ


 

Содержание

 

Введение

1. Постановка задачи

2. Формально определение машины Тьюринга

3. Программная модель машины Тьюринга

4. Протоколы работы машины Тьюринга

Вывод

Список литературы

Приложения


 

Введение

 

Алгоритм можно определить как точное предписание о выполнении каких-либо действий. Существует множество способов формального представления алгоритма. Например, машины Тьюринга, машины Поста, цепи Маркова. машина тьюринг программа язык

Машина Тьюринга в качестве формального представления алгоритма была предложена английским математиком Аланом Тьюрингом в 1937 году. Машина Тьюринга это простой точный объект, который может являться объектом математического исследования. Любой алгоритм (были выработаны различные определения алгоритмов и в итоге все они эквивалентны между собой) может быть реализован машиной Тьюринга.

Существует множество разновидностей машин Тьюринга: распознающие, считающие, с накапливающими состояниями и т.д. В общем говоря машина Тьюринга это совокупность шести объектов:

 

T=(K, å, G, d, F, q0),

 

где K, å, G - конечные множества, множество состояния, входной алфавит (записываются слова подлежащие распознанию), ленточный алфавит.

F - конечное состояние головки машины Тьюринга.

Представленная курсовая работа посвящена распознающим машинам Тьюринга, как наиболее часто используемому классу машин Тьюринга.


 

Постановка задачи

 

Необходимо формально определить машину Тьюринга, распознающую язык

= {wÎ{0, 1}* іw не содержит 3-х идущих подряд единиц}

 

Проверить правильность составления машины Тьюринга на протоколах.

Реализовать программную модель машины Тьюринга.

Формально определение машины Тьюринга

 

q1->1q2R

1q2->1q3R

q3->1q4

q4->BSTOP

q1->0q1R

q2->0q2R

q3->0q3R->BSTOP

 

K - множество состояний;

 

K={q2, q3, }.

 

S - входной алфавит; S={0, 1}.

Г - ленточный алфавит; Г = {0, 1}.

Q1 - начальное состояние.

В - пустое множество.

STOP- состояние полной остановки машины;

 

Программная модель машины Тьюринга

 

Содержание файла javascript.js

Файл содержит основные функции, реализующие работу программы.

 

<p style="line-height: 100%"><font size="6"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Документ без названия</title>

<link href="style.css" rel="stylesheet" type="text/css">

<script type="text/javascript">ctlTape;ctlProgram;ctlErrorType;ctlErrorMessage;ctlConfig;ctlState;ctlNewState;ctlSpeed;ctlNextCommand;ctlTapeContainer;flTMDoStop = true;

// Поддержка алфавитаchkDigitIds = "0 1 2 3 4 5 6 7 8 9";smbDigit = "0123456789";chkAlphaIds = "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z";smbAlpha = "abcdefghijklmnopqrstuvwxyz";chkSymbolIds = "Less Greater Equal Plus Minus Star Slash Hat Percent";smbSymbol = "<>=+-*/^%";nExtraSymbolNumber = 14;smbNBSP;

// Поддержка множества состоянийchkStateIds = "Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19";stState = ["q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9",", "q11", "q12", "q13", "q14", "q15", "q16", "q17", "q18", "q19"];cellWidth = 30;nExtraStateNumber = 10;arTMTape = [];tapeShift = 100;setTMProgram;setTMAlphabet;setTMStates;strTMCurrentState;idxTMCurrentCell;init() {= document.getElementById("tape");= document.getElementById("program");= document.getElementById("errorType");= document.getElementById("errorMessage");= document.getElementById("config");= document.getElementById("state");= document.getElementById("newState");= document.getElementById("speed");= document.getElementById("ctlNextCommand");= document.getElementById("ctlTapeContainer");= document.getElementById("ctlNBSP").firstChild.nodeValue;(var i = -tapeShift; i < tapeShift; i++) {(i);

}();

}createCell(n) {

// var cell = document.createElement("div");cell = document.createElement("td");input = document.createElement("input");.setAttribute("type", "text");.setAttribute("size", 1);.appendChild(input);.setAttribute("tabindex", "1");= ctlTape.appendChild(cell);.firstChild.readOnly = true;.tabIndex = 1;.tapeIndex = n;.onclick = function() { ctlTape_click(this.tapeIndex); };

// cell.setAttribute("style", "left: " + (30 * (n + tapeShift)) + "px");cell;

}tmFocusCell(n) {(!isNaN(idxTMCurrentCell)) {cell = ctlTape.childNodes[idxTMCurrentCell + tapeShift];.className = cell.className.replace(/focused/, "")

.replace(/\s+/g, " ").replace(/^\s+/, "").replace(/\s+$/, "");

}cell = ctlTape.childNodes[n + tapeShift];.className = "focused" + (cell.className? " " + cell.className: "");= n;.firstChild.focus();

// if(ctlTapeContainer.doScroll) {

// var th = Math.floor(600 / (tapeShift*2) * (n + tapeShift));

// window.setTimeout(function() {

// while(th--)

// ctlTapeContainer.doScroll("scrollbarRight");

// }, 50);

// //alert(100 / (tapeShift*2) * (n + tapeShift));

// }

}tmSetCellValue(n, v) {(v == 'B')= '';[n + tapeShift] = v;cell = ctlTape.childNodes[n + tapeShift];

//while(cell.childNodes.length)

// cell.removeChild(cell.lastChild);

//var txt = document.createTextNode(v || smbNBSP);

//cell.appendChild(txt);.className = cell.className.replace(/blankSymbol/, "")

.replace(/\s+/g, " ").replace(/^\s+/, "").replace(/\s+$/, "");(v == '').className = "blankSymbol" + (cell.className? " " + cell.className: "");.firstChild.value = v;

}tmGetCellValue(n) {v = arTMTape[n + tapeShift];v == ''? 'B': v;

}tmClearErrors() {(ctlErrorType.childNodes.length).removeChild(ctlErrorType.lastChild);(ctlErrorMessage.childNodes.length).removeChild(ctlErrorMessage.lastChild);

}tmCompileError(strType, b, e) {(ctlProgram.setSelectionRange && typeof(ctlProgram.setSelectionRange) == "function" && b <= e) {.select();.setSelectionRange(b, e);

}();errT = document.createTextNode(strType);.appendChild(errT);strMessage = ctlProgram.value.substring(b, e);errM = document.createTextNode(strMessage);.appendChild(errM);(strType);

}tmCompile(text) {();nextE(bb) {ee = text.substring(bb, text.length).indexOf("\n");ee == -1? text.length: bb + ee;

}arNewProgram = {};(var idxLine = 1, b = 0, e = nextE(b); b < text.length; b = e + 1, e = nextE(b), idxLine++) {line = text.substring(b, e);= line.replace(/\/\/.*$/, "");= line + " ";

// var arMatch = line.match(/^\s*(?:([^\s][a-zA-Z0-9][a-zA-GI-KM-QS-Z0-9\_\^\*]*\-\>[^\s][a-zA-Z0-9][a-zA-GI-KM-QS-Z0-9\_\^\*]*[LRH]?)\s+)*$/);arMatch = line.match(/^\s*(?:([^\s][a-zA-Z0-9](?:[^\s\-\>]*[^\s\-\>LRH])*\-\>[^\s][a-zA-Z0-9](?:[^\s\-\>]*[^\s\-\>LRH])*[LRH]?)\s+)*$/);(!arMatch)tmCompileError("Синтаксическая ошибка в " + idxLine + "-й строке", b, e);(var idxCmd = 1; idxCmd < arMatch.length; idxCmd++) {strCmd = arMatch[idxCmd];(!strCmd);parsedCommand = tmParseCommand(strCmd, idxLine);(!parsedCommand)tmCompileError("Непредвиденная ошибка в " + idxLine + "-й строке", b, e);("errorMessage" in parsedCommand)tmCompileError(parsedCommand.errorMessage, b, e);prefix = "" + parsedCommand.smbFrom + parsedCommand.stFrom;(prefix in arNewProgram)tmCompileError("Строка " + idxLine + ": Повторение команды " + strCmd + " для символа '"

+ parsedCommand.smbFrom + "' и состояния " + parsedCommand.stFrom, b, e);[prefix] = parsedCommand;

}

}= arNewProgram;true;

}tmParseCommand(str, idxLine) {

// var arMatch = str.match(/(.)([a-zA-Z0-9][a-zA-GI-KM-QS-Z0-9\_\^\*]*)\-\>(.)([a-zA-Z0-9][a-zA-GI-KM-QS-Z0-9\_\^\*]*)([LRH]?)/);arMatch = str.match(/(.)([a-zA-Z0-9](?:[^\s\-\>]*[^\s\-\>LRH])*)\-\>(.)([a-zA-Z0-9](?:[^\s\-\>]*[^\s\-\>LRH])*)([LRH]?)/);(!arMatch || arMatch.length!= 6){: "Строка " + idxLine + ": Непредвиденная ошибка в команде " + str

};smbFrom = arMatch[1];stFrom = arMatch[2];smbTo = arMatch[3];stTo = arMatch[4];mvTo = arMatch[5];(!(smbFrom in setTMAlphabet)){: "Строка " + idxLine + ": В команде " + str + " символ '" + smbFrom + "' не входит в алвфавит Вашей машины Тьюринга"

};(!(stFrom in setTMStates)){

errorMessage: "Строка " + idxLine + ": В команде " + str + " состояние '" + stFrom + "' не входит в множество состояний Вашей машины Тьюринга"

};(!(smbTo in setTMAlphabet)){

errorMessage: "Строка " + idxLine + ": В команде " + str + " символ '" + smbTo + "' не входит в алвфавит Вашей машины Тьюринга"

};(!(stTo in setTMStates)){

errorMessage: "Строка " + idxLine + ": В команде " + str + " состояние '" + stTo + "' не входит в множество состояний Вашей машины Тьюринга"

};(!mvTo)= 'H';{: smbFrom,: smbTo,: stFrom,: stTo,: mvTo

};

}tmClearTape() {(var idxCell = -tapeShift; idxCell < tapeShift; idxCell++) {(idxCell, "");

}

}tmSetConfig(strConfig) {();(var idxSymbol = 0; idxSymbol < strConfig.length; idxSymbol++)(!(strConfig.charAt(idxSymbol) in setTMAlphabet))tmCompileError("Символ '" + strConfig.charAt(idxSymbol) + "' не входит в алфавит Вашей машины Тьюринга");();(var idxSymbol = 0; idxSymbol < strConfig.length; idxSymbol++)(idxSymbol, strConfig.charAt(idxSymbol));(strConfig.length + 1);(0);

}tmSetState(strState) {();(!strState)tmCompileError("Неопределенное состояние машины Тьюринга");(!(strState in setTMStates))tmCompileError("Состояние '" + strState + "' не входит в множество состояний Вашей машины Тьюринга");(ctlState.childNodes.length).removeChild(ctlState.lastChild);= document.createTextNode(strState);.appendChild(tnState);= strState;true;

}tmStep() {();(strTMCurrentState == "STOP") {("Работа машины Тьюринга успешно завершена");false;

}(!strTMCurrentState)tmCompileError("Не установлено состояние машины Тьюринга");(!(strTMCurrentState in setTMStates))tmCompileError("Состояние '" + strTMCurrentState + "' не входит в множество состояний Вашей машины Тьюринга");(isNaN(idxTMCurrentCell))tmCompileError("Не установлена текущая ячейка машины Тьюринга");smbCurrent = tmGetCellValue(idxTMCurrentCell);(!smbCurrent)= 'B';(!(smbCurrent in setTMAlphabet))

return tmCompileError("Символ '" + smbCurrent + "' не входит в алфавит Вашей машины Тьюринга");

var prefix = "" + smbCurrent + strTMCurrentState;(!setTMProgram)

return tmCompileError("Нет ни одной команды для выполнения");

if(!(prefix in setTMProgram))tmCompileError("Нет команды для символа '" + smbCurrent + "' и состояния '" + strTMCurrentState + "'");cmd = setTMProgram[prefix];(!(cmd.smbTo in setTMAlphabet))

return tmCompileError("Символ '" + cmd.smbTo + "' не входит в алфавит Вашей машины Тьюринга\n" +

"При выполнении команды для символа '" + smbCurrent + "' и состояния '" + strTMCurrentState + "'");

if(!(cmd.stTo in setTMStates))

return tmCompileError("Состояние '" + cmd.stTo + "' не входит в множество состояний Вашей машины Тьюринга\n" +

"При выполнении команды для символа '" + smbCurrent + "' и состояния '" + strTMCurrentState + "'");(!(cmd.mvTo == 'L' || cmd.mvTo == 'R' || cmd.mvTo == 'H'))tmCompileError("Непредвиденная ошибка при выполнении перемещения в команде для символа '" + smbCurrent + "' и состояния '" + strTMCurrentState + "'");

tmSetCellValue(idxTMCurrentCell, cmd.smbTo);(cmd.stTo);(cmd.mvTo) {'L':(idxTMCurrentCell - 1);;'R':(idxTMCurrentCell + 1);;'H':;:tmCompileError("Непредвиденная ошибка при выполнении перемещения в команде для символа '" + smbCurrent + "' и состояния '" + strTMCurrentState + "'");

}true;

}tmStart() {ids = ["btnStep", "btnStart", "btnSetState", "btnSetConfig", "btnShowNextCommand"];(var i = 0; i < ids.length; i++).getElementById(ids[i]).disabled = true;.getElementById("btnStop").disabled = false;= false;();.setTimeout(tmRepeatStep, ctlSpeed.value);

}tmRepeatStep() {(!flTMDoStop && tmStep()) {();.setTimeout(tmRepeatStep, ctlSpeed.value);;

}.getElementById("btnStop").disabled = true;ids = ["btnStep", "btnStart", "btnSetState", "btnSetConfig", "btnShowNextCommand"];(var i = ids.length; i--;).getElementById(ids[i]).disabled = false;

}tmStop() {= true;

}tmSetAlphabet() {();alphabet = {};['B'] = 'B';ids = (chkDigitIds + " " + chkAlphaIds + " " + chkSymbolIds).split(" ");smbs = (smbDigit + smbAlpha + smbSymbol);(var i = 0; i < ids.length; i++)(document.getElementById("symbol" + ids[i]).checked)[smbs.charAt(i)] = smbs.charAt(i);(var i = 0; i < nExtraSymbolNumber; i++) {smb = document.getElementById("extraSymbol" + i).value;(!smb);(smb in alphabet)

return tmCompileError("Невозможно включить символ '" + smb +

"' в алфавит дважды");(smb.length!= 1)tmCompileError("Невозможно включить в алфавит " + smb.length + "-буквенное слово '" + smb + "'");

alphabet[smb] = smb;

}= alphabet;true;

}tmSetStates() {();states = {};['STOP'] = 'STOP';ids = chkStateIds.split(" ");(var i = 0; i < ids.length; i++)(document.getElementById("state" + ids[i]).checked)[stState[i]] = stState[i];(var i = 0; i < nExtraStateNumber; i++) {st = document.getElementById("extraState" + i).value;(!st);(st in states)

return tmCompileError("Невозможно включить состояние '" + st +

"' в множество состояний машины Тьюринга дважды");

// if(!st.match(/^[a-zA-Z0-9][a-zA-GI-KM-QS-Z0-9\_\^\*]*$/))(!st.match(/^[a-zA-Z0-9][^\s\-\>]*$/))

return tmCompileError("Некорректное имя для состояния: '" + st + "'");

states[st] = st;

}= states;true;

}tmAddStateInput(trParent, tdBefore) {td = document.createElement("td");input = document.createElement("input");.setAttribute("type", "textbox");.setAttribute("id", "extraState" + nExtraStateNumber++);.setAttribute("class", "extraState");.appendChild(input);(tdBefore)= trParent.insertBefore(td, tdBefore);= trParent.appendChild(td);.firstChild.className = "extraState";td;

}tmMoreStates() {tdMoreStates = document.getElementById("tdMoreStates");parent = tdMoreStates.parentNode;colsNumber = Math.ceil(nExtraStateNumber / 10) + 4;percentWidth = Math.floor(100 / colsNumber);(var td = parent.firstChild; td!= tdMoreStates; td = td.nextSibling)(td.nodeName.toLowerCase() == "td").setAttribute("width", percentWidth + "%");.setAttribute("width", 100 - colsNumber * percentWidth + "%");tdStateInput = tmAddStateInput(parent, tdMoreStates);.setAttribute("width", percentWidth + "%");(var tr = parent.nextSibling; tr; tr = tr.nextSibling)(tr.nodeName.toLowerCase() == "tr")td = tmAddStateInput(tr);

}tmShowNextCommand() {();prefix = "" + tmGetCellValue(idxTMCurrentCell) + strTMCurrentState;(!setTMProgram ||!(prefix in setTMProgram));cmd = setTMProgram[prefix];txt = prefix + "->" + cmd.smbTo + cmd.stTo + cmd.mvTo;tn = document.createTextNode(txt);.appendChild(tn);

}tmClearNextCommand() {(ctlNextCommand.childNodes.length).removeChild(ctlNextCommand.lastChild);

}btnShowNextCommand_click() {();text = ctlProgram.value;(!(tmSetAlphabet() && tmSetStates()));(!tmSetState(strTMCurrentState));(tmCompile(text))();

}btnStep_click() {();text = ctlProgram.value;(!(tmSetAlphabet() && tmSetStates()));(!tmSetState(strTMCurrentState));(tmCompile(text) && tmStep())();

}btnStart_click() {();text = ctlProgram.value;(!(tmSetAlphabet() && tmSetStates()));(!tmSetState(strTMCurrentState));(tmCompile(text))();

}btnStop_click() {();

}btnSetConfig_click() {();strConfig = ctlConfig.value;(tmSetAlphabet() && tmSetConfig(strConfig))();

}btnSetState_click() {();strState = ctlNewState.value;(tmSetStates() && tmSetState(strState))();

}ctlTape_click(n) {(flTMDoStop) {(n);();

}

}chkAllDigit_click(checked) {ids = chkDigitIds.split(" ");(var i = 0; i < ids.length; i++).getElementById("symbol" + ids[i]).checked = checked;

}chkAllAlpha_click(checked) {ids = chkAlphaIds.split(" ");(var i = 0; i < ids.length; i++).getElementById("symbol" + ids[i]).checked = checked;

}chkAllSymbol_click(checked) {ids = chkSymbolIds.split(" ");(var i = 0; i < ids.length; i++).getElementById("symbol" + ids[i]).checked = checked;

}

</script>

<body onload="init()">

<span id="ctlNBSP">&nbsp;</span>

<div class="next-command-container">

<h1> Следующая команда </h1>

<div id="ctlNextCommand"></div>

</div>

<div class="state-container">

<h1> Текущее состояние </h1>

<div id="state"></div>

</div>

<div id="ctlTapeContainer">

<table id="ctlTape">

<tr id="tape"></tr>

</table>

</div>

<div class="program-container">

<input type="button"="btnShowNextCommand"="Показать следующую команду"="btnShowNextCommand_click()"/>

<input type="button"="btnStep"="Шаг"="btnStep_click()"/>

<input type="button"="Старт"="btnStart"="btnStart_click()"/>

Скорость

<select id="speed">

<option value="0"/>Мгновенно

<option value="50"/>Очень быстро

<option value="200"/>Быстро

<option value="500" selected="true"/>Неспешно

<option value="1000"/>Медленно

<option value="5000"/>Очень медленно

</select>

<input type="button"="Стоп"="btnStop"="true"="btnStop_click()"/>

<table width="50%"="definitions"="4">

<tr>

<td width="50%">

<h2>Состояние</h2>

<input type="textbox"="newState"="q1"/><br/>

<input type="button"="Установить"="btnSetState"="btnSetState_click()"/>

</td>

<td colspan="2"="50%">

<h2>Конфигурация</h2>

<input type="textbox"="config"="10111"/>

<br/>

<input type="button"="Установить"="btnSetConfig"="btnSetConfig_click()"/>

</td>

<h2>Множество состояний</h2>

<table width="50%"="states">

<tr>

<td width="25%"><input type="checkbox"="true" disabled="true"/>STOP</td>

<td width="25%"><input type="checkbox" id="stateQ10"/>q10</td>

<td width="25%"><input type="textbox" id="extraState0" class="extraState"/></td>

</tr>

<tr>

<td><input type="checkbox" id="stateQ1" checked="true"/>q1</td>

<td><input type="checkbox" id="stateQ11"/>q11</td>

<td><input type="textbox" id="extraState1" class="extraState"/></td>

</tr>

<tr>

<td><input type="checkbox" id="stateQ2" checked="true"/>q2</td>

<td><input type="checkbox" id="stateQ12"/>q12</td>

<td><input type="textbox" id="extraState2" class="extraState"/></td>

</tr>

<tr>

<td><input type="checkbox" id="stateQ3" checked="true"/>q3</td>

<td><input type="checkbox" id="stateQ13"/>q13</td>

<td><input type="textbox" id="extraState3" class="extraState"/></td>

</tr>

<tr>

<td><input type="checkbox" id="stateQ4"/>q4</td>

<td><input type="checkbox" id="stateQ14"/>q14</td>

<td><input type="textbox" id="extraState4" class="extraState"/></td>

</tr>

<tr>

<td><input type="checkbox" id="stateQ5"/>q5</td>

<td><input type="checkbox" id="stateQ15"/>q15</td>

<td><input type="textbox" id="extraState5" class="extraState"/></td>

</tr>

<tr>

<td><input type="checkbox" id="stateQ6"/>q6</td>

<td><input type="checkbox" id="stateQ16"/>q16</td>

<td><input type="textbox" id="extraState6" class="extraState"/></td>

</tr>

<tr>

<td><input type="checkbox" id="stateQ7"/>q7</td>

<td><input type="checkbox" id="stateQ17"/>q17</td>

<td><input type="textbox" id="extraState7" class="extraState"/></td>

</tr>

<tr>

<td><input type="checkbox" id="stateQ8"/>q8</td>

<td><input type="checkbox" id="stateQ18"/>q18</td>

<td><input type="textbox" id="extraState8" class="extraState"/></td>

</tr>

<tr>

<td><input type="checkbox" id="stateQ9"/>q9</td>

<td><input type="checkbox" id="stateQ19"/>q19</td>

<td><input type="textbox" id="extraState9" class="extraState"/></td>

</tr>

</table>

<h2>Алфавит</h2>

<table="50%"="alphabet">

<tr>

<td width="33%"="font-family: sans-serif;"="2">

<input type="checkbox"="allDigit"="chkAllDigit_click(this.checked)"/>

Цифры

</td>

<td width="33%"="font-family: sans-serif;"="2">

<input type="checkbox"="allAlpha"="chkAllAlpha_click(this.checked)"/>

Буквы

</td>

<td width="34%"="font-family: sans-serif;"="2">

<input type="checkbox"="allSymbol"="chkAllSymbol_click(this.checked)"/>

Символы

</td>

</tr>

<tr>

<td><input type="checkbox" id="symbol0" checked="true"/>0</td>

<td><input type="checkbox" id="symbolA"/>a</td>

<td><input type="checkbox" id="symbolK"/>k</td>

<td><input type="checkbox" id="symbolU"/>u</td>

<td><input type="checkbox" checked="true" disabled="true"/>B</td>

<td><input type="textbox" id="extraSymbol0"/></td>

</tr>

<tr>

<td><input type="checkbox" id="symbol1" checked="true"/>1</td>

<td><input type="checkbox" id="symbolB"/>b</td>

<td><input type="checkbox" id="symbolL"/>l</td>

<td><input type="checkbox" id="symbolV"/>v</td>

<td><input type="checkbox" id="symbolLess"/>&lt;</td>

<td><input type="textbox" id="extraSymbol1"/></td>

</tr>

<tr>

<td><input type="checkbox" id="symbol2"/>2</td>

<td><input type="checkbox" id="symbolC"/>c</td>

<td><input type="checkbox" id="symbolM"/>m</td>

<td><input type="checkbox" id="symbolW"/>w</td>

<td><input type="checkbox" id="symbolGreater"/>&gt;</td>

<td><input type="textbox" id="extraSymbol2"/></td>

</tr>

<tr>

<td><input type="checkbox" id="symbol3"/>3</td>

<td><input type="checkbox" id="symbolD"/>d</td>

<td><input type="checkbox" id="symbolN"/>n</td>

<td><input type="checkbox" id="symbolX"/>x</td>

<td><input type="checkbox" id="symbolEqual"/>=</td>

<td><input type="textbox" id="extraSymbol3"/></td>

</tr>

<tr>

<td><input type="checkbox" id="symbol4"/>4</td>

<td><input type="checkbox" id="symbolE"/>e</td>

<td><input type="checkbox" id="symbolO"/>o</td>

<td><input type="checkbox" id="symbolY"/>y</td>

<td><input type="checkbox" id="symbolPlus"/>+</td>

<td><input type="textbox" id="extraSymbol4"/></td>

</tr>

<tr>

<td><input type="checkbox" id="symbol5"/>5</td>

<td><input type="checkbox" id="symbolF"/>f</td>

<td><input type="checkbox" id="symbolP"/>p</td>

<td><input type="checkbox" id="symbolZ"/>z</td>

<td><input type="checkbox" id="symbolMinus"/>-</td>

<td><input type="textbox" id="extraSymbol5"/></td>

</tr>

<tr>

<td><input type="checkbox" id="symbol6"/>6</td>

<td><input type="checkbox" id="symbolG"/>g</td>

<td><input type="checkbox" id="symbolQ"/>q</td>

<td><input type="textbox" id="extraSymbol10"/></td>

<td><input type="checkbox" id="symbolStar"/>*</td>

<td><input type="textbox" id="extraSymbol6"/></td>

</tr>

<tr>

<td><input type="checkbox" id="symbol7"/>7</td>

<td><input type="checkbox" id="symbolH"/>h</td>

<td><input type="checkbox" id="symbolR"/>r</td>

<td><input type="textbox" id="extraSymbol11"/></td>

<td><input type="checkbox" id="symbolSlash"/>/</td>

<td><input type="textbox" id="extraSymbol7"/></td>

</tr>

<tr>

<td><input type="checkbox" id="symbol8"/>8</td>

<td><input type="checkbox" id="symbolI"/>i</td>

<td><input type="checkbox" id="symbolS"/>s</p></td>

<td><input type="textbox" id="extraSymbol12"/></td>

<td><input type="checkbox" id="symbolHat"/>^</td>

<td><input type="textbox" id="extraSymbol8"/></td>

</tr>

<tr>

<td><input type="checkbox" id="symbol9"/>9</td>

<td><input type="checkbox" id="symbolJ"/>j</td>

<td><input type="checkbox" id="symbolT"/>t</td>

<td><input type="textbox" id="extraSymbol13"/></td>

<td><input type="checkbox" id="symbolPercent"/>%</td>

<td><input type="textbox" id="extraSymbol9"/></td>

</tr>

</table>

</td>

<td width="50%">

<h2>Команды</h2>

<textarea="program"

wrap="off">

// Не содержит трех подряд единиц

1q1->1q2R

q2->1q3R

q3->1q4

q4->BSTOP

q1->0q1R

q2->0q2R

q3->0q3R->BSTOP

</textarea>

</td>

</tr>

</table>

<div class="error-container">

<nobr id="errorType"></nobr>

<br>

<nobr id="errorMessage"></nobr>

</div>

<div class="copy">

&copy; Е.В Королёв, 2012;

</div>

</div>

<body>

</html>

</font>

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-04-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: