Прошу, подскажите как можно оптимизировать код сложения трех целых беззнаковых чисел на машине Поста: Текст программы 1. → 2 2. ? 3 , 1 3. ← 4 4. ← 5 5. ? 14 , 6 6. → 7 7. ξ 8 8. → 9 9. ? 8 , 10 10. ← 11 11. V 12 12. ← 13 13. ? 12 , 4 14. → 15 15. ξ 16 16. → 17 17. ? 16 , 18 18. → 19 19. ? 20 , 18 20. ← 21 21. ← 22 22. ? 31 , 23 23. → 24 24. ξ 25 25. → 26 26. ? 25 , 27 27. ← 28 28. V 29 29. ← 30 30. ? 29 , 31 31. → 32 32. ξ 33 33. Ост
Препод сказал, что код можно уменьшить в 2 (!) раза. Ах да. Пояснение: составить программу сложения 3-х целых неотрицательных чисел a , b и c , расположенных на ленте машины Поста. Каретка расположена над одной из меток, принадлежащих числу a. Число b находится правее числа a через несколько пустых секций, число c находится правее числа b через несколько пустых секций.
1. Движение вправо до конца первого массива. 2. Стираем крайнюю правую метку первого массива(Если она последняя в массиве, то переход к пункту 7). 3. Движение вправо до начало второго массива. 4. В начале второго массива ставим метку. 5. Движение влево до ближайшей метки. 6. Повторение пунктов 1-5. 7. Стираем крайнюю правую метку получившегося массива(Если она последняя в массиве, то переход к пункту 12). 8. Движение вправо до начала третьего массива. 9. В начале третьего массива ставим метку. 10. Движение влево до ближайшей метки. 11. Повторение пунктов 7-10. 12. Конец.
|