暗号化するメッセージと 2 つのアルファベット (通常と暗号化と呼びます) の 3 つの文字列を取るプロシージャ 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)))))
私はランニングをしようとしてきました。しかし、結果は車の例外を返します: () はペアではありません
かなり何度もチェックしましたが、何を変えるべきかわかりませんでした。誰かが私を助けることができますか?