Tree datastructures: Difference between revisions

→‎{{header|Go}}: Changed 'golfing' to 'trolling'. Also round trip test now programmatic rather than just visual.
m (Withdrew the examples which use other sample outlines. I don't feel comfortable reproducing jokes about mocking and trolling.)
(→‎{{header|Go}}: Changed 'golfing' to 'trolling'. Also round trip test now programmatic rather than just visual.)
Line 45:
import (
"fmt"
"io"
"os"
"strings"
)
Line 58 ⟶ 60:
}
 
func printNest(n nNode, level int, w io.Writer) {
if level == 0 {
fmt.PrintlnFprintln(w, "\n==Nest form==\n")
}
fmt.PrintfFprintf(w, "%s%s\n", strings.Repeat(" ", level), n.name)
for _, c := range n.children {
fmt.PrintfFprintf(w, "%s", strings.Repeat(" ", level+1))
printNest(c, level+1, w)
}
}
Line 84 ⟶ 86:
}
 
func printIndent(iNodes []iNode, w io.Writer) {
fmt.PrintlnFprintln(w, "\n==Indent form==\n")
for _, n := range iNodes {
fmt.PrintfFprintf(w, "%d %s\n", n.level, n.name)
}
}
Line 101 ⟶ 103:
n1 := nNode{"RosettaCode", nil}
n2 := nNode{"rocks", []nNode{{"code", nil}, {"comparison", nil}, {"wiki", nil}}}
n3 := nNode{"mocks", []nNode{{"golfingtrolling", nil}}}
n1.children = append(n1.children, n2, n3)
 
printNest(n1, 0)
var sb strings.Builder
printNest(n1, 0, &sb)
s1 := sb.String()
fmt.Print(s1)
 
var iNodes []iNode
toIndent(n1, 0, &iNodes)
printIndent(iNodes, os.Stdout)
 
var n nNode
toNest(iNodes, 0, 0, &n)
printNestsb.Reset(n, 0)
printNest(n, 0, &sb)
s2 := sb.String()
fmt.Print(s2)
 
fmt.Println("\nRound trip test satisfied? ", s1 == s2)
}</lang>
 
Line 122 ⟶ 135:
wiki
mocks
golfingtrolling
 
==Indent form==
Line 132 ⟶ 145:
2 wiki
1 mocks
2 trolling
2 golfing
 
==Nest form==
Line 142 ⟶ 155:
wiki
mocks
golfingtrolling
</pre>
 
Round trip test satisfied? true
</pre>
 
=={{header|Python}}==
9,485

edits