定义一个过程 encrypt,它采用三个字符串:要加密的消息和两个字母,我们将其称为常规和加密。字母字符串的长度相同,并且不包含重复项。对于消息中的每个字符,常规查找,如果找到,将其转换为相应位置的加密字符。例如,如果正则为 abc,加密为 def,这意味着消息中的 a 将编码为 ad,ab 编码为 e,ac 编码为 f。
我写了我的代码如下:
(define encrypt
(lambda (message regular encrypted)
(define help
(lambda (ls1 ls2 ls3)
(if (null? ls1) '()
(if (and (null? ls2) (null? ls3)) ls1
(if (equal? (car ls1) (car ls2))
(cons (car ls3) (help (cdr ls1) ls2 ls3))
(help ls1 (cdr ls2) (cdr ls3))))))
(list->string (help
(string->list message)
(string->list regular)
(string->list encrypted)))))
我一直在尝试跑步。但结果返回Exception in car: () is not a pair
我相当检查它很多次,但我没有我应该改变什么。有没有人可以帮助我?