使用 SICStus Prolog 推广斐波那契数列

2023-12-02

我正在尝试寻找广义斐波那契序列(GFS)查询的解决方案。问题是:是否有第 12 个数字为 885 的 GFS?最初的 2 个数字可能限制在 1 到 10 之间。

我已经找到了在从 (1, 1) 开始的序列中查找第 N 个数字的解决方案,其中我明确定义了初始数字。这是我为此所做的:

fib(1, 1).
fib(2, 1).

fib(N, X) :-
    N #> 1,
    Nmin1 #= N - 1,
    Nmin2 #= N - 2,
    fib(Nmin1, Xmin1),
    fib(Nmin2, Xmin2),
    X #= Xmin1 + Xmin2.

对于提到的查询,我认为以下方法可以解决问题,其中我重用 fib 方法,而无需显式定义初始数字,因为现在需要动态完成:

fib(N, X) :-
    N #> 1,
    Nmin1 #= N - 1,
    Nmin2 #= N - 2,
    fib(Nmin1, Xmin1),
    fib(Nmin2, Xmin2),
    X #= Xmin1 + Xmin2.

fib2 :-
    X1 in 1..10,
    X2 in 1..10,
    fib(1, X1),
    fib(2, X2),
    fib(12, 885).

...但这似乎不起作用。

难道不可能用这种方式来定义初始数字,还是我做错了什么?我不是在寻求解决方案,但任何可以帮助我解决这个问题的建议将不胜感激。


在 SWI-Prolog 下:

:- use_module(library(clpfd)).

fib(A,B,N,X):-
    N #> 0,
    N0 #= N-1,
    C #= A+B,
    fib(B,C,N0,X).
fib(A,B,0,A).

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

