[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.27123 Reply
File: 78p1.png
Png, 10.58 KB, 307×178 - Click the image to expand
edit Find source with google Find source with iqdb
78p1.png
Привет, доброанон.

Рассмотрим машину Тьюрингу, которая за один такт работы может в текущей ячейке изменить символ, затем изменить состояние и сдвинуться влево-вправо (или остаться на месте).

Рассмотрим ленту, на которой могут быть только символы "1" и "0". Пусть "0" - это пустая ячейка. Имеем унарную СС, в которой 1 = "1", 2 = "11", 3 = "111" ну и т.д.

А теперь - суть задания. На ленте есть некоторой натуральное число в этой унарной СС. Нужно умножить это число на 3. Пример: исходная лента "11", выходная лента "111111".

Анон, подай мне идею, пожалуйста, как можно это сделать.
>> No.27141 Reply
>>27123
Затираешь один символ исходного числа, затем идёшь к новому и дописываешь три единицы.
11000000

01000000
01010000
01011000
01011100
01011100

01011100
00011100
00011110
...
Профит!
>> No.27155 Reply
>>27123
readln(n); {на что умножить}
for i:=1 to n do
write(1);
Не надо писать лишний код.
>> No.27156 Reply
>>27155
> На ленте есть некоторой натуральное число в этой унарной СС. Нужно умножить это число на 3.
while lenta=1 do
for i:=1 to 3 do
write(1);
>> No.27186 Reply
>>27156
Это если у нас есть лента вывода. А у ОПа, судя по всему, одноленточная МТ. Там сей способ не то что не пройдёт, но даже бессмысленен.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]