根据给定索引和元素数量的列表创建子列表。序言

2024-01-07

我正在尝试解决一个简单的序言问题,但我无法解决它。从列表中,需要创建一个给定索引 I 的子列表,然后从 I 中创建一个给定为 N 的下一个元素。如果索引大于列表长度,我将使子列表为空。如果 N(元素数量)大于列表中的其余元素,我将获得从 I 到末尾的所有元素。

在这里,我得到了作业的一部分,我可以从索引 I 中得到下一个元素 N。现在我询问作业中的其他部分:

1) When I(索引)比列表长度长,我必须在子列表中获取一个空列表。

?- sublist([a,b,c,d],5,2,L)

L=[]

2) When N(下一个元素)大于我们剩余的元素数量,我需要获取从该位置到末尾的所有元素。

?- sublist([a,b,c,d],4,4,L)

L=[d]      

我已经拥有的代码是下一个,这个正在工作:

sublist([X|_],1,1,[X]).
sublist([],_,_,[]).% I use this one for the case bases
sublist([X|Xs],1,K,[X|Ys]):-
       K>1, 
       K1 is K-1,
       sublist(Xs,1,K1,Ys).
sublist([_|Xs],I,K,Ys):-
       I > 1, 
       I1 is I-1,
       sublist(Xs,I1,K,Ys).

sublist([X|_], 1, 1, [X]).

这是一个很好的条款。它表示从列表中取出一个从 1 开始的长度为 1 的子列表[X|_] is [X].

sublist([X|Xs], 1, K, [X|Ys]) :-
    K > 1, 
    K1 is K - 1,
    sublist(Xs, 1, K1, Ys).

这也是一个很好的条款。它说长度的子列表K从 1 开始取自[X|Xs]以。。开始X并且有一条尾巴Ys这是长度的子列表K-1从第一个列表的尾部开始(Xs) 从 1 开始。

sublist([_|Xs], I, K, Ys) :-
    I > 1, 
    I1 is I - 1,
    K1 is K - 1,
    sublist(Xs, I1, K1, Ys).

这个条款有问题。如果你有一个清单[_|Xs]并想要获取长度的子列表K开始于I (for I大于 1),则取长度的子列表K-1从它的尾部开始的位置I-1。问题是:为什么子列表现在需要长度K-1?该子句的目的应该是将问题减少到处理起始索引为1,然后让第二个子句处理其余的事情。

然后在您对所需行为的定义中,您有:如果 N(元素数量)大于列表中的其余元素,我将获得从 I 到末尾的所有元素。目前任何条款中都没有这个概念。基本情况当前是您的第一个子句,它特别需要长度为 1 才能生成长度为 1 的列表。您需要另一个基本情况子句来处理第一个列表为空但K可能仍然是任何值:

sublist([], ?, _, ?).

只需填写?与一些合乎逻辑的事情。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据给定索引和元素数量的列表创建子列表。序言 的相关文章

  • Haskell:处理死锁的自引用列表

    GHC 允许永久阻止以下内容是否有任何有用的理由 list 1 tail list 看起来列表迭代器 生成器有点复杂 我们应该能够做一些更有用的事情 Return error Infinitely blocking list Return
  • 如何根据 2D 索引和 1D 值向量替换 Numpy 3D 数组中 z 轴的值

    我似乎很难理解数组索引 给出了什么 我确实有一个 3d 数组 如下所示 a 3d np zeros 3 3 3 二维索引数组 a 2d index np array 0 0 1 0 0 0 0 1 1 astype bool 以及要放入 3
  • 生成字符串及其子字符串列表的排列的算法

    我已经忘记这个算法有一段时间了 假设我得到了字符串 cccaatt 我试图生成重复字母的每个子串的所有可能变体 EG cccaatt 作为输入将返回 猫 卡特 猫 卡特 ccat 卡特 卡特彼勒 卡特彼勒 cccat cccat cccaa
  • 向 python 元组添加条目

    我有一个代表 x y 点的元组列表 我还有每个点的值列表 如何将它们组合成列表列表 即每个点 x y val 一个条目 或元组列表 Thanks 您无法向元组添加条目 因为元组是不可变的 但您可以创建一个新的列表列表 new x y val
  • 将“mod”运算符与“or”一起使用时是否强制具体化?

    我使用 CLP FD 和 SWI Prolog 编写了一个 CSP 程序 我认为当我使用时我需要改进我的约束写作mod操作员 和 一起 在我的谓词中 一个简短的例子 use module library clpfd constr X Y Z
  • 如何对 glob.glob 进行数字排序?

    我在一个文件夹中有一堆按数字排序的文件 当我尝试对 glob glob 进行排序时 我从来没有以正确的顺序获得文件 文件示例和预期输出排序 folder C Users user Desktop folder 1 sample mp3 C
  • Prolog真的基于封闭世界假设吗?

    在下面封闭世界假设 https en wikipedia org wiki Closed world assumption 目前未知的事实是错误的 Prolog 的语义通常被认为遵循封闭世界假设 例如 here https cstheory
  • 列表子类的 Python 类型

    我希望能够定义列表子类的内容必须是什么 该类如下所示 class A list def init self list init self 我想包括打字 这样就会发生以下情况 import typing class A list typing
  • 如何向列表添加值>

    我需要将派生类的元素添加到抽象类的共享指针列表中 我一直在尝试这个 我知道我正在尝试在下面的示例中创建抽象类的实例 但我不知道如何使其工作 简化的类如下所示 using namespace std class Abstract public
  • 在 Python 中获取数组作为 GET 查询参数

    我知道在 php 中我可以使用 GET key1 key2 检索以数组形式发送的 GET 数据 但这在 Python 中是可能的 因为我只收到一个字符串 但它不被识别为数组 列表 如果重要的话我使用flask werkzeug 参数名称的深
  • Python列表内存存储[重复]

    这个问题在这里已经有答案了 据我了解 Python 列表本质上是 C 数组 它们分配特定的顺序内存块 但是 这些内存块实际上存储列表中的数据还是它们只是指向内存中存储实际数据的另一个位置 它可能取决于列表中存储的对象的大小吗 因为您可以轻松
  • 如何循环访问 WPF StackPanel 静态项目?

    可能很容易 但我很难弄清楚这一点 谷歌似乎也没有多大帮助 如何循环遍历 StackPanel 的静态声明元素 无数据绑定 元素在 xaml 中声明 任何帮助表示赞赏 你的意思是StackPanel的孩子们 foreach var child
  • findall 的异常行为

    以下看起来很不寻常 findall X member X 1 2 3 X X 1 2 3 痕迹更是如此 trace findall X member X 1 2 3 X Call 11 findall 100058 member 10005
  • 了解 Scala 中的中缀方法调用和缺点运算符(::)

    我对 Scala 编程语言相当陌生 当我遵循以下网站的讲义时 我正在尝试一些萦绕在我脑海中的东西 here http horstmann com sjsu cs152 04 closures1 html 我想我无法真正理解 cons 运算符
  • 在电话字段的前 3 个字符(区号)上创建索引?

    我有一个 Postgres 表 其中电话字段存储为varchar 10 但我们经常搜索区号 例如 select from bus t where bus phone like 555 我想创建一个索引来促进这些搜索 但在尝试时出现错误 CR
  • Prolog 谓词参数中实例化模式指示符的含义

    查看Prolog文档 谓词签名有时会写成如下 foo Bar Baz Qux Mop 什么是 and 我该如何解释它们 另外 这些是唯一存在的还是还有更多 在这种情况下 这些前缀运算符代表实例化模式 即它们告诉您哪些参数应该是变量或在调用谓
  • 简单的布尔表达式测试

    user compiling user for byte code formula 0 P Q P Q P user compiled 2 lines read 768 bytes written 37208 ms yes formula
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • java交叉连接两个列表

    我有一个 ABC 类 其中包含两个整数字段 public class ABC private Integer x private Integer y getters and setters 我有两个列表 xValues 和 yValues
  • 内置方案以检查列表包含情况

    在Python中 我可以执行 x in list 来查看列表是否包含x 方案中是否有等效的内置功能可以做到这一点 The R5RS http schemers org Documents Standards R5RS HTML r5rs Z

