• Subject: Re: 2d arrays
• From: RLake@...
• Date: Wed, 18 Jun 2003 14:37:09 -0500

```> array = {a,b}

Unless a and b are defined, this is equivalent to:
array = {nil, nil}
which is equivalent to
array = {}

> array["a"] = {}

You could write
array.a = {}

> array["b"] ={}

You could actually have written:

array = {a = {}, b = {}}

which is probably what you meant by your first line.

> array["a"]["a"] = {1}
> array["a"]["b"] = {1}

You could write:

array.a.b = {1}

But I suspect you meant:

array.a.b = 1

> array["b"]["a"] = {2}
> array["b"]["b"] = {2}

See above.

Perhaps you intended a and b to be values, rather than string constants.
Try this: (lots of inefficiencies left as an exercise)

function combarray(n)
-- create a 1x1 0-indexed array such that a[0][0] is 1
local array = {[0] = {[0] = 1}}
-- now fill in non-zero elements
for i = 1, n do
-- avoid referencing undefined elements
array[i] = {[0] = 1, [i] = 1}
for j = 1, i - 1 do
array[i][j] = array[i - 1][j - 1] + array[i - 1][j]
end
end
return array
end

combs = combarray(16)
for i = 0, 16 do
local line = tostring(combs[i][0])
for j = 1, i do
line = line .. " " .. tostring(combs[i][j])
end
line = string.rep(" ", math.floor((79 - string.len(line)) / 2)) .. line
print(line)
end

```