Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Машина поста, пожалуйста помогите!

каретка находится слева от числа, определить четность числа, если число четное то нужно указать справа 2 точки, если нечетное то слева от числа нужно указать 3 точки
по машине поста решите пожалуйста, я не шарю в этой теме и даже не знаю что писать в клеточки напишите пожалуйста что куда записывать

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
6мес

да там всё просто. вот начальное состояние машины:

12
 _ _ _ _ _ _ _ 1 1 1 1 ... 1 1 1 1 _ _ _ _ _ _ 
            ^ 

тебе его надо превратить либо в

1
 _ _ _ 1 1 1 _ 1 1 1 1 ... 1 1 1 1 _ _ _ _ _ _  

если количество единиц на ленте нечетное, либо в

1
 _ _ _ _ _ _ _ 1 1 1 1 ... 1 1 1 1 _ 1 1 _ _ _ 

если количество единиц на ленте четное.

первое, что приходит в голову, скакать кареткой вправо на две ячейки, проверяя после каждого прыжка, не вышли ли мы на границу этого частокола.

если вышли => число чётное:

12345678
 _ _ 1 1 1 1 _ _
  ^

_ _ 1 1 1 1 _ _
      ^
 
_ _ 1 1 1 1 _ _
          ^ 


если после очередного прыжка попали в пустую ячейку => число нечетное:

1234567891011
 _ _ 1 1 1 1 1 _ _ 
  ^

_ _ 1 1 1 1 1 _ _  
      ^ 
 
_ _ 1 1 1 1 1 _ _  
          ^ 
 
_ _ 1 1 1 1 1 _ _  
              ^ 


так и пишем:

1234567891011121314151617181920212223242526272829303132333435363738394041
 # прыжки на две ячейки вправо

строка 1. шаг вправо
строка 2. шаг вправо
строка 3. в ячейке пусто?
             да  => переходим к строке 12 ;  # число оказалось нечетным
             нет => переходим к строке 4


# проверка, не вышли ли мы к границе числа

строка 4. шаг вправо
строка 5. в ячейке пусто?
            да  => переходим к строке 7 ;  # число оказалось четным
            нет => переходим к строке 6
строка 6. шаг влево, переходим к строке 1


# подпрограмма рисования двух единиц справа от числа
# в этот момент мы уже находимся в пустой ячейке справа от числа

строка 7. шаг вправо
строка 8. ставим 1
строка 9. шаг вправо 
строка 10. ставим 1
строка 11. !конец

# подпрограмма рисования трех единиц слева от числа
# в этот момент мы находимся на пустой ячейке справа от числа

строка 12. шаг влево
строка 13. в ячейке пусто?
            да  => переходим к строке 14 ;  # дошли до левой границы 
            нет => переходим к строке 12
строка 14. шаг влево
строка 15. ставим 1
строка 16. шаг влево 
строка 17. ставим 1
строка 18. шаг влево  
строка 19. ставим 1
строка 20. !конец 


ну, а уж формализовать эту хрень в соответствии с используемым у вас синтаксисом, надеюсь, ты сможешь и сам.