chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] Review my Caesar Cipher?


From: Phil Bewig
Subject: Re: [Chicken-users] Review my Caesar Cipher?
Date: Mon, 10 Mar 2014 10:26:56 -0500

I would use an auxiliary function char-plus to add or subtract an offset to a character:

(define (caesar str n)
  (define (char-plus c)
    (let ((alpha "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))
      (if (not (char-alphabetic? c)) c
        (let ((i (- (char->integer (char-upcase c)) 65)))
          (string-ref alpha (modulo (+ i n) 26))))))
  (list->string (map char-plus (string->list str))))

Then here are your two examples; decryption is just encryption by the negative:

> (caesar "To craunch the marmoset." 1)
"UP DSBVODI UIF NBSNPTFU."
> (caesar "UP DSBVODI UIF NBSNPTFU." -1)
"TO CRAUNCH THE MARMOSET."


On Mon, Mar 10, 2014 at 9:51 AM, Daniel Carrera <address@hidden> wrote:
Hello,

I found a Scheme implementation of the Caesar cipher on Rosetta Code. It said "This was written by a novice, please review"... So I reviewed it, and basically rewrote it.

I think my version is much better (clearer) but since I too am a novice, I feel bad removing the "novice" warning. Could someone who has used Scheme longer than two weeks have a quick look at my work and tell me if I can remove the warning (or make corrections if my code is not idiomatic or something)?

My version(s):

http://rosettacode.org/wiki/Caesar_cipher#Scheme

Previous version:

http://rosettacode.org/mw/index.php?title=Caesar_cipher&oldid=177675#scheme

Cheers,
Daniel.
--
When an engineer says that something can't be done, it's a code phrase that means it's not fun to do.

_______________________________________________
Chicken-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/chicken-users



reply via email to

[Prev in Thread] Current Thread [Next in Thread]