Как мы считаем недельное меню в Pikni Food: пачки, остатки и solver вместо списка рецептов
Когда мы только начали собирать Pikni Food, идея выглядела довольно простой: пользователь отвечает на несколько вопросов, мы подбираем блюда, считаем калории и показываем список покупок.
На первый взгляд это похоже на обычное приложение с рецептами. Но довольно быстро стало понятно, что самая интересная часть начинается не в рецептах, а в довольно базовой продуктовой корзине.
Например, меню требует 620 г гречки, а в магазине она продаётся пачкой 900 г. Рецепту нужно 180 г творога, а упаковка может быть 400 г. Огурец в салате можно посчитать как 70 г, но купить его всё равно придётся штукой или лотком. Если считать только съеденные граммы, неделя выглядит аккуратно и недорого, ну а если считать чек, то… получается совсем другая история.
Так мы пришли к выводу, что мы делаем не просто «генератор рецептов», а планировщик продуктовой корзины. А в нём важно не только КБЖУ, но и многое другое, например: упаковки, остатки, сроки годности, цены магазинов, техника на кухне, время готовки и тд.
Ниже расскажу как это всё устроено, какие алгоритмы пробовали, с какими проблемами столкнулись и как мы их решали.
https://habr.com/ru/articles/1048656/
Алгоритмы и Структуры данных
Post #4720
531