78 lines
1.4 KiB
Lua
78 lines
1.4 KiB
Lua
local array = require 'pl.array2d'
|
|
local asserteq = require('pl.test').asserteq
|
|
local L = require 'pl.utils'. string_lambda
|
|
|
|
local A = {
|
|
{1,2,3,4},
|
|
{10,20,30,40},
|
|
{100,200,300,400},
|
|
{1000,2000,3000,4000},
|
|
}
|
|
|
|
asserteq(array.column(A,2),{2,20,200,2000})
|
|
asserteq(array.reduce_rows('+',A),{10,100,1000,10000})
|
|
asserteq(array.reduce_cols('+',A),{1111,2222,3333,4444})
|
|
|
|
--array.write(A)
|
|
|
|
local dump = require 'pl.pretty'.dump
|
|
|
|
asserteq(array.range(A,'A1:B1'),{1,2})
|
|
|
|
asserteq(array.range(A,'A1:B2'),{{1,2},{10,20}})
|
|
|
|
asserteq(
|
|
array.product('..',{1,2,3},{'a','b','c'}),
|
|
{{'1a','2a','3a'},{'1b','2b','3b'},{'1c','2c','3c'}}
|
|
)
|
|
|
|
asserteq(
|
|
array.product('{}',{1,2},{'a','b','c'}),
|
|
{{{1,'a'},{2,'a'}},{{1,'b'},{2,'b'}},{{1,'c'},{2,'c'}}}
|
|
)
|
|
|
|
asserteq(
|
|
array.flatten {{1,2},{3,4},{5,6}},
|
|
{1,2,3,4,5,6}
|
|
)
|
|
|
|
|
|
A = {{1,2,3},{4,5,6}}
|
|
|
|
-- flatten in column order!
|
|
asserteq(
|
|
array.reshape(A,1,true),
|
|
{{1,4,2,5,3,6}}
|
|
)
|
|
|
|
-- regular row-order reshape
|
|
asserteq(
|
|
array.reshape(A,3),
|
|
{{1,2},{3,4},{5,6}}
|
|
)
|
|
|
|
asserteq(
|
|
array.new(3,3,0),
|
|
{{0,0,0},{0,0,0},{0,0,0}}
|
|
)
|
|
|
|
asserteq(
|
|
array.new(3,3,L'|i,j| i==j and 1 or 0'),
|
|
{{1,0,0},{0,1,0},{0,0,1}}
|
|
)
|
|
|
|
asserteq(
|
|
array.reduce2('+','*',{{1,10},{2,10},{3,10}}),
|
|
60 -- i.e. 1*10 + 2*10 + 3*10
|
|
)
|
|
|
|
A = array.new(4,4,0)
|
|
B = array.new(3,3,1)
|
|
array.move(A,2,2,B)
|
|
asserteq(A,{{0,0,0,0},{0,1,1,1},{0,1,1,1},{0,1,1,1}})
|
|
|
|
|
|
|
|
|
|
|