@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 гр. сала.
  • Вопрос задан
  • 500 просмотров
Решения вопроса 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".
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽
20 июн. 2024, в 11:50
20000 руб./за проект
20 июн. 2024, в 11:19
10000 руб./за проект