考虑这些修改
tol33t/2
:
tol33t([], []).
tol33t([Code|Codes], Remainder) :-
translate([Code], Translation), !,
tol33t(Codes, Rest),
append(Translation, Rest, Remainder).
tol33t([Code|Codes], [Code|Remainder]) :-
tol33t(Codes, Remainder).
第一条是基本情况。
Code
通过
translate/2
Translation
-你的笔记
[Lower]
!
)在检查代码翻译之后,提交查找
Rest
翻译
在前面,作为
Remainder
回来。
如果当前没有翻译,则执行第三条
代码
(即
)在第二句中。在这种情况下,没有
代码
编辑:
!
tol33t([Code|Codes], Remainder) :-
tol33t(Codes, Rest),
(translate([Code], Translation) ->
append(Translation, Rest, Remainder)
; Remainder = [Code|Rest]
).
这个(未优化的)版本检查
在角色列表中,
如果
翻译/2
成功了;如果是的话
附加到
休息
其他的
代码
是不变的。请注意,这与上面的实现具有相同的语义,因为解决方案被提交给(即,模拟切割
!
)如果
->
(
翻译/2
代码
如果存在适用的
翻译/2