我寫了下面的字符串加密代碼。但我希望能夠使用(讀取)而不是使用硬編碼值從鍵盤獲取加密密鑰。但我無法做到這一點,因爲地圖將列表作爲參數。使用高階函數映射的字符串加密
#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。你真的幫助我。感謝更新過的程序。 –