2016-11-19 11 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

또한 맵 –