首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用prolog对给定输入进行编码

使用prolog对给定输入进行编码
EN

Stack Overflow用户
提问于 2018-10-23 18:21:24
回答 1查看 93关注 0票数 0
代码语言:javascript
复制
count([_],[],1).    
count(H,[H1|T],N):- count(H1,T,N1),(H = H1 -> N is N1+1 ; H \=H1 -> N is 1).   

encode([]).
encode([H|T]):- count(H,T,N1),encode(T),write("["),write(N1),write("],").

上面是我的Prolog代码,用来计数和打印连续出现的字母,并以期望的方式给出输出。

例如,如果示例输入:

代码语言:javascript
复制
?- encode("555555577777777199999111111").

应该回来

代码语言:javascript
复制
Encoded Output:
[7,5],[8,7],1,[5,9],[1,6] 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-27 18:49:00

以下代码

下一个(H,[],H)。

查找下一个(H,H=T,[]):- T= []。

查找下一步(H,H1 =T,H1=T):-H \= H1。

查找下一步(H,H= T,X):- findnext(H,T,X1),附加(X1,[],X)。

计数(_,[],1)。

计数(H,H=T,2):-T= []。

计数(H,H1|_,1):- H \= H1!

计数(H,H= T,N):计数(H,T,N1),N为N1+1。

编码([]):-!

编码(H=T):计数(H,T,N1),写(“"),写(H),写(”,"),写(N1),写(“,”),查找下一步(H,T,X),编码(X)。

str_encode(S) :- atom_chars(S,X),编码(X)。

结束

对于所有有价值的建议,一个新的代码,但是只打印1而不是1,1的问题对我来说是很困难的,而且我的新代码总是忽略最后一个条目,并给出一个错误的输出,我会要求您检查我的新代码,所以仍然有改进的余地,但至少这段代码可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52955498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档