将过程转换为字符串...。如何?

时间:2019-05-17 18:37:25

标签: racket

我正在尝试基于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))))))))

1 个答案:

答案 0 :(得分:0)

您的问题在这里:(string->list schlüssel)

即使您确实想将其返回值传递给schlüssel而不是过程本身,也不会调用过程string->list。您需要改写(string->list (schlüssel))

或者用您的问题来表达它:若要将返回字符串的过程“转换”为字符串,则需要实际调用它,而不是使用过程本身。