65 lines
1.9 KiB
Markdown
65 lines
1.9 KiB
Markdown
|
# Pov
|
||
|
|
||
|
Reparent a graph on a selected node.
|
||
|
|
||
|
# Tree Reparenting
|
||
|
|
||
|
This exercise is all about re-orientating a graph to see things from a different
|
||
|
point of view. For example family trees are usually presented from the
|
||
|
ancestor's perspective:
|
||
|
|
||
|
```
|
||
|
+------0------+
|
||
|
| | |
|
||
|
+-1-+ +-2-+ +-3-+
|
||
|
| | | | | |
|
||
|
4 5 6 7 8 9
|
||
|
```
|
||
|
|
||
|
But the same information can be presented from the perspective of any other node
|
||
|
in the graph, by pulling it up to the root and dragging its relationships along
|
||
|
with it. So the same graph from 6's perspective would look like:
|
||
|
|
||
|
```
|
||
|
6
|
||
|
|
|
||
|
+-----2-----+
|
||
|
| |
|
||
|
7 +-----0-----+
|
||
|
| |
|
||
|
+-1-+ +-3-+
|
||
|
| | | |
|
||
|
4 5 8 9
|
||
|
```
|
||
|
|
||
|
This lets us more simply describe the paths between two nodes. So for example
|
||
|
the path from 6-9 (which in the first graph goes up to the root and then down to
|
||
|
a different leaf node) can be seen to follow the path 6-2-0-3-9
|
||
|
|
||
|
This exercise involves taking an input graph and re-orientating it from the point
|
||
|
of view of one of the nodes.
|
||
|
|
||
|
## Running the tests
|
||
|
|
||
|
To run the tests run the command `go test` from within the exercise directory.
|
||
|
|
||
|
If the test suite contains benchmarks, you can run these with the `-bench`
|
||
|
flag:
|
||
|
|
||
|
go test -bench .
|
||
|
|
||
|
Keep in mind that each reviewer will run benchmarks on a different machine, with
|
||
|
different specs, so the results from these benchmark tests may vary.
|
||
|
|
||
|
## Further information
|
||
|
|
||
|
For more detailed information about the Go track, including how to get help if
|
||
|
you're having trouble, please visit the exercism.io [Go language page](http://exercism.io/languages/go/about).
|
||
|
|
||
|
## Source
|
||
|
|
||
|
Adaptation of exercise from 4clojure [https://www.4clojure.com/](https://www.4clojure.com/)
|
||
|
|
||
|
## Submitting Incomplete Solutions
|
||
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|