Задать вопрос
@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 гр. сала.
  • Вопрос задан
  • 519 просмотров
Подписаться 3 Простой 1 комментарий
Решения вопроса 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 Екатеринбург
от 200 000 до 300 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
18 янв. 2025, в 03:12
1000 руб./за проект
18 янв. 2025, в 00:01
500 руб./за проект
17 янв. 2025, в 23:56
10000 руб./за проект