在 Prolog 中对列表进行分区

2023-12-04

我正在尝试创建一个 Prolog 谓词,其中给定一个列表,可以看出该列表是否可以分为两个总和相同的列表。

我有一个工作列表总和谓词,因此我在分区谓词中使用它。我首先尝试对谓词进行编码,以查看列表的第一个元素是否等于列表其余部分的总和 ([2,1,1])。这就是我针对这种情况的情况。

partitionable([X|Y]) :-
   sum([X],SUM),
   sum([Y],SUM2),
   SUM = SUM2.

但是,我收到此错误消息:

ERROR: is/2: Arithmetic: `[]/0' is not a function. 

我想让这篇文章在我深入研究列表其余部分的递归之前就开始工作,尽管我对这条消息的内容感到困惑,因为我还没有写过'[]/0' function。任何帮助表示赞赏。


将列表分成两个不重叠的子序列, 我们用list_subseq_subseq/3:

list_subseq_subseq([]    ,[]    ,[]).
list_subseq_subseq([X|Xs],[X|Ys],Zs) :-
   list_subseq_subseq(Xs,Ys,Zs).
list_subseq_subseq([X|Xs],Ys,[X|Zs]) :-
   list_subseq_subseq(Xs,Ys,Zs).

为了执行整数算术,我们使用clpfd:

:- use_module(library(clpfd)).

让我们把它们放在一起!在下面的示例查询中,我们对列表进行分区[1,2,3,4,5,6,7]:

?- Xs = [1,2,3,4,5,6,7],
   sum(Xs,#=,Total),
   Half*2 #= Total,
   list_subseq_subseq(Xs,Ys,Zs),
   sum(Ys,#=,Half),
   sum(Zs,#=,Half).
  Xs = [1,2,3,4,5,6,7], Total = 28, Half = 14, Ys = [1,2,4,7], Zs = [3,5,6]
; Xs = [1,2,3,4,5,6,7], Total = 28, Half = 14, Ys = [1,2,5,6], Zs = [3,4,7]
; Xs = [1,2,3,4,5,6,7], Total = 28, Half = 14, Ys = [1,3,4,6], Zs = [2,5,7]
; Xs = [1,2,3,4,5,6,7], Total = 28, Half = 14, Ys = [1,6,7]  , Zs = [2,3,4,5]
; Xs = [1,2,3,4,5,6,7], Total = 28, Half = 14, Ys = [2,3,4,5], Zs = [1,6,7]
; Xs = [1,2,3,4,5,6,7], Total = 28, Half = 14, Ys = [2,5,7]  , Zs = [1,3,4,6]
; Xs = [1,2,3,4,5,6,7], Total = 28, Half = 14, Ys = [3,4,7]  , Zs = [1,2,5,6]
; Xs = [1,2,3,4,5,6,7], Total = 28, Half = 14, Ys = [3,5,6]  , Zs = [1,2,4,7]
; false.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Prolog 中对列表进行分区 的相关文章

  • Prolog 列表列表获取所有元素

    我有一个列表列表 decide 1 2 3 2 3 6 4 K 我想按 返回所有可能的解决方案 规则是首先返回其列表大小为 1 的值 然后我想返回其大小大于1的值 size 0 size Xs L size Xs N L is N 1 he
  • 如何将嵌套的数字列表转换为字符串列表?

    我有下面的列表 p 1 2 3 4 2 3 4 1 如何将子列表放入字符串中 例如 期望的结果是 p 1234 2341 可以通过将每个整数转换为字符串并连接字符串来完成 p join map str sub list for sub li
  • 根据前 2 个元素从嵌套列表中删除重复项

    仅当前两个元素相同时 我才尝试从嵌套列表中删除重复项 而忽略第三个元素 List L el1 el2 value1 el3 el4 value2 el1 el2 value2 el1 el5 value3 将返回 L el3 el4 val
  • python 中的扁平化列表

    我看过很多关于如何在 Python 中展平列表的帖子 但我一直无法理解这是如何运作的 reduce lambda x y x y myList 有人可以解释一下这是如何工作的吗 gt gt gt myList 1 2 3 4 5 6 7 8
  • 具有固定大小的 Java PriorityQueue

    我正在计算算法的大量可能的结果组合 为了对这些组合进行排序 我用双值对它们进行评级并将它们存储在 PriorityQueue 中 目前 该队列中有大约 200k 个项目 这非常占用内存 实际上 我只需要说出列表中所有项目中最好的 1000
  • Python 两个列表之间的多重条件

    我正在使用 python 3 我需要检查不同列表中的 3 个变量 我想打印数据 如果username age lang与其他列表不同 这是我的代码 list1 list2 list1 append username alice age 25
  • SQL SELECT 对值求和,不包括重复项

    我在 Oracle SQL 中遇到一个问题 我正在尝试解决这个问题 我将用一个例子来说明 我正在查询三个表 Employees EmployeeID Name 1 John Smith 2 Douglas Hoppalot 3 Harry
  • 如何使用append/3在prolog中递归构建列表?

    我需要了解一些事实的价值 这部分似乎正在发挥作用 fact1 A Val1 fact2 B Val2 A B 但是一旦我尝试附加这些值 Val1 Val2 通过使用append 3谓词到列表 OutList 我只得到一个可能的解决方案 而不
  • 将2个暗淡数组“列表列表”输出到python中的文本文件

    简单的问题 我正在创建一个两个暗淡的数组 ddist 0 d for in 0 d 在下面的代码中使用列表 它使用 gis 数据输出距离 我只是想要一种简单的方法来获取数组 列表的结果并将其输出到保持相同的 N N 结构的文本文件 我过去曾
  • 如何向列表添加值>

    我需要将派生类的元素添加到抽象类的共享指针列表中 我一直在尝试这个 我知道我正在尝试在下面的示例中创建抽象类的实例 但我不知道如何使其工作 简化的类如下所示 using namespace std class Abstract public
  • 合并多维数组并对在另一列中共享公共值的列值求和

    我有 3 个数组用于存储帖子 评论和点赞 这些是 JSON 字符串 comments JSON 存储用户和评论点 comments user 5 points 12 user 2 points 1 user 3 points 1 likes
  • 如何定义 map::iterator 列表和 list::iterator 映射

    我需要 Map iterator 的列表和 List iterator 的映射 我怎样才能做到这一点 typedef std list
  • 在 Python 中合并/添加列表

    我很确定应该有一种更 Pythonic 的方法来做到这一点 但我想不出一种方法 如何将二维列表合并到一维列表中 有点像 zip map 但有两个以上的迭代器 示例 我有以下列表 array 1 2 3 4 5 6 7 8 9 我希望有 re
  • 查找字典中列表的最大值

    我有一个字典 每个键后面都有一个存储的列表 看起来像这样 dict with values u New York u New York u NY datetime datetime 2014 8 13 0 0 10 u New York u
  • 计算例如具有多列 data.frames 的列表中的平均值

    我有几个 data frames 的列表 每个 data frame 有几列 通过使用mean mylist first dataframe a我可以得到这个 data frame 中 a 的平均值 但是我不知道如何计算列表中存储的所有 d
  • 单行的总和值?

    我有一个 MySQL 查询 它返回由一系列 1 和 0 组成的单行 它用于进度条指示器 我现在在代码中对它进行求和 但我尝试对查询中的值求和 并意识到我无法使用 SUM 因为它们有很多列 但只有一行 有没有办法可以在查询中自动求和 就像这样
  • 将嵌套列表转换为嵌套列表

    我知道可以将项目列表从一种类型转换为另一种类型 但是如何将嵌套列表转换为嵌套 List 已经尝试过的解决方案 List
  • 按相反顺序对列表进行排序

    我有直接顺序的列表 list1 List
  • java交叉连接两个列表

    我有一个 ABC 类 其中包含两个整数字段 public class ABC private Integer x private Integer y getters and setters 我有两个列表 xValues 和 yValues
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c

随机推荐

  • 仅在释放模式下按 HOME 时才会终止 Activity

    首先 我有两个 Activity Splash 和 MainActivity 仅支持纵向 在 MainActivity 中 我有很多片段使用幻灯片菜单 我想在用户离开 MainActivity 时保留当前片段 这是我的尝试 int curr
  • 无法在 CodeIgniter 中使用会话类检索会话 ID

    我的控制器中有这段代码 class Upload center extends Controller function construct parent Controller this gt load gt model auth model
  • 在 Automator 中编辑文本

    我想创建一个 Automator 服务 它可以获取所选文本并将其替换为编辑后的版本 i e 所选文本将类似于 这是所选文本 然后输出将采用该文本并输出类似 一些预定义的开始 这是选定的文本 这是选定的文本 我以前曾对文件名做过类似的事情 但
  • 如何使用 PHP Bitly v4 缩短 URL?

    我有 Bitly 的代码v3并且运行良好
  • RedirectToAction 不是重定向

    这不应该起作用吗 如果我最后有一个断点 它停在那里 但永远不会到达ContactAction 发布后的页面只是一个空白页面 没有源代码 我错过了什么 谢谢 您的联系人 ContactModel 模型 不应为 void 而应为 public
  • 如何将数据从应用程序发送到AppWidgetProvider?

    我陷入了一个特定的场景 用户从应用程序更新时间后 我需要立即更新我的小部件 我确实尝试通过 Intent Extras 发送数据来进行广播 但失败了 目前 我的数据在AppWidgetProvider我需要将此数据发送到服务 public
  • 更改 LISP 中列表的副本

    在 LISP 中 我有一个传递列表的函数 我想更改此列表的元素而不更改原始列表 通常情况下 我会使用copy list创建我将更改的列表的本地副本 但这似乎不起作用 CL USER gt defun test item let copy c
  • Azure DevOps 多阶段管道陷入等待批准状态

    我将托管的 Azure DevOps 与 Azure Git Repos 中的代码一起使用 我们曾经使用 经典 的基于 UI 的管道编辑器 但在构建 发布阶段正在转向 YAML 模板 过去 我配置了 CI CD 以便当代码通过拉取请求提交到
  • 类型“List”不是类型“List”的子类型

    我有一段从 Firestore 示例中复制的代码片段 Widget buildBody BuildContext context return new StreamBuilder stream getEventStream builder
  • 更新 Entity Framework 6 中的子对象

    使用实体框架6 2 我有以下两个模型 实体 public class City public int CityId get set public string Name get set public class Country public
  • Rails 如何获得最佳性能请求并行 sidekiq 工作线程

    我的 Rails 应用程序有一名 sidekiq 工作人员 该工作线程将向外部 api 发出 2500 个请求 响应是一个 xml 如何让该员工获得最佳绩效 在工作线程内部 生成应用程序级线程 例如 创建 10 个 ruby 线程来处理 2
  • 如何用 Python 编写与 Wikipedia 中的示例不同的策略模式?

    在 2009 年策略模式的维基百科条目中 有一个例子用 PHP 编写 大多数其他代码示例都会执行以下操作 a Context new StrategyA new a execute gt Doing the task the normal
  • 在 JavaScript 中检查字母数字的最佳方法

    对文件执行字母数字检查的最佳方法是什么INPUT领域在JSP 我已附上我当前的代码 function validateCode var TCode document getElementById TCode value for var i
  • Form_Load() '事件' 或覆盖 OnLoad()

    我希望有人尝试解释它们之间的区别 更具体地说 是示例使用场景 我正在重构一些窗口窗体代码和一个Form有一些代码在Form Load 事件并且也在protected override void OnLoad 调用的事件base OnLoad
  • @Dependent 范围在 Wildfly 中不是默认的吗?

    我在使用 Wildfly 通过 Inject 注入 POJO 时遇到一些麻烦 文档明确指出 Dependent 如果未指定 则默认范围 这意味着一个对象的存在只是为一个客户端 bean 提供服务 并且与该客户端 bean 具有相同的生命周期
  • 如何在Python线程中使用qtwebkit?

    我正在尝试使用 qtwebkit 解析 js 生成的网页 我找到了如何获取页面源的示例 import sys from PySide QtGui import from PySide QtCore import from PySide Qt
  • 如何测试更新方法?

    我是单元测试新手 并在我的 Java Spring Boot 应用程序中使用 JUnit 我有时需要测试更新方法 但是当我在网上搜索时 没有合适的示例或建议 那么 您能否澄清一下如何测试以下更新方法 我认为这可能需要与测试 void 不同的
  • 如何使用 beautifulsoup 打印 href 属性,同时通过 selenium 实现自动化?

    蓝色元素的 href 值是我想从此 HTML 访问的内容 我尝试了几种方法来打印链接 但没有成功 我的代码如下 discover page BeautifulSoup r text html parser finding accounts
  • 运行react-native run-android时出错

    https facebook github io react native docs getting started html I have followed the instruction that are on this link Bu
  • 在 Prolog 中对列表进行分区

    我正在尝试创建一个 Prolog 谓词 其中给定一个列表 可以看出该列表是否可以分为两个总和相同的列表 我有一个工作列表总和谓词 因此我在分区谓词中使用它 我首先尝试对谓词进行编码 以查看列表的第一个元素是否等于列表其余部分的总和 2 1