Энтузиаст по имени Мартин Си Мартин обнаружил ошибку в компьютерной игре Lunar Lander. Ее выпустили 55 лет назад, вскоре после высадки корабля «Аполлон-11» на Луну. Такая игра имитирует космическую программу в текстовом варианте, поскольку тогда технологии не позволяли использовать графику.
Lunar Lander создал студент Джим Сторер. Для игры он использовал язык программирования FOCAL. Через 55 лет Мартин, инженер-программист на пенсии, бывший научный сотрудник Массачусетского технологического института, решил ознакомиться с исходным кодом проекта, когда изучал оптимальную стратегию посадки модуля, который позволяет максимально экономить топливо. Согласно этому методу, космический аппарат должен устроить свободное падение, чтобы набрать скорость. Двигатели корабля необходимо включить в последний момент для безопасного приземления.
Как рассказал Мартин, он пытался поставить аппарат на Луну максимально мягко, при этом сохраняя максимальное количество топлива. По его словам, лучшая в теории стратегия почему-то не сработала. Как оказалось, Lunar Lander считает, что посадка не происходит, хотя в действительности это не так. «Погрузившись в игру, я был поражен сложной физикой и численными вычислениями в ней. В конце концов я обнаружил ошибку: пропущенное “деление на два”, которое, казалось, оставалось незамеченным почти 55 лет», — объяснил энтузиаст причину бага.
Мартин отметил, что Lunar Lander основана на очень сложной для своей эпохи физике. В частности, Джим Сторер использовал формулу Циолковского, которая определяет скорость летательного аппарата под воздействием тяги ракетного двигателя, и ряд Тейлора, который означает расположение функции в бесконечную сумму степенных функций. После открытия бага Мартин связался с автором Lunar Lander, чтобы рассказать ему об ошибке. Сторер в свою очередь отметил, что в вычислениях при создании игры ему помогал отец, работавший физиком.
Ранее азиатский программист Кэмерон Сан создал новую версию игры «Крестики-нолики». Она сильно отличается от оригинала. Игрок может определять только место знака, а не его значение.