我写了下面的字符串加密代码。但我希望能够使用(读取)而不是使用硬编码值从键盘获取加密密钥。但我无法做到这一点,因为地图将列表作为参数。使用高阶函数映射的字符串加密
#lang racket
(define character-encryption
(lambda (ch)
(if (char-alphabetic? ch)
(character-rotation ch 3)
ch))) ; non-letter will not be encrypted.
(define character-rotation
(lambda (ch num)
(integer->char (+ (char->integer ch) num)))) ; key=3
(define string-encryption
(lambda (str)
(list->string (map character-encryption (string->list str)))))
UPDATE
> (string-encryption (read))
"foo bar" ; <- entered
"irr edu" ; output
UPDATE
#lang racket
(define character-encryption
(lambda (key)
(lambda (ch)
(if (char-alphabetic? ch)
(character-rotation ch key)
ch)))) ; non-letter will not be encrypted.
(define character-rotation
(lambda (ch num)
(integer->char (+ (char->integer ch) num)))) ; key=3 (I want to read this number)
(define string-encryption
(lambda (key str)
(list->string (map (character-encryption key) (string->list str)))))
我想要阅读的加密密钥。在上面的代码中,它被硬编码为3.我不想读取字符串。 –
like(string-encryption“foo bar”(read)) –
非常感谢。我第一次使用stackoverflow。你真的帮助我。感谢更新过的程序。 –