Notifications
Clear all
[Closed] Deep Array Equality
Jan 13, 2017 6:41 pm
Just in case someone wants to compare arrays or multi-arrays:
fn Equals x y = -- all items in sub-array elements are equal (Arrays of the same type and dimension)
(
isEqual = true
if classof x[1] == Array then
(
for i = 1 to x.count while isEqual do isEqual = Equals x[i] y[i]
)
else
(
for i = 1 to x.count while isEqual do isEqual = (x[i] == y[i])
)
isEqual
)
a = #(#(0, 8, 2), #(4, 9, 4), #(5, 6, 4))
b = #(#(7, 4, 6), #(10, 4, 6), #(0, 1, 1))
c = #(#(0, 8, 2), #(4, 9, 4), #(5, 6, 5))
d = #(#(0, 8, 2), #(4, 9, 4), #(5, 6, 4))
Equals a b -- false
Equals a a -- true
Equals a c -- false
Equals a d -- true
Equals a[1] c[1] -- true
Equals a[3] c[3] -- false
aa = #(a, b)
bb = #(a, c)
cc = #(d, b)
Equals aa bb -- false
Equals aa aa -- true
Equals aa cc -- true
Equals cc aa -- true
Equals cc bb -- false
4 Replies
Jan 13, 2017 6:41 pm
You’ll see soon my third (and hopingly last one) attempt with Lambda Expressions. This time I hope to stand your mapped test!
Jan 13, 2017 6:41 pm
fn equalArrays a1 a2 result:on = if not result then result else
(
if iskindof a1 Array and iskindof a2 Array and a1.count == a2.count then
(
for k=1 to a1.count while result do result = equalArrays a1[k] a2[k] result:result
result
)
else (a1 == a2)
)