I’m doing the pascal quiz on rubyquiz.com, but I’m finding that I’m
having trouble assigning a value to my array.
I’ve assigned it like this:
pyramid_lvl[level][i] =\
( (pyramid[level-1][i-1]).to_i \
+ (pyramid[level-1][i] ).to_i )
and like this:
num1 = pyramid[level-1][i-1].to_i
num2 = pyramid[level-1][i].to_i
ans = num1+num2
pyramid_lvl[level][i] = [ans]
Both give me this error message:
undefined method `[]=’ for 1:Fixnum (NoMethodError)
Am I getting this problem because I don’t understand how arrays work
and it’s simply a matter of operations, or am I having some serious
logical problem preventing correctness.
[email protected] wrote:
num1 = pyramid[level-1][i-1].to_i
From the error, I would venture to guess (pretty sure) that
pyramid_lvl[level] contains a number, not an array (as you seem to
think). I couldn’t say more without reading more code.
Dan
Hi –
On Mon, 28 May 2007, [email protected] wrote:
num1 = pyramid[level-1][i-1].to_i
num2 = pyramid[level-1][i].to_i
ans = num1+num2
pyramid_lvl[level][i] = [ans]
Both give me this error message:
undefined method `[]=’ for 1:Fixnum (NoMethodError)
Am I getting this problem because I don’t understand how arrays work
and it’s simply a matter of operations, or am I having some serious
logical problem preventing correctness.
It’s just what the error says: you’re trying to call the method []= on
the object 1
That means that pyramid_lvl[level] must be 1. So
when you do:
pyramid_lvl[level][i] = whatever
it’s like you’re doing:
1[i] = whatever
That’s equivalent to a method call:
1[]=(i, whatever)
and 1 has no method called []= so you get an error.
I can’t tell you where in your code you assigned 1 to
pyramid_lvl[level], but that appears to be what’s happening.
David
I tested this:
pyramid_lvl[level][i] is 0
pyramid[level-1][i] is 1
pyramid[level-1][i-1] is 1
Turns out that pyramid[level-1][i] was actually nil… which makes
this a logical error, not a syntax error.
So I pretty much just waisted your time, but so long and thanks for
all the fish.