В книжках с рецептами написана какая-то шляпа. Типа, «чтобы сварить суп, возьмите произвольное количество крысиной моркови, добавьте 13 кубиков мескалина и соли по вкусу, поставьте на огонь и ждите до готовности.» Какой, черт возьми, «по вкусу»?! Где я возьму огонь, у меня даже зажигалки нет! Это не алгоритм, это вообще ХЗ что такое.
Посему есть такая мыслишка:
1) сформулировать кухонные задачи конечным автоматом
2) сделать формальную модель основных типов продуктов и их трансформаций.
3) Тогда процесс готовки будет переходом из состояния «ваще ничего нет» в состояние «готовый суп». Или, если учесть что на кухне может быть одновременно И суп, И каша, в состояние «суп+каша».
Причем можно будет делать фишки
1) определять достижимость результата по набору параметров (можно ли за час из вот этого набора продуктов сварить суп)
2) по рецепту определять набор зависимостей (и печатать в виде листика, с которым идешь в магазин и вручаешь продавцу)
3) оптимизировать пути достижения «композитных состояний» (готовить суп с кашей одновременно может оказаться быстрее, чем по отдельности суп и по отдельности кашу)
4) с помощью специальных инструментов анализировать concurrency при работе нескольких человек (есть такая утилитка, только нужно чтобы в схеме не было никаких if'ов, только чистые переходы)
и самое главное,
5) по названию продукта генерить набор текстовых документов, в которых будет точно по шагам описано, в какой последовательности и что нужно делать, чтобы добиться результата. В случае интеграции с магазинами, можно будет включать в инструкции даже оптимальный маршрут хождения по магазинам!
типа так:
obed -Syuad
obed -S "суп с морковью"
Внимание, "суп с морковью" - непроверенный рецепт, может работать некорректно и привести к летальному исходу.
Генерация оптимального рецепта...
Анализ зависимостей...
Подготовка бумаг для магазинов без возможности удаленного заказа...
Подготовка предпросмотра транзакций к онлайн-магазинам...
Вам нужно будет купить #134 в "Холидей-Классик" на сумму 200 рублей
Вам нужно будет вживую сходить и купить 20 кирпичей крысиной моркови в магазине "Трусы мушкетера" на сумму 100 рублей.
Будет распечатан один список требований для магазина "Трусы мушкетера" на принтере "HP Deskjet 230".
Общая стоимость внешних зависимостей: 300р
Примерное время приготовления: 2 часа
Вы действительно хотите установить "суп с морковью"? y/n
Установка ручных зависимостей...
Пожалуйста, используйте распечатку #135 для визита в магазин "Трусы мушкетера", и после покупки продолжите процесс.
Продолжить готовку? y/n/c