2016-11-19 8 views
0

以下の文字列暗号化コードを記述しました。しかし、ハードコーディングされた値を使用する代わりに、(読み取り)を使用してキーボードから暗号化キーを取得できるようにしたい。しかし、マップは引数としてリストを取るので、私はそれを行うことはできません。上位関数マップを使用した文字列の暗号化

#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))))) 
+0

を私は、暗号化キーを読みたいです。上記のコードでは、3としてコード化されています。文字列を読みたくありません。 –

+0

like(文字列暗号化 "foo bar"(読み取り)) –

+0

ありがとうございます。私の初めてのstackoverflowを使用しています。あなたは本当に私を助けました。更新された手続きに感謝します。 –

答えて

1

使用read-line行を読み取ります。結果は文字列です。

ここで続きを読む: Docs on read-line

+0

私は単純な読み取りを使用する必要があります –

+0

次に "foo bar"として文字列を入力 – soegaard

+0

またマップ –

関連する問題