Исходник программы, показывающей пример решения задачи «Иосифа Флавия» и состоящей в том, чтобы определить позицию, в которой он сможет стоять в круге из 41 человека, если каждый третий мужчина будет последовательно устранен (убит) по кругу, а вы хотите быть последним, оставшимся в живых, человеком.
История гласит, что еврейский историк и математик Иосиф Флавий бежал от римлян во время римско-еврейской войны около 500 лет назад. Они последовали за ним в пещеру, осажденную римлянами, где были найдены 40 еврейских солдат. Не видя надежды на побег и не желая сдаваться, группа решила, что самоубийство - лучший выход. Джозефус и еще один человек были не слишком довольны планом, поэтому он предложил круг, в котором каждый третий человек совершает самоубийство (или казнь, в некоторых версиях), пока не останется только один человек. Он был достаточно умен, чтобы понять, где он и его приятель должны стоять вначале, так что они остались последними двумя. Остальная часть истории состоит в том, что Иосиф Флавий впоследствии был известен как Иосиф Флавий по имени семьи, которая усыновила его, когда он сдался римлянам.
Эти игры со счетом и выбыванием восходят, по крайней мере, к 12 веку. В США большинство детей изучают игру на выбор, которая начинается с «Один картофель, два картофеля, три картофеля, четыре…», в которой выбирается один человек для каждого раунда.
Математически задача довольно проста, особенно если у вас есть компьютер в качестве помощника. В этой версии программы есть простенькая анимация. Пользователь может выбрать количество людей в круге и шаг между выбранными жертвами. Выбор вашего местоположения в круге запускает процесс исключения и перечисляет жертв в порядке их выбора.
Основная задача программирования заключалась в том, чтобы правильно расположить «смайлы» и числа в круге и определить, на какой из них щелкнули, чтобы запустить процесс. Массив номеров людей поддерживается путем исключения выбранных записей и увеличения указателя при следующем выборе с использованием модульной арифметики на основе количества людей, оставшихся в данный момент в круге.
Доступны два размера смайлов, и расстояние между изображениями определяет, какой размер используется - больший или меньший. Есть 4 смайла каждого размера - нормальный живой, нормальный мертвый, выбранная игроком позиция жива и выбранная игроком позиция мертва.