Один программист получил задание: смоделировать движение робота-черепашки в четырех стенах.

Программист глубоко задумался, напряг всю мощь разума и прописал черепашке всю ее жизнь наперёд. Едва появившись в в начальной точке, черепашка уже  знала, в каком месте соприкоснётся со стеной. Законами отражения точно так же предопределён угол, куда ей предстоит повернуть. Весь последующий путь предначертан всевидящим алгоритмом, и предусмотрены все будущие повороты.

Но когда пришло время сдавать программу, заказчик взял и усложнил задачу. Теперь вместе с черепашкой в произвольном месте произвольно возникали внутренние стеночки-препятствия. Программисту надо было научить робота отражаться и от них. Заранее неизвестных,  совершенно непредсказуемых... Как узнать, просчитывая путь черепашки к внешней стене, не притаилась ли там помеха? А потом, отразившись, как узнать, где подстерегает следующая? Как, вообще, отличать внешнее от внутреннего? Как все возможные ситуации, сочетания обстоятельств предусмотреть, единственно правильные действия для каждого случая предписать? Сложность программы стала необозримой. Рухнули мудрёные расчеты под собственной необъятностью.

И избавил тогда программист черепашку от лишних знаний, и от предопределённой судьбы заодно. Теперь черепашка вообще ни о чём не задумывалась, только знай себе спрашивала: ВПЕРЕДИ СТЕНА? И если путь свободен – делала один, но решительный ШАГ.

Ну а если стена или любое другое препятствие всё-таки окажутся впереди, вот тогда уже можно вспомнить немного тригонометрии.