МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ
Чорноморський державний університет імені Петра Могили
Факультет комп’ютерних наук
Кафедра інтелектуальних інформаційних систем
ЗВІТ
з лабораторної роботи №2
“Побудова машини Поста”
Дисципліна “Теорія алгоритмів та математична логіка”
Спеціальність “Інтелектуальні системи прийняття рішень”
6.050101–ЛР.ПЗ.02–303.2910302
Студент___________К.О.Баранов
(підпис)
____________
(дата)
Викладач___________Д.О.Назаренко
(підпис)
____________
(дата)
Миколаїв – 2012
Варіант 1
Побудувати машину Поста, яка обчислює функцію:
Реалізація машини Поста за допомогою програмного емулятора Алго2000:
Варiант № |
||||||
1 |
2 |
2 |
2 |
2 |
2 |
2 |
Реалізація машини Поста за допомогою програмного емулятора Алго2000:
Алгоритм:
-
Пошук першого числа.
-
Стираємо першу мітку
-
Пошук кінця першого числа
-
Ставимо мітку на наступну клітинку
-
Рухаємось до проміжку
-
Повторюємо кроки 1-5.
Лістинг програми:
public class Main {
static void post(char[] tape, String[][] command) {
int numberCommand = 0;
char curCommand = 0;
int currentSymbol = 1;
String cmd = "";
boolean flag;
while ( currentSymbol<tape.length) {
curCommand = command[numberCommand][0].toCharArray()[0];
switch (curCommand) {
case '>':
currentSymbol++;
numberCommand++;
break;
case '<':
currentSymbol--;
numberCommand++;
break;
case '?':
cmd = command[numberCommand][1];
if (tape[currentSymbol] == '0') {
numberCommand = Integer.parseInt(cmd.substring(0, cmd.indexOf(",")));
} else {
numberCommand = Integer.parseInt(cmd.substring(cmd.indexOf(",") + 1));
}
break;
case 'V':
tape[currentSymbol] = '1';
numberCommand++;
System.out.println(tape);
break;
case 'I':
tape[currentSymbol] = '0';
numberCommand++;
System.out.println(tape);
break;
}
}
}
public static void main(String[] args) {
String tp = "0110110110110110110";
String command[][] = {{"I", "1"},{"<", "2"},{"?", "3,1"},{">", "4"},
{"I", "5"},{">", "6"},{"?", "7,5"},{"V", "8"},{">", "9"},{"?", "10,2"},{"!",""}};
char[] tape = tp.toCharArray();
post(tape, command);
}
}
Результат: