replace-prolog 基础程序 替换字母

问题描述

prolog 基础程序 替换字母

刚学prolog,希望大家指点迷津。
题目要求是
?- word_with_replacements([s, c, r, a, b, b, l, e], Word_with_replacements).
Word_with_replacements = [s, c, r, e, b, b, l, a] ;
false.

?- word_with_replacements(Word, [s, c, r, e, b, b, l, a]).
Word = [s, c, r, a, b, b, l, e] ;
false.

其中a可以替换成e,e可以替换为a。
并且要求代码可以拓展为任意字母替换。目前我只能参照例子写出这样的程序,但是不符合题目的输出要求,请问改怎么改正呢?谢谢。
第一种
replace(_,_,[],[]).
replace(a,b,[a|T1],[b|T2]):-replace(a,b,T1,T2).
replace(a,b,[m|T1],[m|T2]):-m=a, replace(a,b,T1,T2).
第二种
rep([],_,_,[]).
rep([Z|T1],Z,A,[A|T2]):- rep(T1,Z,A,T2).
rep([H|T1],Z,A,[H|T2]) :- rep(T1,Z,A,T2).
goal
rep([1,2,3],2,4,X).

解决方案

没人会么= = 啊啊啊

时间: 2024-10-31 23:11:17

replace-prolog 基础程序 替换字母的相关文章

新手-c++基础程序问题,求帮助!

问题描述 c++基础程序问题,求帮助! 求2--1000的所有完全数,代码基本没什么错误但跑不了,求帮我看看有什么错误.代码如下: ''' #include using namespace std; int main() { for(int i=2;i<1000;i++) { int sum=0; for(int k=1;k<=i;k++) { if(i%k==0) sum+=k; } if(sum==i) cout<<i<<endl; } return 0; } ''

c++-哪位用qt帮我写一下这个基础程序

问题描述 哪位用qt帮我写一下这个基础程序 实现一个简单计算器,计算器包括加.减.乘.除四种运算.用户通过鼠标进行数据输入,输入的数据以及计算结果显示在文本框中 说明:不要求实现四则混合运算:计算数据不要求包括小数:不要求从键盘输入数据 解决方案 http://wenku.baidu.com/view/7612b31055270722192ef71a.html 解决方案二: Qt--简单计算器 http://blog.sina.com.cn/s/blog_6730a3aa0100uq62.htm

js replace(a,b)之替换字符串中所有指定字符的方法_javascript技巧

如下所示: var str = 'abcadeacf'; var str1 = str.replace('a', 'o'); alert(str1); // 打印结果: obcadeacf var str2 = str.replace(/a/g, 'o'); alert(str2); //打印结果: obcodeocf, 注意: 此处replace的第一个参数为正则表达式,/g是全文匹配标识. 以上这篇js replace(a,b)之替换字符串中所有指定字符的方法就是小编分享给大家的全部内容了,

c++-C++ 基础趣味编程 字母频率

问题描述 C++ 基础趣味编程 字母频率 自行在网上下载英文文章,要求字母个数在1万以上,如果不到1万,请下载多篇合并,命名为data.txt. 对于data.txt,完成以下作业: (1)统计26个字母出现的频率(出现次数在所有字母个数中占的百分比),并排序. (2)输入一个字母,找出和它最亲密的三个字母(最亲密的意思是:和它一起相邻出现的次数最多). (3)找出出现频率最高的五个单词并排序. (4)将前3个题目中的结果以合理的形式输出到文件result.txt. 解决方案 要详细代码,请采纳

基础问题关于字母e下有红线

问题描述 基础问题关于字母e下有红线 include int main() { float p; p = (1 +0.09) e +10; printf_s("增长百分比为:%d", p); getchar(); return 0; } 解决方案 是不是因为e并没有定义的原因 解决方案二: 可以把p改成double型的变量

JavaScript replace(rgExp,fn)正则替换的用法_基础知识

代码如下: 复制代码 代码如下: var rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g, rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i, fcloseTag = function(all, front, tag) { return rselfClosing.test(tag) ? all : front + "></" + tag +

mysql中replace、regexp正则表达式替换用法

mysql字段值替换具体做法如下:  代码如下 复制代码 update `table_hospital` set service=replace(service,"<a%</font></a>",'') <br type="_moz"> 可以限制ID,范围,具体内容自己发挥想象! mysql数据库中replace.regexp的用法,主要是通过sql语句实现数据的替换. mysql replace用法 1.replace i

关于JS字符串函数String.replace()_基础知识

替换匹配给定正则表达式的(一个或多个)子串 string.replace(regexp, replacement) 参数: regexp: RegExp对象或者字符串 replacement: 替换文本的字符串,或者一个函数,用于在调用时生成对应的替换文本. 返回: 返回一个替换好的新字符串 描述: replacement可以是字符串或一个函数.如果是一个函数,它将在每个匹配结果上调用,它返回的字符串将作为替换文本. 传入该函数的参数: 1) 匹配该模式的字符串 2) 匹配该模式中某个圆括号子表

编程基础-程序员的迷茫之要不要啃基础

问题描述 程序员的迷茫之要不要啃基础 有人说学编程应该从c/c++开始学起,然后学习数据结构.操作系统,因为那些语言更接近系统,理解了这些然后再学习.netjava这些高级语言就会轻松很多.而不是直接上来就学习asp.net拖控件,拖完不知道这些控件是怎么产生的,用起来总感觉虚的很.而且不了解操作系统,写出来的代码的性能注定不是很好,瓶颈会很低.我自己在大学就没好好学习那些基础,出来也是直接接触的上层代码,大家觉得要不要再回头就啃基础.迷茫中..求大神解惑 解决方案 学当然有用,问题是什么时候学