使用 SICStus Prolog 推广斐波那契数列 的相关文章

  • Prolog 时间重叠问题

    假设我有这个知识库 free ann slot time 8 0 time 9 0 free ann slot time 10 0 time 11 0 free bob slot time 7 0 time 8 30 free bob sl
  • 在 dll 中嵌入 prolog 引擎

    我最近一直在开发一个嵌入 prolog 推理引擎的 C 应用程序 正如标题中所述 我现在尝试生成一个 DLL 而不是可执行文件 以便我可以在另一个项目中使用它 由于我是 DLL 开发的新手 我想我可以从一个小例子开始 我有3个文件 like
  • 斐波那契搜索

    有人请解释一下斐波那契搜索算法 我尝试了很多资源并进行了很多搜索 但算法仍然不清楚 大多数资源都在与二分搜索的链接中描述了它 但我不明白它们 我知道斐波那契搜索算法是二分搜索的扩展 我对此非常了解 我的书也未能解释 我知道斐波那契数定义为
  • 关于比奈公式的一些知识

    为什么比奈公式 O LogN 但不完全是 在时间上比迭代方法 O n 效果更差 static double SQRT5 Math Sqrt 5 static double PHI SQRT5 1 2 public static int Bi
  • 获取 Prolog 中的解决方案列表

    我正在学习 Prolog 并且正在阅读一本名为 人工智能 Prolog 编程 的书 作为练习 我想学习如何扩展本书中的示例之一 有人可以帮忙吗 假设您有以下事实 parent pam bob pam is a parent of bob p
  • 二叉树的 Herbrand 宇宙、Herbrand 基础和 Herbrand 模型(序言)

    什么是二叉树的 Herbrand 宇宙 Herbrand Base 和 Herbrand Model binary tree empty binary tree tree Left Element Right binary tree Lef
  • Prolog - 删除非唯一元素

    我有一个谓词来检查元素是否是列表的成员 并且看起来如下 member X X member X T member X T 当我打电话时 member 1 2 3 1 4 我明白了 是的 现在我必须使用它来编写谓词 该谓词将从列表列表中删除所
  • 在 Prolog 中表达“交换性”的替代方案?

    作为一个Prolog的初学者 我发现Prolog中的交换表达式非常不直观 例如 如果我想表达 X 和 Y 属于一个家庭 例如 family X Y married X Y relative X Y father son X Y 我还应该在定
  • 如何在 Prolog 中为变量(如字符串)分配多个值?

    今天早些时候 我寻求帮助以在序言中构建数据库以及如何通过参数搜索 有人提出了这个 您还可以向每个处理器添加术语列表 例如 processor pentium g4400 brand intel family pentium series g
  • 寻找最大最小值集合

    我正在尝试编写一个 天真的或半天真的 程序 给定一组元素和许多玩家将其划分为这个数量的玩家 并且对于每个这样的划分取最小值 按总和 子集 然后 我想计算所有这些最小除法的最大值 这被称为https en wikipedia org wiki
  • 如何从序言中的列表中删除列表?

    我想在序言中实现以下问题 Given L1 1 2 3 4 and L2 2 3 4 调用名为remove list L1 L2 L 的函数将从L1中删除L2 所以L将是 1 但是 如果第二个列表的元素与 L1 中的元素顺序不同 或者更准确
  • SWI-Prolog 中的约束编程

    我想要一个包含三个元素 A B 和 C 的列表 L 并具有以下约束 use module library clpfd L A B C L ins 1 3 A B C 但是 它给出了一个错误 Syntax error Operator exp
  • Prolog 匹配 vs miniKanren 统一

    在 Prolog 人工智能编程中 Bratko 在第 58 页说了以下内容 Prolog 中的匹配对应于逻辑中所谓的统一 但是 我们避免使用 统一 这个词 因为出于效率原因 在大多数 Prolog 系统中 匹配的实现方式并不完全对应于统一
  • 求解序言中极其简单的方程:A = B + C?

    我有一个非常简单的方程 我希望能够在序言中求解 A B C 我希望能够编写一个谓词来表达这种关系 它可以处理任何一个未实例化的参数 无需推广到更复杂的关系或方程 myEquation A B C something 我可以使用以下语义进行调
  • 转换句子会产生无限循环 - 但如何转换呢?

    我不明白这是哪里出了问题 请注意 我对 Prolog 很陌生 我确信我错过了一些东西 只是不知道那可能是什么 有人可以帮我吗 谢谢 这是我的代码 printSentence printSentence W write W write nl
  • 列表中的连续元素

    我正在阻止一个谓词来编码Prolog 我需要对两个谓词进行编码 如果我打电话 u a b c d e f X 它会给X a b X b c X c d 如果我打电话 v a b c d e f X 它会给X a b X c d X e f
  • 控制 Prolog 变量值选择

    灵感来自之前的一个问题 https stackoverflow com questions 41595786 using operator to save variables in a list我尝试实现一些可以枚举布尔表达式可能性的东西
  • 如何为有效号码指定 DCG?

    我正在尝试为有效数字指定 DCG 如下所示 value Number gt valid number Number 基本上检查指定的值是否是数字 它也可能是变量 因此有必要检查 我不知道如何构建这个valid number不过 DCG 谓词
  • 斜线(/)在序言中做什么?

    我有这个代码 set value X Value X T X Value T set value X Value Y V T Y V NewT X Y set value X Value T NewT set value X Value X
  • 根据一个值找到列表内列表的最小值

    我在序言中有这个列表 dublin london 1000 dublin moscow london 5000 我想计算列表的最小值 这样答案应该是 dublin london 1000 这个问题有一些类似的问题序言中列表列表中的最小值 h

随机推荐

  • 如何在 PHP 中使用 FTP 从另一台服务器传输文件

    我正在尝试找到一种在服务器之间传输文件的方法 源服务器可以是任何平台 我们甚至可能对它一无所知 除了它支持 FTP 之外 我在 SO 上找到的许多帖子建议使用 scp sftp rsync 或 wget 来实现此目的 鉴于这个 PHP 脚本
  • 如何在 SQL Server 中使用带框架的窗口函数执行 COUNT(DISTINCT)

    搭载这个可爱的问题 可以使用 DISTINCT 进行分区函数 COUNT OVER 我希望计算不同值的移动计数 大致如下 Count distinct machine id over partition by model order by
  • C++11 之前的初始值设定项列表中同一变量的多个突变是否为未定义行为

    考虑以下代码 int main int count 0 int arrInt 2 count count return 0 如果我们使用以下命令编译代码clang std c 03它会产生以下警告 活生生的例子 warning multip
  • redbean - 嵌套豆 - 出了什么问题?

    我正在尝试建立一个简单的嵌套 bean 关系 我错过了什么 我真的很喜欢 redbean 简单的 ORM 语法 并且真的很想使用它 但我似乎无法让它为我工作 还有其他类似的东西可能更成熟吗 我想要一些轻量且简单的东西来构建 WordPres
  • setCloseButtonIcon(Bitmap drawable) 不适用于 ChromeCustomTab 中的 SVG

    我需要更改 ChromeCustomTab Android 中的默认十字图标 我使用以下代码通过后退图标更改它 Bitmap icon BitmapFactory decodeResource context getResources R
  • 无法使用 spring 连接到 Azure SQL 数据库服务器

    我能够连接到具有 IP 地址的数据库 但是如果 我在 Azure SQL 数据库服务器中创建了我的数据库 因为我无法使用 spring 配置 Java Web 应用程序进行连接 它显示错误说 与主机 vinayaka cloudapp ne
  • Shell 脚本中的字符串连接错误

    我是 Shell 脚本编写的初学者 我使用了一个变量来存储值A MyScript 我尝试在后续步骤中连接字符串 A new 令我惊讶的是它不起作用并且 A new worked 您能帮我理解这些细节吗 Thanks Shell 变量名由字母
  • 显示来自 BroadcastReceiver 的复杂 Toast

    我想知道是否有人可以帮助我 我试图在收到短信时显示 toast 元素 这个 toast 应该包含一个布局 其中有一个图像 短信图标 和 2 个文本视图 发件人 消息 如果我从活动中调用以下方法 它将按预期工作 public void sho
  • 为什么 item.getMenuInfo() 为空?

    在我的 ListView 项目中 我有 4 8 个 ImageView 其中一些是不可见的 具体取决于某些值 和 4 个 TextView 当我长按 Listview 的项目时 AdapterContextMenuInfo item get
  • 如何判断 DOM 元素在当前视口中是否可见?

    有没有一种有效的方法来判断 DOM 元素 在 HTML 文档中 当前是否可见 出现在viewport 问题涉及 Firefox Now 大多数浏览器支持获取边界客户端矩形方法 这已成为最佳实践 使用旧答案非常慢 不准确 and 有几个错误
  • 不支持的操作:不可写 python

    电子邮件验证 Email validator import re def is email email input Enter your email pattern w 1 w w file open ValidEmails txt r i
  • 如何为 Eclipse 编写插件? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我如何开始编写插件Eclipse 我找过文档 但不幸的是很少或者很差 那么有哪些文章可以推荐呢 Eclipse 和 IBM 的主站点上有一些非常好的资源和教程 最好的方法之一是选
  • mysql_insert_id线程安全吗?

    我正在使用 MySQL C API 构建数据库客户端应用程序 并且我需要获取 INSERT 语句中的最后一个自动增量值 因此 mysql insert id 可以做到 但是这个客户端是多线程的 并且是这样的一段代码 mysql query
  • 如何在Python中使列表只包含不同的元素? [复制]

    这个问题在这里已经有答案了 我有一个 Python 列表 如何使其值唯一 最简单的方法是转换为集合 然后再转换回列表 my list list set my list 这样做的一个缺点是它不会保留订单 您可能还想首先考虑使用集合 而不是列表
  • 保护正在访问的用户文件,以便只有所有者才能访问?

    我正在用 php 编写一个 Web 应用程序 用户可以在其中上传自己的文件或图像 但如何保护这些文件不被所有者以外的其他人访问 想想 dropbox 保护这些文件的机制是什么 我尝试过搜索 但没有得到任何关于此的信息 任何指向教程的指针或链
  • 使用进程名称获取另一个程序的窗口标题

    这个问题可能很基本 但我很难破解它 我假设我必须使用一些东西ctypes windll user32 请记住 我几乎没有使用这些库的经验 甚至没有ctypes作为一个整体 我已经使用此代码列出了所有窗口标题 但我不知道应该如何更改此代码以获
  • 使用html5(提醒应用程序)访问电话闹钟(原生资源)

    这些是我的技术 HTML5 Jquery 移动 Jquery Javascript Css Cordova 我们正在使用 HTML 5 开发应用程序 我们需要访问手机 Android iPhone Windows Phone 资源 例如闹钟
  • Swift 中的重命名问题

    我是第一次使用 Swift 进行编程 在此过程中我遵循this教程 不幸的是 该教程看起来有点过时 并且大多数代码都会引发构建时错误 最常出现的错误是NSURLSession has been renamed to URLSession 我
  • 如何使用 python 以“更智能”的方式下载文件?

    我需要在Python中通过http下载几个文件 最明显的方法就是使用 urllib2 import urllib2 u urllib2 urlopen http server com file html localFile open fil
  • 使用 SICStus Prolog 推广斐波那契数列

    我正在尝试寻找广义斐波那契序列 GFS 查询的解决方案 问题是 是否有第 12 个数字为 885 的 GFS 最初的 2 个数字可能限制在 1 到 10 之间 我已经找到了在从 1 1 开始的序列中查找第 N 个数字的解决方案 其中我明确定