Same fringe: Difference between revisions

m
Undo revision 255339 by Wherrera (talk)
m (Undo revision 255338 by Wherrera (talk))
m (Undo revision 255339 by Wherrera (talk))
Line 1,334:
true
</lang>
 
=={{header|Julia}}==
 
<lang Julia>
"""
Input a tree for display as a fringed structure.
"""
function fringe(tree)
fringey(node::Pair) = [i for i in node]
fringey(leaf::Int) = leaf
fringey(tree)
end
 
"""
equalsfringe() uses a reduction to 1D list via
getleaflist() for its "equality" of fringes
"""
getleaflist(tree::Int) = [tree]
getleaflist(tree::Pair) = vcat(getleaflist(tree[1]), getleaflist(tree[2]))
equalsfringe(t1::Pair, t2::Pair) = (getleaflist(t1) == getleaflist(t2))
 
 
a = 1 => 2 => 3 => 4 => 5 => 6 => 7 => 8
b = 1 => (( 2 => 3 ) => (4 => (5 => ((6 => 7) => 8))))
c = (((1 => 2) => 3) => 4) => 5 => 6 => 7 => 8
x = 1 => 2 => 3 => 4 => 5 => 6 => 7 => 8 => 9
y = 0 => 2 => 3 => 4 => 5 => 6 => 7 => 8
z = 1 => 2 => (4 => 3) => 5 => 6 => 7 => 8
 
println(fringe(a))
println(fringe(b))
println(fringe(c))
println(fringe(x))
println(fringe(y))
println(fringe(z))
println(getleaflist(a))
println(getleaflist(b))
println(getleaflist(c))
 
println(equalsfringe(a, a))
println(equalsfringe(a, b))
println(equalsfringe(a, c))
println(equalsfringe(b, c))
println( ! equalsfringe(a, x))
println( ! equalsfringe(a, y))
println( ! equalsfringe(a, z))
</lang>
{{output}}
<pre>
Any[1, 2=>(3=>(4=>(5=>(6=>(7=>8)))))]
Any[1, (2=>3)=>(4=>(5=>((6=>7)=>8)))]
Pair[((1=>2)=>3)=>4, 5=>(6=>(7=>8))]
Any[1, 2=>(3=>(4=>(5=>(6=>(7=>(8=>9))))))]
Any[0, 2=>(3=>(4=>(5=>(6=>(7=>8)))))]
Any[1, 2=>((4=>3)=>(5=>(6=>(7=>8))))]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
[1, 2, 3, 4, 5, 6, 7, 8]
true
true
true
true
true
true
true
</pre>
 
=={{header|OCaml}}==
4,103

edits