我有一個關於我一直試圖運行的程序的問題。 加密需要一條消息,公鑰和私鑰,並將公鑰中的消息中的字母更改爲私鑰中的字母。 (加密「abcd」「abcd」「efgh」)應返回「efgh」 和(加密「abcl」「abcd」「efgh」)應返回「efgl」(來自已被不在公鑰中將保持不變)。加密[嬌小Chez計劃]
我已經寫了一些幫助程序來解決這個問題,但是當我嘗試運行它時,我不斷收到錯誤「車內異常,__不是一對」..但我不確定什麼是錯。如果有人有任何指示,請告訴我。謝謝!
(define encrypt
(lambda (message public-key private-key)
(cond
[(list->string (encrypt-helper (string->list message)
(string->list public-key) (string->list private-key)))])))
(define encrypt-helper
(lambda (msg-ls public-ls private-ls)
(cond
[(null? public-ls) '()]
[(null? private-ls) '()]
[(and (null? public-ls) (null? private-ls)) msg-ls]
[else (cons (encrypt-key (car msg-ls) (car public-ls) (car private-ls))
(encrypt-helper (cdr msg-ls) (cdr public-ls) (cdr private-ls)))])))
;should encrypt all letters in msg-ls. not working correctly
(define encrypt-key
(lambda (char pub-key priv-key)
(cond
[(null? pub-key) char]
[(equal? char (car pub-key)) (car priv-key)]
[else (encrypt-key char (cdr pub-key) (cdr priv-key))])))
;encrypts just one letter, ex: (encrypt-key 'a '(a) '(b)) => b
;works correctly
方案是很容易調試。步進器阻止你的步驟是什麼? – LostLin 2011-03-30 20:02:21