Author |
Message |
|
thornahawk μολών λαβέ
Active Member
Joined: 27 Mar 2005 Posts: 569
|
Posted: 30 Sep 2007 12:04:03 am Post subject: |
|
|
Alright, a brand new challenge for our newest forum. :)
Given a string stored in Ans that contains only capital letters and spaces, write a program that would encrypt the string with a suitable version of Atbash for Roman letters. (Google if you don't know what it is.)
Use as few string variables as possible.
thornahawk |
|
Back to top |
|
|
magicdanw pcGuru()
Calc Guru
Joined: 14 Feb 2007 Posts: 1110
|
Posted: 30 Sep 2007 12:39:31 am Post subject: |
|
|
My first attempt uses Ans, Str1, Str2, and X. It's 101 bytes. I'll post it if I can't get it smaller. |
|
Back to top |
|
|
Weregoose Authentic INTJ
Super Elite (Last Title)
Joined: 25 Nov 2004 Posts: 3976
|
Posted: 30 Sep 2007 01:48:31 am Post subject: |
|
|
I first took the straightforward approach, and ended up using five lines and no string variables (other than Ans)—this turned out to be [s]145[/s] 147 bytes. I'll work out a smaller version and then show both as hidden text in my next post.
[EDIT] – I now have a [s]100[/s] 101-byte version that uses two string variables (Str1 and Str2).
[EDIT×2] – I also now have a [s]118[/s] 120-byte version that uses only Str1 (along with the necessary looping variables).
[EDIT×3] – Oh jeez, and spaces? *reworks code*
[EDIT×4] – Fixed.
[FINAL EDIT] – I devised a neat hack that allowed me to cut off a few more bytes and speed up the process. Two of my routines through the use of this trick have essentially degenerated into the same program, so I'm back down to two entries. One is at four lines and 108 bytes, using only X and Ans, while the other comes in at 99 bytes from 7 lines and uses Str1, Str2, X, and Ans. These are what I'll present when all is said and done here.
Last edited by Guest on 23 Sep 2010 11:59:55 pm; edited 1 time in total |
|
Back to top |
|
|
DarkerLine ceci n'est pas une |
Super Elite (Last Title)
Joined: 04 Nov 2003 Posts: 8328
|
Posted: 30 Sep 2007 11:52:19 am Post subject: |
|
|
I've got a routine that uses no strings, other than Ans, and the real variable I, and weighs 88 bytes, plus the title.
[EDIT] - The technique I used is basically an extension of my solution for the previous teaser. The same string can be used for more than one purpose...
Last edited by Guest on 24 Sep 2010 12:00:36 am; edited 1 time in total |
|
Back to top |
|
|
magicdanw pcGuru()
Calc Guru
Joined: 14 Feb 2007 Posts: 1110
|
Posted: 30 Sep 2007 06:43:59 pm Post subject: |
|
|
Weregoose: I think my shortest version is the same as yours. It's 99 bytes, 7 lines, and uses those strings.
I don't want to let myself waste more time working on this, so I'm going to post my solution:
Quote: Ans->Str1
" ABCDEFGHIJKLMNOPQRSTUVWXYZ ->Str2
".
For(X,1,length(Str1
Ans+sub(Str2,29-inString(Str2,sub(Str1,X,1)),1
End
sub(Ans,2,X-1
I'm not sure if I'm supposed to post the solution "invisible" or not, so I did just in case. |
|
Back to top |
|
|
Weregoose Authentic INTJ
Super Elite (Last Title)
Joined: 25 Nov 2004 Posts: 3976
|
Posted: 30 Sep 2007 08:15:43 pm Post subject: |
|
|
magicdanw wrote: Weregoose: I think my shortest version is the same as yours. It's 99 bytes, 7 lines, and uses those strings. It's close, but there are some key differences actually. You can even save one more byte by (highlight) plugging a space in the middle of the string rather than having two on the sides. Also, I didn't use X like you did at the bottom, so I guess because of that you place above me size-wise. Now, I'm curious about those 88 bytes. :)
My first routine:
Spoiler wrote: For(X,1,length(Ans
sub(Ans+sub(" ZYX…A",inString(" ABC…Z",sub(Ans,1,1)),1),2,length(Ans
End
Ans
Last edited by Guest on 24 Sep 2010 12:00:51 am; edited 1 time in total |
|
Back to top |
|
|
DarkerLine ceci n'est pas une |
Super Elite (Last Title)
Joined: 04 Nov 2003 Posts: 8328
|
Posted: 30 Sep 2007 08:27:42 pm Post subject: |
|
|
Here's my routine:
Quote: "A…M N…Z"+Ans
For(I,28,length(Ans
Ans+sub(Ans,28-inString(Ans,sub(Ans,I,1)),1
End
sub(Ans,I,I-28
As advertised, it's the same optimization as in my answer to the previous teaser.
Last edited by Guest on 23 Sep 2010 11:59:35 pm; edited 1 time in total |
|
Back to top |
|
|
thornahawk μολών λαβέ
Active Member
Joined: 27 Mar 2005 Posts: 569
|
Posted: 30 Sep 2007 09:05:18 pm Post subject: |
|
|
Very elegant solutions. What I had, admittedly, took about 10 bytes or so of space more than the solutions posted here; I must make a public confession now, though: what I had was nothing more than an appropriate modification of the ROT13 program that was posted in Goose's site. :)
thornahawk |
|
Back to top |
|
|
adriweb
Newbie
Joined: 28 Aug 2007 Posts: 22
|
Posted: 16 Oct 2007 06:24:22 am Post subject: |
|
|
thornahawk wrote: what I had was nothing more than an appropriate modification of the ROT13 program that was posted in Goose's site. Ohhhh ^^ lol
Great routine, DarkerLine ! |
|
Back to top |
|
|
|