Слон в Каире
Слон в Каире — это термин, используемый в программировании, чтобы описать элемент данных, который соответствует критериям поиска и намеренно помещается в конец области поиска, чтобы гарантировать завершение работы алгоритма. Данное выражение является шутливым примером «сторожевого» или «сигнального» значения. Термин происходит из юмористического эссе, распространявшегося интернете, которое было опубликовано в журнале Byte в сентябре 1989 года, в котором описывалось, как различные профессии охотятся на слона[1][2].
Алгоритм
Способ охоты на слона программистом описывается в статье следующим алгоритмом:[1]
- Идём в Африку.
- Начинаем с мыса Доброй Надежды.[notes 1]
- Двигаемся на север в упорядоченной манере, пересекая континент попеременно с востока на запад и с запада на восток,
- Во время каждого прохода:
- Ловим каждое увиденное животное.
- Сравниваем его с известным слоном.
- Останавливаемся, когда совпадение обнаружено.
Этот алгоритм имеет баг, а именно ошибку контроля границ — если слон не найден, программист продолжает поиск севернее и закончит в Средиземном море, вызвав аварийное завершение (утонет).
Поэтому опытные программисты подправляют вышеизложенный алгоритм, помещая известного слона в Каире, чтобы алгоритм завершился наверняка[3]. Модифицированный алгоритм выглядит так:
- Идём в Африку.
- Помещаем слона в Каир.
- Начинаем с мыса Доброй Надежды.
- Двигаемся на север в упорядоченной манере, пересекая континент попеременно с востока на запад и с запада на восток,
- Во время каждого прохода:
- Ловим каждое увиденное животное.
- Сравниваем его с известным слоном.
- Останавливаемся, когда совпадение обнаружено.
- Если вы обнаружили слона в Каире, это означает, что в Африке нет слонов (за исключением того, которого вы сами поместили в Каир).
См. также
- Слоновий тест
Примечания
- ↑ Мыс Доброй Надежды традиционно считается самой южной точкой Африки, хотя на самом деле таким является мыс Игольный.
- ↑ 1 2 Peter C. Olsen. Pachydermic Personnel Prediction // Stop Bit, Byte. — 1989. — Сентябрь. — С. 404.
- ↑ Аналогичную шуточную статью о ловле льва в пустыне можно найти в книге «Физики шутят»
- ↑ Michael Steuben. Twenty Years Before the Blackboard. — Cambridge University Press, 1998. — С. 62. — ISBN 9780883855256.