http://qs321.pair.com?node_id=695763

in reply to Re^2: Random Derangement Of An Array (rotate)
in thread Random Derangement Of An Array

tye,
Which method is more appropriate depends on the X of your XY problem (which you didn't specify, of course).

I am writing a game for a relative to generate cryptograms. Anything not too obvious would be "good enough".

On the other hand, I am interested in more than just "good enough" solutions for the pure pursuit of knowledge.

Cheers - L~R

• Comment on Re^3: Random Derangement Of An Array (rotate)

Replies are listed 'Best First'.
Re^4: Random Derangement Of An Array (rotate)
by moritz (Cardinal) on Jul 09, 2008 at 18:36 UTC
I am writing a game for a relative to generate cryptograms.

Use List::Util::shuffle for the key generation. It's not bad to map letters in the clear text to the same letter in the cypher text - as long as it's not more often than the statistical average.

Actually the Enigma forbade that, which was one of the reasons why it could be broken during the second world war.

BTW a common scheme for generating a key was to take a word, remove all duplicate characters, and fill the rest of the alphabet from the back:

key: LimbicRegion removed duplicates: limbcregon filled with the rest of the alphabet: limbcregonzyxwvutsrqpkjhfdcba

But that's not very secure, and mostly of historical interest ;-)

moritz,
It's not bad to map letters in the clear text to the same letter in the cypher text - as long as it's not more often than the statistical average.

No, it isn't bad - it is just wrong. To quote wikipedia on cryptogram, "...each letter is replaced by a different letter." Perhaps you don't know anyone who likes to do these puzzles but they would be extremely upset if they found one of the letters mapped to itself.

Cheers - L~R