随机推荐

  • GAE 上的 Struts 2:无法在拦截器内设置会话值

    我正在编写一个 Struts 2 拦截器 在其中检查用户是否有效 如果无效 用户将被重定向到登录页面 但在此之前 我尝试检索用户访问此处的 URL 并将其放入会话变量中 以便在登录完成后我可以将他重定向回那里 但是当我尝试在会话中放入一个值
  • background-position-y 在 Firefox 中不起作用(通过 CSS)?

    在我的代码中background position y不起作用 在 Chrome 中可以 但在 Firefox 中不行 有人有什么解决办法吗 如果你的position x是0 除了写之外没有其他解决方案 background positio
  • Wiki 数据导入 virtuoso

    我想将维基数据加载到 virtuoso 中 经过几天的搜索 我找不到任何教程 或者至少找不到使用 virtuoso 来 sparql 查询 wikidata 的人 我不想白花钱买一台服务器来加载50G 的数据 例如 为什么是 virtuos
  • 使用polyfit来预测物体掉落的位置?

    我有一个物体以抛物线模式抛出的信息 从开始位置到结束位置 按照特定时间间隔总共拍摄了 30 张图像 现在我已经成功提取了所有 30 张图像中被抛出物体的 x y 坐标 我认为使用 polyfit 或者也许是 polyval 可以帮助我预测前
  • 如何使用 QSocketNotifier (linux) 监视串行端口?

    有人可以给我一个关于如何设置 QSocketNotifier 在发生事件时触发事件的示例吗 dev ttyS0 最好在 python pyqt4 中 下面是一个使用 QSocketNotifier 不断读取文件的示例 只需将 foo txt
  • SQL 2005中检查外键是否存在的方法

    有没有一种简单的方法来检查表中的列是否存在外键 我正在编写一个脚本 仅当外键不存在时才会添加外键 您可以使用这个脚本 IF EXISTS SELECT FROM sys foreign keys WHERE object id OBJECT
  • Google Javascript API 地理编码限制

    使用 Google Maps JavaScript API v3 进行客户端地理编码有哪些限制 我的研究 Google Maps PHP API 每天的地理编码请求限制为 2500 个 https developers google com
  • 如何将热量输出包含在 wix 文件中? (没有 Visual Studio 项目)

    我需要构建一个安装程序 并且出于多种原因 我想避免使用 WiX 项目模板 我非常高兴自己编写这些东西的脚本 并且已经有了一个适合它的自定义构建流程 我相信我很好地理解了 WiX 蜡烛 加热和照明工具的作用 我正在熟悉 wxs 文件格式 并且
  • 为什么 GDB 计算浮点运算的方式与 C++ 不同?

    我在尝试处理浮点算术问题时遇到了一些令人困惑的事情 首先 代码 我将问题的本质提炼到这个例子中 include
  • 如何向 Xcode 4.4 添加本地化语言?

    参考本指南 如何使用 Xcode 4 本地化我的应用程序 https stackoverflow com questions 5349066 how to localize my app with xcode 4 我注意到在本地化下 我的
  • ClientBase 未实现 IDisposable 成员

    如果 Dispose 方法声明不可见 声明 那么 System ServiceModel ClientBase 抽象类如何实现 IDisposable 接口 如果我尝试做同样的事情 我会收到错误并且无法编译 abstract class A
  • SQL Server - 按小时、多天查询

    我希望使用 datepart 运行 SQL 查询 将数据拆分为每小时增量 然后使该查询运行多天 目前 我只是将日期增加一天 然后运行多个查询 我想知道是否有一种方法可以将这一切合并到一个查询中 该查询将提供整个日期范围的输出 select
  • php 中特定日期的上一个工作日

    我正在寻找获取特定日期的最后一个工作日的最佳方法 我使用的示例是平安夜 12 月 24 日 前的最后一个工作日 不幸的是这不起作用 echo date l jS of F Y h i s A strtotime last weekday b
  • .Net 4.5:我应该使用 IDataErrorInfo 还是 INotifyDataErrorInfo?

    我以前用过IDataErrorInfo在我的 MVVM WPF 应用程序中 现在之后INotifyDataErrorInfo在 Net 4 5中可用 是否最好替换IDataErrorInfo或继续使用旧方法IDataErrorInfo 有许
  • 对象函数 (a,b){return new e.fn.init(a,b,h)} 没有方法 'cookie'

    试图获取 a 的值cookie如果它设置并更新div与cookievalue 否则生成一个80 100之间的随机数 将其设置为cookie 然后更新div 我收到错误 Object function a b return new e fn
  • 如何在 html 元素上重写 onkeydown ?

    我继承了一个在弹出窗口中实现禁用 F5 的应用程序 但是 如果用户单击窗口正文下方并按 F5 页面仍会刷新 我将函数调用移至 现在 F5 被禁用 一切都按预期工作 然而 这不是放置代码的最佳位置 如果我可以在我的代码中执行如下所示的操作 我
  • 是什么让 React 库需要 preact-compat?

    我注意到某些图书馆 例如classnames在 Preact 中很容易获得 但其他人喜欢styled components要求preact compat 是什么使得 React 库在 preact 中不受本机支持而需要使用 preact c
  • 函数中返回向量后清除内存

    我有一个函数 可以在其中处理和存储大量数据 然后将结果作为类向量返回 该函数中存储的数据量巨大 我想在该函数完成工作后清除该函数的存储内存 是否有必要这样做 该函数是否自动清除内存 或者我应该通过某些函数清除内存 Update vector
  • 需要将 git 分支重置为原始版本

    我不小心在一个本来不应该在的分支上工作了一段时间 所以我从它的分支上给它起了适当的名字 现在我想将我不应该进入的分支覆盖到原始版本 github 是否有捷径可寻 我尝试删除分支 然后重置跟踪分支 但它只是给了我再次正在处理的版本 如果你还没
  • 根据给定索引和元素数量的列表创建子列表。序言

    我正在尝试解决一个简单的序言问题 但我无法解决它 从列表中 需要创建一个给定索引 I 的子列表 然后从 I 中创建一个给定为 N 的下一个元素 如果索引大于列表长度 我将使子列表为空 如果 N 元素数量 大于列表中的其余元素 我将获得从 I