Strange two dimensional array behaviour


#1

This code is supposed to read in a 9x9 table (sudoku table) from a
simple text file. It then needs to write it out on the screen.

#read from file

def puzzle_beolvas fnev
f = File.new(fnev,“r”)
puzzle = Array.new(9){[]}
for i in (1…9)
puzzle[i] = Array.new(9)
end
i = 1

f.each do |sor|
j = 1
sor.each do |str|
puzzle[i][j] = str
j = j + 1
end
#print “\n”
i = i + 1
end
f.close

#Write out the 2 dimensional array

for i in (1…9)
for j in (1…9)
print puzzle[i][j]
print " "
end
print “\n”
end

end

#the program does this for every file, whose name is given as an
argument

ARGV.each do |a|
puzzle_beolvas a
end

So, the output should be something like this:

6 1 5 4 2 9 3 8 7
4 7 2 8 5 3 1 6 9
3 9 8 1 7 6 2 4 5
7 4 6 2 3 1 5 9 8
5 2 1 9 8 4 6 7 3
9 8 3 7 6 5 4 1 2
8 6 7 5 4 2 9 3 1
1 5 4 3 9 7 8 2 6
2 3 9 6 1 8 7 5 .

Instead, i get this:

6 1 5 4 2 9 3 8 7
nil nil nil nil nil nil nil nil
4 7 2 8 5 3 1 6 9
nil nil nil nil nil nil nil nil
3 9 8 1 7 6 2 4 5
nil nil nil nil nil nil nil nil
7 4 6 2 3 1 5 9 8
nil nil nil nil nil nil nil nil
5 2 1 9 8 4 6 7 3
nil nil nil nil nil nil nil nil
9 8 3 7 6 5 4 1 2
nil nil nil nil nil nil nil nil
8 6 7 5 4 2 9 3 1
nil nil nil nil nil nil nil nil
1 5 4 3 9 7 8 2 6
nil nil nil nil nil nil nil nil
2 3 9 6 1 8 7 5 .
nil nil nil nil nil nil nil nil
6 1 5 4 2 9 3 8 7

Any ideas, why ?


#2

On Apr 30, 2009, at 3:54 PM, Zsolnai Csaba wrote:

print “\n”
end

end

Any ideas, why ?

Arrays index from 0. A 9-element array has indexes from 0…8

-Rob

Rob B. http://agileconsultingllc.com
removed_email_address@domain.invalid