【发布时间】:2013-10-18 02:07:02
【问题描述】:
方案:确定传入列表是否遵循 A B 模式的函数。 AB 模式将是 (A B A B A B) 或 (A B) 或 A 和 B 的任意组合重复。 A 和 B 不是变量,我的字面意思是字母 A 后跟字母 B。
【问题讨论】:
-
当输入为
'(A B A)时它应该评估什么?
标签: scheme
方案:确定传入列表是否遵循 A B 模式的函数。 AB 模式将是 (A B A B A B) 或 (A B) 或 A 和 B 的任意组合重复。 A 和 B 不是变量,我的字面意思是字母 A 后跟字母 B。
【问题讨论】:
'(A B A)时它应该评估什么?
标签: scheme
一种天真的但简单的算法:寻找列表头部的模式;如果匹配则返回 true,如果它不在列表的其余部分中查找该模式。
(define (sublist? pattern list)
(and (not (null? list))
(or (match? pattern list)
(sublist? pattern (cdr list)))))
match? 函数可以是:
(define (match? p l)
(or (null? p)
(and (not (null? l))
(eq? (car p) (car l))
(match? (cdr p) (cdr l)))))
【讨论】: