На Тостере иногда встречаются вопросы о том, как научиться думать как программист. Год назад я ради развлечения решил написать программу которая решает всем хорошо известную задачку — головоломку
о волке, козе и капусте. В англоязычных источниках известную как river crossing puzzle.
В этом посте я представлю вам пример мыслительного процесса от задачи к ee алгоритмическому решению.
Должен признаться, что из-за многолетнего влияния объектно-ориентированной парадигмы на мой мозг, первое, что мне пришло в голову, это для всех сущностей, участников задачи, написать классы. Проблемно-ориентированное программирование и все такое. Но я вовремя остановился, вспомнив старые учебники по паскалю, где оперировали понятиями фунцкия и процедура.
Чтобы перевести задачу в плоскость понятную машине, нам нужно избавиться от тех частей контекста задачи, который не имеет значения для ее решения.