Same fringe: Difference between revisions

Content added Content deleted
m (Added the Sidef language)
m (→‎{{header|Sidef}}: modified the code to work with the latest version of Sidef)
Line 2,186: Line 2,186:
func get_tree_iterator(*rtrees) {
func get_tree_iterator(*rtrees) {
var tree;
var tree;
closure {
func {
tree = rtrees.pop;
tree = rtrees.pop;
while (tree.is_an(Array)) {
while (defined(tree) && tree.is_an(Array)) {
rtrees.append(tree[1]);
rtrees.append(tree[1]);
tree = tree[0];
tree = tree[0];
};
}
return tree;
return tree;
}
}
Line 2,201: Line 2,201:
loop {
loop {
var (L, R) = (ti1(), ti2());
var (L, R) = (ti1(), ti2());
all { L != nil; R != nil; L == R } && next;
defined(L) && defined(R) && (L == R) && next;
all { L == nil; R == nil } && return "Same";
!defined(L) && !defined(R) && return "Same";
return "Different";
return "Different";
}
}
Line 2,210: Line 2,210:
say ("tree[#{tree_idx-1}] vs tree[#{tree_idx}]: ",
say ("tree[#{tree_idx-1}] vs tree[#{tree_idx}]: ",
cmp_fringe(trees[tree_idx-1], trees[tree_idx]));
cmp_fringe(trees[tree_idx-1], trees[tree_idx]));
};</lang>
}</lang>


{{out}}
{{out}}