Prolog在应该返回值时打印为false

时间:2016-11-15 04:28:05

标签: list prolog minimum

所以基本上我试图在列表中找到第二个最小值,问题是mino和secondMin返回false而不是数字。当我手动minlist(List,Min)时,它会返回Min = number,但是我无法获得该值来获取该值。相反,它仍然是错误的。有人可以帮忙吗?

第二个最低要求

  removeFromPantry(name, amount){
    var item = {quantity: amount, name:name};

    console.log(item);
    var items = this.state.pantry.filter(function(itm){
      console.log(itm);
      console.log((item.name != itm.name) && (item.quantity != itm.quantity));
      return (item.name != itm.name) && (item.quantity != itm.quantity);
    });

    this.setState({ pantry: items });
    // this.forceUpdate();
  }

1 个答案:

答案 0 :(得分:2)

您需要阅读教程或获取教科书。只有算术“函数”返回值,如果在该模式下调用,则所有其他谓词只使用其中一个参数进行输出。

类似

minlist(List, Min)

而不是

Min is minlist(List)

这有点奇怪,因为你在谓词的开头几次正确地执行它,然后突然你开始做错了。

对于“列表中第二小的数字”,这可能更容易:

  

第二个最小元素是列表是排序列表中的第二个元素。

second_smallest(List, SS) :-
    sort(List, [_,SS|_]).

如果列表未被列入,则会中断,但原始尝试也是如此。