Задать вопрос
@pcdesign

Как посчитать БЖУ?

Вот например, есть продукты, которые в 100 граммах содержат:

[
   {
      "Гречка":{
         "Белки":11.7,
         "Жиры":2.7,
         "Углеводы":75
      }
   },
   {
      "Яйца":{
         "Белки":12.7,
         "Жиры":11.5,
         "Углеводы":0.7
      }
   },
   {
      "Сало":{
         "Белки":1.4,
         "Жиры":90,
         "Углеводы":0
      }
   }
]


Сколько чего нужно съесть, чтобы получилось, например 100 гр. белка, 95 гр. жиров и 150 гр. углеводов?

По идее первое, что пришло в голову это
https://ru.wikipedia.org/wiki/Задача_о_рюкзаке
Полез в гугл, ну нашел какие-то варианты.
https://pypi.org/project/knapsack/
Но они не очень подходят для данной проблемы.

P.S. Если тупо в экселе считать, то получается надо съесть ~ 200 гр. гречки, 600 гр. яиц и 20 гр. сала.
  • Вопрос задан
  • 551 просмотр
Подписаться 3 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 2
hint000
@hint000
у админа три руки
https://www.google.com/search?q=линейная+алгебра+п...
https://ru.wikipedia.org/wiki/Матрица_перехода
gre=11.7*pro+2.7*fat+75*cbh
egg=12.7*pro+11.5*fat+0.7*cbh
sal=1.4*pro+90*fat+0*cbh
Матрица перехода:
11.7 2.7 75
12.7 11.5 0.7
1.4 90 0
Нужно вычислить обратную матрицу и умножить эту обратную на искомый столбец (100, 50, 150). Не забыть, что за единицу измерения взяли 100 г.
Ответ написан
wataru
@wataru Куратор тега Алгоритмы
Разработчик на С++, экс-олимпиадник.
Это задача о многомерном рюкзаке (multi-dimensional knapsack). Каких-то простых трюков, как с обычным одномерным рюкзаком тут нет. Только перебор с отсечениями.

Еще можно свести задачу к целочисленному линейному программированию. Вводите переменные - сколько штук каждого пункта съели, составляете линейные уравнения. Потом можно это все скормить какому-нибудь решателю. Сейчас много библиотек и они довольно быстро такие задачи щелкают. Гуглите "integer linear programming solver".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