Arrays

J

Justin To

modArr = Array.new
freq = Array.new([ [0] ])
values = Array.new([ [] ])


#--------------Open the output file and process each line-----
File.open('output.txt', 'r').each { |x|

#-------------Create unique keys according to |x|---------------
#--Calculate the modulus ([add each digit]%10) and use it as hash
key--
key = 0; modF = x.each_byte { |y| key += y.chr.to_i }
#--For slight optimization, change the resulting key into a symbol
mod = (key%100).to_s.intern


#--If the key D.N.E. then add it into modArr

if(!modArr.include?(mod))

#--Add the value
values[modArr.size][0] = x.chomp


#--Add the frequency
freq[modArr.size][0] += 1


#--Add the mod
modArr[modArr.size] = mod


end

}


Hi, I'm still trying to work on the same problem that I posted a few
days ago... when i run this program, this error reads:

BLANK.rb:22: undefined method `[]=' for nil:NilClass (NoMethodError)
from BLANK.rb:7:in `each'
from BLANK.rb:7


Why is this? And how do I fix it??

Thanks in advance!!!!!
 
K

Kevin Ballard

I've replied below.

modArr = Array.new
freq = Array.new([ [0] ])
values = Array.new([ [] ])


#--------------Open the output file and process each line-----
File.open('output.txt', 'r').each { |x|

#-------------Create unique keys according to |x|---------------
#--Calculate the modulus ([add each digit]%10) and use it as hash
key--
key = 0; modF = x.each_byte { |y| key += y.chr.to_i }
#--For slight optimization, change the resulting key into a symbol
mod = (key%100).to_s.intern


#--If the key D.N.E. then add it into modArr

if(!modArr.include?(mod))

#--Add the value
values[modArr.size][0] = x.chomp


#--Add the frequency
freq[modArr.size][0] += 1


#--Add the mod
modArr[modArr.size] = mod


end

}


Hi, I'm still trying to work on the same problem that I posted a few
days ago... when i run this program, this error reads:

BLANK.rb:22: undefined method `[]=' for nil:NilClass (NoMethodError)
from BLANK.rb:7:in `each'
from BLANK.rb:7


Why is this? And how do I fix it??

You're using a rather unconventional way of appending to an array,
i.e. ary[ary.size] = value. This works in the general case. Where it
doesn't work is in your code where you say, effectively, ary[ary.size]
[0] = value. The problem is that ary[ary.size] is returning nil.

-Kevin Ballard
 
J

Justin To

modArr = Array.new
freq = Array.new([ [0] ])
values = Array.new([ [] ])


#--------------Open the output file and process each line-----
File.open('output.txt', 'r').each { |x|

#-------------Create unique keys according to |x|---------------
#--Calculate the modulus ([add each digit]%10) and use it as hash
key--
key = 0; modF = x.each_byte { |y| key += y.chr.to_i }
#--For slight optimization, change the resulting key into a symbol
mod = (key%100).to_s.intern


if(!modArr.include?(mod))

#--Add the value
values[modArr.size].push(x.chomp)



#--Add the frequency
freq[modArr.size].push(1)



#--Add the mod
modArr.push(mod)


end

}


BLANK.rb:22: undefined method `push' for nil:NilClass (NoMethodError)
from BLANK.rb:7:in `each'
from BLANK.rb:7


??
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,432
Messages
2,571,680
Members
48,796
Latest member
Greg L.

Latest Threads

Top