Мы загадали логическую задачу о странном баре, который посещают необщительные люди. Они заходят в бар по одному и садятся строго на самое дальнее расстояние друг от друга. Между двумя посетителями должен быть хотя бы один стул, а всего стульев 25 и расположены они в ряд.
Представьте себе, что у бармена есть право указать первому посетителю, куда ему надлежит сесть, и ответьте: на какой стул посадить первого посетителя?
Эта задача решается способом, который у программистов называется Test-First Development. Для начала представим себе идеальную раскладку: посетители сидят строго через один стул. В таком случае в баре будет 13 человек.
Убираем каждого четного посетителя. Теперь у нас сидит семь человек, и между ними по три пустых стула.
Опять убираем всех четных. У нас остаются четыре посетителя. Двое занимают первое и последнее места, двое — 9-е и 17-е.
Но если первый посетитель сядет на крайнее место — неважно, первое или последнее — то в баре поместится максимум 9 человек. Поэтому бармену лучше посадить первого гостя на девятый стул. Тогда второй сядет на крайний, 25-й, а дальше все пойдет по накатанной.
Главное, чтобы гости могли быстро сосчитать пустые стулья.
Фото сгенерировано при помощи ИИ, Наталия Бахарева