Confusion with while loop

I am trying to create a method that would allow one to skip x number of
a character then change the next y number of a character. While trying
to create a simple routine I ran into two “weird” problems. The code
follows:

a = “1 2 1 3 1 4 1 5 1 6 1 7”
ns = 2, nc = 2

i = 0, il = a.length, xs = 0, xc = 0
while xs < ns
if a[i, 1] == “1”
xs += 1
end
i += 1
end

puts a[i, -1]

In this incarnation trying to run the code returns the following error:
testing.rb:5:in <': comparison of Fixnum with Array failed (ArgumentError). If I change ns in the while statement to 2 I get the following error: testing.rb:6:in[]’: can’t convert Array into Integer
(TypeError).

I can’t see why statement 5 (the while statement) thinks that ns is an
array when it is clearly defined as an integer. I also can’t figure out
why I get the error message in the following line when I have used that
code in other places with no problems. I must be missing something but
I can’t figure out what it is.

Michael W. Ryder wrote:

if a[i, 1] == “1”
following error: testing.rb:6:in `[]’: can’t convert Array into Integer
(TypeError).

I can’t see why statement 5 (the while statement) thinks that ns is an
array when it is clearly defined as an integer.
It’s not, though - run just this line, and check the values of ns and
nc:

ns = 2, nc = 2

I think you want:

ns, nc = [2,2]

Alex Y. wrote:

while xs < ns
(ArgumentError). If I change ns in the while statement to 2 I get the

ns, nc = [2,2]

Or ns =2; nc =2. I knew it had to be something simple. Thats the
problem with programming in multiple languages at the same time, they
each do the same things slightly differently. Thanks for pointing that
out.

2007/7/31, Michael W. Ryder [email protected]:

i = 0, il = a.length, xs = 0, xc = 0
error: testing.rb:5:in `<': comparison of Fixnum with Array failed
I think you want:

ns, nc = [2,2]

Or ns =2; nc =2. I knew it had to be something simple. Thats the
problem with programming in multiple languages at the same time, they
each do the same things slightly differently. Thanks for pointing that out.

These are options, too:

ns, nc = 2, 2
ns = nc = 2

Kind regards

robert

Robert K. wrote:

In this incarnation trying to run the code returns the following

ns, nc = 2, 2
Maybe this is where I got confused. I remember seeing commas between
variables, just forgot the way they had to be entered. Thanks for
pointing this out.