[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

rindex with array of arrays

STEPHEN BECKER I V

9/28/2004 2:14:00 PM

Should rindex work for an array of arrays? I am starting the playfair
cypher, you get a key and append the alphabet to it then remove dups
and change J to I, then make that in to a matrix .

mat[0].rindex("b") works right
but not
mat.rindex("b")
Do i need a string match type of thing?


####code
def removedup(a) # i want to change a to an array then use uniq
b=('a'..'z').to_a
a<<b.to_s
a.gsub!("j","i")
a.gsub!(/\s/, '')
loc=0
while loc<a.size

for i in loc+1 .. a.size
a[i]='' if a[loc]==a[i]
end
loc+=1
end

return a
end

def makematrix(a)
count = 0
mx = Array.new(5)
for i in 0 .. (5 - 1)
row = Array.new(5, 0)
for j in 0 .. (5 - 1)
row[j] = a[count].chr #make a matrix of the letters in a
count += 1
end
mx[i] = row
end
return mx
end

print "Enter a key: "
a=gets.downcase

print removedup(a)
tmat=makematrix(a)
print tmat.rindex("x") # will this work?
####code


3 Answers

dblack

9/28/2004 2:59:00 PM

0

STEPHEN BECKER I V

9/28/2004 6:51:00 PM

0

One day i will program in a ruby way. I am searching the CHM file that
comes with the windows installer they only thing that has matrix is
"Math mode (fraction and matrix support is available)." under the IRB.
I am going to delete the CHM file and just use the
http://www.ruby-doc.o... pages. But the matrix class does not
seem to be useful for what i want. It would be good for linear
algebra. Thank you again for your help.

Stephen


On Tue, 28 Sep 2004 23:59:21 +0900, David A. Black <dblack@wobblini.net> wrote:
> Hi --
>
> On Tue, 28 Sep 2004, STEPHEN BECKER I V wrote:
>
> > Should rindex work for an array of arrays? I am starting the playfair
> > cypher, you get a key and append the alphabet to it then remove dups
> > and change J to I, then make that in to a matrix .
> >
> > mat[0].rindex("b") works right
> > but not
> > mat.rindex("b")
>
> If mat is an array of arrays, then none of its elements are "b", so
> there will be no match there.
>
> > Do i need a string match type of thing?
>
> Maybe, but have you looked at the Matrix class? I'm not sure, but it
> might have the kind of search mechanism you need.
>
> > ####code
> > def removedup(a) # i want to change a to an array then use uniq
> > b=('a'..'z').to_a
> > a<<b.to_s
> > a.gsub!("j","i")
> > a.gsub!(/\s/, '')
> > loc=0
> > while loc<a.size
> >
> > for i in loc+1 .. a.size
> > a[i]='' if a[loc]==a[i]
> > end
> > loc+=1
> > end
> >
> > return a
> > end
> >
> > def makematrix(a)
> > count = 0
> > mx = Array.new(5)
> > for i in 0 .. (5 - 1)
> > row = Array.new(5, 0)
> > for j in 0 .. (5 - 1)
> > row[j] = a[count].chr #make a matrix of the letters in a
> > count += 1
> > end
> > mx[i] = row
> > end
> > return mx
> > end
> >
> > print "Enter a key: "
> > a=gets.downcase
> >
> > print removedup(a)
> > tmat=makematrix(a)
> > print tmat.rindex("x") # will this work?
> > ####code
>
> Slightly shorter version of your code (I think it does the same
> thing), just for fun :-)
>
> def removedup(a)
> (a.split(//).concat(('a'..'z').to_a) - ["j"]).uniq.join
> end
>
> def makematrix(a)
> a.scan(/.{5}/).map {|row| row.split(//)}
> end
>
> print "Enter a key: "
> a=gets.downcase.chomp
>
> r = removedup(a)
> puts r
> tmat=makematrix(r)
> p tmat
>
> I haven't used Matrix, but again, you might want to look at that too.
>
> David
>
> --
> David A. Black
> dblack@wobblini.net
>
>


STEPHEN BECKER I V

9/29/2004 3:43:00 AM

0

(a.split(//).concat(('a'..'z').to_a) - ["j"]).uniq.join
does not take care of white space .
split(/\s*/) does :) I dont know why but i kept tring slice and was
over looking split. Thank you again