Help with rather simple method

Hello.

I’m trying to come up with the “best”, most Ruby-ish way to write a
method such as this one:

This method replaces randomly selected characters in ‘string’ with new

randomly selected characters of [A-Za-z0-9]. However, it does not

replace any character with the character itself, i.e., it does not

replace any “a” with “a”. Also, no position in the string will ever be

replaced twice.

‘string’ is the String to perform the replacing on.

‘amount’ is the amount of different characters to replace.

def random_replace(string, amount)

end

You don’t have to care about any error checking of course.

Any ideas? The solution I’ve come up with (but which is yet to be
implemented) does not feel Ruby-ish at all and could probably be
implemented in pretty much any other programming language.

And no, this is not school work, no matter what you think.

-Deniz D.

On May 3, 2007, at 1:35 AM, Deniz D. wrote:

ever be
implemented) does not feel Ruby-ish at all and could probably be
implemented in pretty much any other programming language.

And no, this is not school work, no matter what you think.

-Deniz D.

Lets define that a little better before we get started:
‘amount’ means what? Number of characters to replace?
Do you chose random positions in the string to replace?
How often do you randomize?
What’s the point?
Does it need to be reversible?
Perhaps what you’re looking for is some of the encryption
algorithms… even very simple ones like ROT13 might give you some
ideas.
How Ruby-ish it feels is kind of subjective.

John J. wrote:

replace any character with the character itself, i.e., it does not

Any ideas? The solution I’ve come up with (but which is yet to be
implemented) does not feel Ruby-ish at all and could probably be
implemented in pretty much any other programming language.

And no, this is not school work, no matter what you think.

-Deniz D.

Lets define that a little better before we get started:
‘amount’ means what? Number of characters to replace?

Correctly guessed!

Do you chose random positions in the string to replace?

Yes!

How often do you randomize?

Once every program run.

What’s the point?

I’m currently working on a project which is supposed to perform a rather
odd type of penetration testing on protocol implementations, using
specification files which describe attacks to perform on the host. This
method is used in trying to find very simple vulnerabilities, by
replacing some characters in strings to see what happens if we send
something unexpected to the server.

Does it need to be reversible?

Not at all!

On May 2, 11:26 am, Deniz D. [email protected] wrote:

‘string’ is the String to perform the replacing on.

And no, this is not school work, no matter what you think.

-Deniz D.

def random_replace(string, amount)
locations = (0…string.size).to_a
amount.times{
p = locations.slice!( rand( locations.size ) )
chars = (‘a’…‘z’).to_a + (‘A’…‘Z’).to_a +
(‘0’…‘9’).to_a - [ string[p,1] ]
string[p] = chars[ rand( chars.size ) ]
}
end

s = ‘foo bar’
random_replace( s, 3 )
puts s