Scheme函数,用于确定列表是否遵循模式

时间:2013-10-17 17:37:47

标签: scheme

Scheme:一个函数,用于确定传入的列表是否遵循A B模式。 AB图案可以是(A B A B A B)或(A B)或重复的A和B的任何组合。 A和B不是变量,我的字面意思是字母A后跟字母B.

1 个答案:

答案 0 :(得分:0)

一种天真但简单的算法:在列表的头部查找模式;如果它匹配返回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)))))