- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个程序来检查学生程序是否可以实现某个目标。我可以做那个部分。现在,我想检查学生程序是否真的包含不必要的代码。为了解决这个案例,我想我需要知道学生程序是否包含对指定目标没有贡献的事实。但是,我无法弄清楚如何找到对目标没有贡献的事实。
为了更容易理解,让我们考虑一个更简单的例子。在这个例子中,指定的目标是:john 是 tomy 的祖父吗?
father(john, jim).
father(jim, tomy).
father(john, david).
father(bruce, anne).
mother(mary, jim).
grandfather(A,B) :- father(A, X), father(X,B).
goal:- grandfather(john, tomy).
实际上只有以下事实才能满足目标:
father(john, jim).
father(jim, tomy).
我想知道的是哪些事实实际上对目标没有帮助。答案将是以下所有事实:
father(john, david).
father(bruce, anne).
mother(mary, jim).
非常感谢任何帮助。谢谢
最佳答案
您的问题无法在 Prolog 中直接回答,但您可以使用 failure-slice 手动回答。 .只需将 false
目标添加到您的程序中,并始终测试 goal
是否仍然成功。这是我得到的最小程序。
father(john, jim).father(jim, tomy).father(john, david) :- false.father(bruce, anne) :- false.mother(mary, jim) :- false.grandfather(A,B) :- father(A, X), father(X,B).goal:- grandfather(john, tomy).
每次将目标 false
插入纯单调程序时,您肯定知道解决方案集会减少(或保持不变)。因此,找到这样的切片涉及的试验次数与设置此类目标的位置一样多。有时您可能想要添加目标 X = term
以进一步缩小程序范围。
当您想了解程序的终止属性时,故障切片特别有用,请参阅 failure-slice了解更多。
关于prolog - 如何找到对目标没有贡献的事实,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16786274/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我看到github记录了每个贡献者的提交、添加和删除历史。您可以在图表选项卡上查看它。 然而,它并不像我想要的那么细。 是否可以在命令行上获取此信息? 我想以表格的形式保存更细粒度的数据集。 我在想的
我正在尝试将每位作者的每行贡献打印到 Git 存储库。 为此,我使用以下命令,改编自 How to count total lines changed by a specific author in
到目前为止,我只使用带有 gem 的 git 包: gem install 没有为更正 git-hub 做出贡献。 不知道你们是怎么做到的? 例如。当我安装了 gem 包后,我应该手动创建一个文件夹
所以我在github上克隆了一个项目并修复了一个补丁。因为这是我第一次在 git 中工作,所以我试图找出将它放到网上的最佳方式。 在 github 上查看我自己的(克隆的)存储库时,只有一个分支:ma
为什么,如果我提交,比方说,develop分支,这不是出现在我的贡献中吗? 我预计如果我将该分支 merge 到 master然后所有提交到 develop或其他分支将是可见的。但情况似乎并非如此。
虽然像 RUnit、svUnit 和 testthat 这样的工具对包开发人员很有用,但我认为拥有一些方法会很有用上传测试脚本,甚至只是特定包的使用示例。进行持续集成(例如 Jenkins)甚至基本单
我想在 Portable Class Library Contrib project on codeplex 中使用密码学但没有找到任何关于如何使用它的文档。 我想创建一个包含 Encrypt 和 D
我设置以下 http://django-grappelli.readthedocs.org/en/2.6.3/index.html settings.py INSTALLED_APPS = (
我已经为我的 e4 应用程序定义了一个全局命令,即 add 命令。所以,正如你所看到的 该命令将在整个应用程序 (1) 中使用,并用于在上下文切换到响应时激活的响应处理程序。 (2) 和 (3) 中的
fb-contrib 提示 Method throws alternative exception from catch block without history 在我的一个 try/catch b
我从来没有向开源项目提交过任何东西,坦率地说,我不在乎 Rails 的人们对这些方法的看法。我喜欢“last”和“first”方法,并希望将该概念扩展到“second”-“ninth”方法中,以便进行
我是一名优秀的程序员,十分优秀!