| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Алгоритм] Машина тьюринга |
| Автор: xStorm 7.1.2008, 20:00 |
| Нужно перевести двоичное число в восьмиричное, требуется составить систему комманд машины тьюринга. Пожалуйста помогите. я так подумал 000 - 0 001 - 1 010 - 2 011 - 3 100 - 4 101 - 5 110 - 6 111 - 7 Вот например двоичное число: 11001 Если разбить его по 3 цифры начиная с конца: _11 001, то все (_) заменим на 0 и получим что 011 это 3, а 001 это 1, вот и получаем 31 в восьмеричной системе. Ну думаю это стандартный алгоритм, ну хз, просто думаю приведу пример. Токо я не втыкну как сделать это при помощи системы команд машины тьюринга, кто разбирается помогите плз. |
| Автор: JAPH 8.1.2008, 02:42 | ||
| Предполагается, что на ленту можно записывать символы 0,1,2,3,4,5,6,7. "_" - пустой символ. Входные данные: двоичное число, например, 10100101, головка под первой слева цифрой. Начальное состояние 0. На выходе: восьмеричное число, напрмер, 245, головка под первой слева цифрой. Конечное состояние либо 26, если перевод успешен, либо 6, если числа как такового нет (т.е. на вход подана пустая лента), либо 0, если встретились недвоичные цифры. Команды записаны так: [состояние, символ на ленте] => [новое состояние, новый символ на ленте или L или R], где L и R - шаг головки влево и вправо, соответственно.
На оптимальность не претендую |