我正在尝试基于Viginere的编码,该编码具有从列表中选择一个单词并使用该单词加密机密的功能。但是每次它从列表中选择一个单词时,都会从中做出一个过程,我需要它作为字符串。我已经尝试了几个小时,我无法自救。
感谢所有回答的人。
(define schlüsselauswahl
'("fkaloruksnkdwio"
"qpeüäasletajdns"
"iwodöakdjsmxbeo"
"wlpskamsjuerutz"
"mvbsiaöeäfzenxk"
"djqpwöymdöäakwx"
"vjnwsanaöwpfqtz"
"ksmflwtzwksnswf"
"pefäösaisuenfmx"
"iawöaüäwirztmyb"))
(define (schlüssel)
(list-ref schlüsselauswahl (random (length schlüsselauswahl))))
(define (verschlüsselung klartext)
(start (string->list klartext) (string->list schlüssel) '()))
(define (start klartext schlüssel ausgabe)
(cond
((null? klartext) (list->string ausgabe))
((null? schlüssel) (start klartext ausgabe))
(else
(start
(rest klartext)
(rest schlüssel)
(append ausgabe
(list
(integer->char
(+ (modulo (+ (- (char->integer (first schlüssel)) 97)
(- (char->integer (first klartext)) 97))
26)
97))))))))
答案 0 :(得分:0)
您的问题在这里:(string->list schlüssel)
。
即使您确实想将其返回值传递给schlüssel
而不是过程本身,也不会调用过程string->list
。您需要改写(string->list (schlüssel))
。
或者用您的问题来表达它:若要将返回字符串的过程“转换”为字符串,则需要实际调用它,而不是使用过程本身。