Навеяно вчерашней историей про страшного препода.
В давние-стародавние времена учился я в ереванском ордена трудового красного знамени политехническом институте им. К. Маркса.
Было это на втором курсе, куда вернулся я из дальних мест, где два долгих года отдавал свой интернациональный долг Родине. Вернулся с твердым желанием учиться, чтобы в дальнейшей жизни сидеть перед монитором, а не разгружать вагоны с углем.
Когда я учился на первом курсе никто слыхом не слыхивал страшного слова "компьютер". Существовали только ЭВМ. А вернувшись через два года я был поражен произошедшей в стране технической революцией. Вместо мастодонтов типа ЕС-1022, Ес-1033 вдруг появились аудитории с персоналками ДВК-1,2 Искры 1256,266 и т.д.
И как-то так получилось, что программирование у меня пошло немного лучше, чем у остальных в нашей группе. Ну как лучше? Преподы меня не пускали на контрольные (чтобы я не решал за других) и не разрешали мне отвечать на вопросы на своих лекциях (чтобы остальные тоже могли ответить). Понятно, что зачеты и экзамены по программированию я получал автоматом.
И был у нас завкафедрой. Почему-то из моего опыта (и учебы и преподавания) именно завкафедрами всегда отличаются какой-то особенной зловредностью, волюнтаризмом, граничащим с самодурством.
Не был исключением и наш. Лекции он читал слабенько, непонятно и сумбурно, при этом на экзамене пытался в качестве задач давать трудоемкие и малоприятные комбинаторные примеры. Построение магических квадратов или перебор всех путей в грАфе. Например, дается студенту правильный многоугольник (от 5 до 7), у которого каждая вершина соединена с каждой и требуется выписать все пути из 1-й вершины в n-ую.
Задача совершенно тупая и ничего, кроме внимательности не требует, но занимает много времени, потому что количество путей в 7-угольнике 326.
И вот бедный студент на экзамене должен написать все эти 326 последовательностей. На вопрос: а зачем это? Следовал безапелляционный ответ: хочу проверить, есть ли у вас логика.
Я с детства не любил тупых трудоемких процессов и всегда пытался их автоматизировать. Поэтому где-то в середине семестра я написал программу, которая выдает на печать все пути для n-угольников,где n <=15. Не скажу, что в то время это было просто. Языки программирования, которым нас обучали (Фортран и Бейсик) в то время не имели возможности рекурсивного вызова процедур. Про стек и очередь я тогда еще не слышал. Поэтому пришлось самому придумывать реализацию перебора с возвратом. Но в итоге получилось очень даже ничего.
Итак, кульминация.
Пару ведет завкафедрой. Пара с перерывом между часами (это важно). Примерно к концу первого часа завкафедрой рисует на доске 5-угольник и спрашивает, кто желает расписать все пути.
Так как у 5 угольника всего 16 вариантов - вызываюсь и расписываю все варианты.
Тогда он, так хитро на меня взглянув, говорит: а 7-угольник сможешь расписать?
Я - Да хоть 8 угольник!
Он - Ах так? А если не распишешь? (у 8 угольника 1957 вариантов)
Я - А если распишу?
Он - сейчас будет перерыв между часами, я прихожу на второй час и смотрим результат!
Завкафедрой уходит на перерыв, я бегом в соседний корпус к своему компу (работаю на нем по хоздоговору). Запускаю программу, результат на печать. Печать рулонная, каждая строчка высотой примерно 7мм. 1957 строк - 13 метров 70 см. Сворачиваю распечатку в трубку и бегом обратно в аудиторию. Опоздал минут на 10 (пока принтер печатал), хорошо что завкафедрой тоже обычно задерживался.
Он заходит в аудиторию почти сразу за мной, смотрит на пустую доску, потом на меня, и лицо его выражает справедливое негодование типа: ну и студент нынче пошел! Не может даже 1957 последовательностей написать!
И тут я разворачиваю перед ним 13 метровый список и говорю: вот, пожалуйста, можете проверить, вдруг я где-то ошибся!
Тут возникает мхатовская пауза. Я наслаждаюсь, аудитория тихо лежит под партами.
После этого случая завкафедрой очень меня зауважал. Но это уже другая история.