Same fringe: Difference between revisions

m
no edit summary
mNo edit summary
Line 1,336:
 
=={{header|Julia}}==
 
<lang Julia>
using Lazy
 
"""
Input a tree for display as a fringed structure.
"""
function fringe(tree)
fringey(node::Pair) = [fringey(i) for i in node]
fringey(leaf::Int) = leaf
fringey(tree)
end
 
 
"""
equalsfringe() uses a reduction to a 1D list via a lazy
getleaflist() for its "equality" of fringes
"""
Line 1,367:
z = 1 => 2 => (4 => 3) => 5 => 6 => 7 => 8
 
prettyprint(s) = println(replace("$s", r"\{,1\}|Any|Array\{T,1\}\swhere\sT|Array|", ""))
println(fringe(a))
printlnprettyprint(fringe(ba))
printlnprettyprint(fringe(cb))
printlnprettyprint(fringe(xc))
printlnprettyprint(fringe(yx))
printlnprettyprint(fringe(zy))
printlnprettyprint(fringe(az))
println(getleaflist(a))
 
println(getleaflist(b))
printlnprettyprint(getleaflist(ca))
printlnprettyprint(getleaflist(ab))
printlnprettyprint(getleaflist(bc))
 
println(equalsfringe(a, a))
Line 1,381 ⟶ 1,383:
println(equalsfringe(a, c))
println(equalsfringe(b, c))
println( ! equalsfringe(a, x) == false)
println( ! equalsfringe(a, y) == false)
println( ! equalsfringe(a, z) == false)
</lang>
{{output}}
<pre>
Any[1, [2=>(, [3=>(, [4=>(, [5=>(, [6=>(, [7=>, 8)))))]]]]]]]
Any[1, ([[2=>, 3)=>(], [4=>(, [5=>((, [[6=>, 7)=>], 8)))]]]]]
Pair{,1}[[[[((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]
4,103

edits