我可以使用我已经知道的语言来解决这个问题,但我希望使用 prolog(也许还有 clpfd)来解决这个问题,因为我想学习这些技术。我看到一些对使用 SQL 的类似问题的引用,但这不是我感兴趣的。
我有一组成分,每种成分都有卡路里计数、蛋白质含量、脂肪含量等属性。不会超过几十种成分,可能不会超过六种属性。在 CI 中,会将其建模为结构数组。
然后,我希望能够生成使用受约束的成分组合的食谱。例如,总热量<1000,脂肪少于30%,蛋白质超过25g。我可能还想说“排除白米饭”,例如因为我现在没有白米饭。
答案可能是“125 克鸡肉、25 克胡萝卜、100 克蒸米饭”之类的项目列表。
我是否在正确的轨道上使用 prolog/cplfd 做到这一点?是否存在使其不适合初学者的特殊困难(尽管我是其他语言的经验丰富的程序员)?
我将如何建模这个数据库?我看到序言有列表和元组..我会将它表示为元组列表吗?
我能否表达数学约束,例如“总卡路里 < 1000 和来自脂肪的卡路里 < 总卡路里的 30% 和蛋白质 > 25g”?
有没有我可以搜索的此类问题的名称?
是否有我可以用作指南的现有 prolog 示例?