сайты - меню - вход - но­во­сти


Задания
Версия для печати и копирования в MS Word

По­стро­ить ма­ши­ну, ко­то­рая делит за­пи­сан­ное на ленте число в еди­нич­ной си­сте­ме счис­ле­ния на 2 на­це­ло (то есть, число «шесть», пред­став­лен­ное на ленте на­бо­ром еди­ниц 111 111 пре­об­ра­зу­ет­ся в число 111, а число 11 111 в число 11). В ка­че­стве при­ме­ра при­ве­де­на ма­ши­на Тью­рин­га, до­бав­ля­ю­щая к числу 1. В на­чаль­ном со­сто­я­нии s0 и в ко­неч­ном со­сто­я­нии f го­лов­ка ма­ши­ны долж­на ука­зы­вать на первую еди­ни­цу числа.

Спрятать решение

Ре­ше­ние.

Уточ­ним по­ста­нов­ку за­да­чи, опре­де­лив, что ма­ши­на будет об­ра­ба­ты­вать все числа, кроме 1 (в этом слу­чае усло­ви­ем за­да­чи не опре­де­ле­но, где долж­на на­хо­дить­ся го­лов­ка ма­ши­ны). Один из ва­ри­ан­тов ре­ше­ния  — ана­ли­зи­ро­вать число на ленте слева на­пра­во, сти­рая по две еди­ни­цы, а ре­зуль­тат за­пи­сы­вать левее ис­ход­но­го числа спра­ва на­ле­во  — на одно сти­ра­ние двух еди­ниц одну еди­ни­цу ре­зуль­та­та.

 

Ответ: ниже при­ве­ден при­мер од­но­го из воз­мож­ных ре­ше­ний:

 

s0 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка минус боль­ше q1 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка R «ини­ци­а­ли­за­ция» ре­зуль­та­та;

q1 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка минус боль­ше q2 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка R за­ме­на пер­вых двух еди­ниц одной;

 

q2 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка минус боль­ше q3 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка R сти­ра­ние оче­ред­ной еди­ни­цы числа;

q3 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка минус боль­ше q4 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка L сти­ра­ние сле­ду­ю­щей за оче­ред­ной еди­ни­цы числа;

 

q4 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка минус боль­ше q4 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка L поиск конца ре­зуль­та­та;

q 4 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка минус боль­ше q 5 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка R и до­бав­ле­ние;

q5 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка минус боль­ше q6 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка R еди­ни­цы в его конце;

 

q6 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка минус боль­ше q6 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка R поиск оче­ред­ной еди­ни­цы за­дан­но­го числа;

q6 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка минус боль­ше q2 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка N и по­вто­ре­ние опе­ра­ции двух еди­ниц числа еди­ни­цей ре­зуль­та­та;

 

q2 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка минус боль­ше q7 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка L за­вер­ше­ние ра­бо­ты;

q7 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка минус боль­ше q7 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка L через про­пуск стер­тых сим­во­лов;

q7 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка минус боль­ше q8 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка L и оста­нов­кой;

q8 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка минус боль­ше q8 левая квад­рат­ная скоб­ка 1 пра­вая квад­рат­ная скоб­ка L на пер­вой еди­ни­це ре­зуль­та­та;

q 8 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка минус боль­ше f левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка R в слу­чае чётного числа еди­ниц;

 

q 3 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка минус боль­ше q 7 левая квад­рат­ная скоб­ка * пра­вая квад­рат­ная скоб­ка N то же для нечётного числа еди­ниц.