В една IT фирма шефът страшно се ядосал на програмистите какви са кухи лейки - само бъгове, софтуерът хич го нямало - решил да ги уволнява всичките 100 човека! Решил обаче да им даде последен шанс с една логическа задачка. Ще ги нареди ги в редица... малко странна редица, диагонална една такава - всеки вижда всички наредени пред него и никого зад себе си. Т.е. последният вижда всички, първият - никого. Ще им сложи шапки - има избор между червени и сини в неограничени количества. На всеки програмист - по шапка. Който си познае шапката - остава, който не успее - да си търси нова работа. Заплатите във фирмата са супер високи и изобщо условията на работа са перфектни, така че приемаме, че всеки би желал да запази работата си. Познаването става по следния начин - първо последния в редичката (който вижда всички) обявява на глас цвета на шапката си (т.е. какво предполага), после следващият и т.н. до първият, които не вижда никого. Програмистите имат 1 час да измислят как да се спасят (или поне част от тях) от уволняване. Помежду си всички са много добри приятели и биха направили всичко да си помогнат... доколкото могат, но имат сериозни затруднения с измислянето на начин за "спасение".
Колко най-много програмисти бихте могли да спасите със сигурност от уволнение И как
Хм, едно уточнение - познаването става не на глас, както първоначално бях писал, а шефът минава от зад напред със специална клавиатура с 2 бутона (абсолютно безшумни, както може да се сетите) - червен и син - според цвета на шапката. Програмистът, който е на ред, има точно 30 секунди да въведе своя избор, ако не го направи в този интервал автоматично се смята за отпаднал. След натискането на бутона системата изчаква да доизтече остатъкът от 30-те секунди след което обявява предположението на голям монитор, който виждат всички, след което почват да текат 30-те секунди за следващия програмист. През цялото време шефът зорко следи за всякакво възможно шмекеруване, което се наказва най-сурово.