Talk:Caesar cipher

Revision as of 21:57, 19 September 2011 by rosettacode>Crazyfirex (discussing golfed AutoHotkey code)

Draft task because I have not yet posted a solution. --Kernigh 00:51, 12 June 2011 (UTC)

When you create a task you don't have to explain why it's a draft. All tasks should be drafts when they start out. --Mwn3d 00:54, 12 June 2011 (UTC)

more specifications?

How lenient is this task? Can I capitalize all input and throw out all non-alphabetic characters? Can I assume ASCII? On the IRC we came up with a 65 character solution which assumes all input is capital alphabetic... --Crazyfirex 20:56, 18 September 2011 (UTC)

Why not provide two solutions then, a more general program besides the 65 character one. It's unlikely either one will take too much effort to write. (btw, I think at Caesar's time there were only 24 letters in the Latin alphabet, all upper case, and no punctuations or arabic numerals existed; buts that's probably not relevant) --Ledrug 21:13, 18 September 2011 (UTC)
I was the task author. Vigenère cipher required to discard non-alphabetic characters, and Rot-13 required to preserve them. Caesar cipher has no such requirements. Among these solutions, some discard non-alphabetic characters, some preserve them, and some might only work with uppercase (not lowercase) input. --Kernigh 21:54, 18 September 2011 (UTC)
I went with Ledrug's suggestion, see the AutoHotkey example. (Oddly enough, I was unable to get it below 70 characters) --Crazyfirex 01:59, 19 September 2011 (UTC)
Care to explain why t+=2 (assuming it's not a bug)? --Ledrug 02:03, 19 September 2011 (UTC)
Probably 16 bit wide characters and byte addressing? --Rdm 11:19, 19 September 2011 (UTC)
Number one, the characters were eventually shaved off: I was using a 3-letter variable name instead of one char! :P Two, the line t:=&s retrieves a memory address of the string and stores it in t. The code *t retrieves a byte (actually, a character-wide number) at t. To advance through the string, we must increment t. I was using it on a Unicode build, so 16 bits. On an ANSI build, we could probably remove ,t+=2 and use While *t++ or the like. (Although, incrementing in the while would screw up the use of *t in the Chr() statement.) I will add a note that the golfed version works on Unicode.
Return to "Caesar cipher" page.