http://www.perlmonks.org?node_id=998933


in reply to Re: Challenge: Dumping trees.
in thread Challenge: Dumping trees.

Naturally nodes with a width greater than 2 chars breaks it :)

Thank you anonymonk. That handles everything I've thrown at it -- which it a darn sight more than I can say for my attempts so far.

It occasionally produces an oddity -- see the 'wxyz' nodes in the second example and the '1' node in the last two examples -- but they are still clear enough for my purposes.

C:\test>genBiaryTree -W=1 -S=2 | junk.pl ______________________________________________________ +________________________________________________/\_ _______/\_____________________________________________________ +_____________________________________________ /\ _/\___ + _____________________________/\_ Y Z _/\ _/\_ ____________________________________ +______________/\_ /\ _/\ d /\ /\ ___________/\_____________ + /\___ W X /\ c e f g h ___/\_____ _______/\____ + H _/\_ a b /\_ _/\___ ___/\_____ __/\________________ +_______ /\ /\_ i /\ _/\ _/\ /\_ ___/\ /\ _______________ +______/\_____ I J K /\___ j k /\ n /\ q r /\ /\_ x y / /\_ + ___/\ L _/\___ l m o p s t u /\ z 1 /\____________ +___ /\_ G /\ _/\_________ v w 2 ___________ +__/\_ D /\ M N /\ _____/\ /\_________ + /\ E F O P _/\___ V 3 _______/\ +_ B C /\ _/\ /\_ +/\ Q R /\ U 4 /\___ 9 + A S T 5 _/\ /\ 8 6 7 C:\test>genBiaryTree -W=1 -S=3 | junk.pl _____________________________/\___________________________________ +___________________________________________________ _/\___________________ + ___________________________________/\ /\ _________/\_______ _________________ +______________/\_______________________________ Z a b _____/\_______ _____/\ ____/\________________ +_____ _______________/\_ _/\___ _____/\ /\_ q ___/\ _______________ +____/\_______ _____/\_ /\ /\ _/\ /\_ l m /\_ _/\_ _/ /\___ + ___/\ _______/\___ /\_________ X Y c d /\ g h /\_ n /\ _____/\ //\ 1 _/\___ + _/\_ G /\_____ _/\ P _/\_ e f i /\ o p /\___ v wyxz /\ _/\______ +_ /\ /\ H ___/\ /\ O ___/\ /\ j k r _/\ 2 3 /\ _____ +/\_ C D E F /\_ L M N _/\_ U V W /\ u 4 5 /\_ + /\ I /\ /\ /\ s t 6 /\_ + A B J K Q R S T 7 /\ 8 9 C:\test>genBiaryTree -W=1 -S=4 | junk.pl ____________________________________ +__________/\_____________________________________ ___________________________/\_______________ + _____/\_ _/\_____________________ ___________/\___________________ +_ _____________________________/\_ /\ _/\ _/\_ _/\_________ _____________ +/\_______ /\_______________________ /\_ Y Z /\ c _______/\ /\_ /\ _/\ ____/\___________ + _____/\ F _________/\___ V /\ a b ___/\_ n o /\ r s ___/\ y /\__ _________/\ + /\_ E _______/\_____ _/\ W X ___/\_ /\_ p q _/\_ x z _/\ /\_ 9 + A /\_ _/\___ ___/\_ /\ U _/\_ /\ j /\_ /\ /\ \ 2 3 /\_ + B /\ _/\ _/\_ /\_ /\ S T /\ /\ h i k /\ t u v w 1 4 /\_ + C D /\ I /\ /\ N /\ Q R d e f g l m 5 /\_ + G H J K L M O P 6 /\ 7 8 C:\test>genBiaryTree -W=1 -S=40 | junk.pl ______________________________/\________ +_ _______________/\_________ ___ +/\_______________ _/\_ _______/\_ ___/\_ + ___________/\_____ _____/\ /\_ /\___ /\_______ /\_ /\ + _/\_______ _/\_________ _/\_ g h /\___ p _/\_ u _/\_ 5 /\ 8 9 + /\ ___/\_ _/\ _______/\_________ _/\ /\_ i _/\___ /\ /\ ___/\ /\__ 6 7 + A B _/\_ /\ /\ K /\___ ___/\___ /\ c d /\ /\ _/\_ q r s t /\_ y z _/\___ + /\ /\ G H I J L _/\_ ___/\_ _/\_ a b e f j k /\ /\ v /\ \ _/\ + C D E F /\ /\ /\_ /\ /\ /\_ l m n o w x 1 /\ 4 + M N O P Q /\ T U V W X /\ 2 3 + R S Y Z C:\test>genBiaryTree -W=1 -S=400 | junk.pl _____________________________/\_____________________________ +___________________________ _______/\_______ + _________________________/\_ /\_____ ___/\_______ ______________________ +/\___________ /\_______________ a ___/\ _/\_ ___/\_ _____/\________________ + _/\_ N ___________/\_ /\_ e /\ /\ _/\_ /\_ /\_ ___/\___ + _______/\ /\_____ _/\_ /\_ b /\ f g h i /\ /\ n /\_____ u /\_ _______/\_ _/\ + /\___ F G ___/\_ /\ /\_____ W /\_ c d j k l m o _/\_ v /\ /\_____ /\ /\ 9 + A _/\_ /\_ /\_ O P Q ___/\_ X /\ _/\ /\ w x _/ _/\ 5 6 7 8 + /\ /\ H /\ K /\ /\_ /\ Y Z /\ r s t /\ _/\ 4 + B C D E I J L M R /\ U V p q y z /\ 3 + S T 1 2 C:\test>genBiaryTree -W=1 -S=400000 | junk.pl + _________________________________/\___ __________________ +________/\___________________ _/\_ _______________________________________________/\_________________ +_______ ___/\_________ /\ /\_ _/\_________________________ _________________ +______/\ ___/\_ _/\_ V W X /\ /\ ___/\___ \ _ + D ___/\_ /\ ___/\ /\ Y Z a b _____/\_ _/\_______ /\______________ +_ ___/\_ /\ M N _/\_ S T U _______/\_ /\ /\ _/\_______ 1 ___________ +/\___ _/\_ /\ K L /\ /\ ___/\_ /\_ n o p q _/\ _/\ _/\_____ + _/\ /\ /\ I J O P Q R _/\_ /\_ k /\ _/\ u ___/\ z /\ ___/\_ + /\ C E F G H /\ /\ g /\_ l m /\ t /\_ y 2 3 /\_ /\_ + A B c d e f h /\ r s v /\ 4 /\ 7 /\ i j w x 5 6 8 9 C:\test>genBiaryTree -W=1 -S=99999400000 | junk.pl _________________/\_________________ ___/\_______________ _____________/\_____ _/\_ _________/\ _/\___ ___/\_________________ +_______________________________________________ _/\ /\ ___/\_______ n /\ _/\___ /\_ + _____/\_ /\ c d e /\_ _/\ o p /\ _/\___ x /\ + ___________________/\___ /\_ a b f /\ ___/\ m q r /\ _/\ y z + ___________/\_____________ _/\ X /\ g h /\_ l s t /\ w + _____/\_____ _______/\_ /\ W Y Z i /\ u v _____ +__/\___ ___/\_ ___/\_____ /\_ U V j k _/\____ +_ _/\ /\_ /\_ /\_ _/\ R /\ ___/\ ___ +/\ /\ D E /\ H /\ K /\ _/\ Q S T _/\_ 6 /\_ + A B C F G I J L M /\ P _/\ /\ 7 /\ + N O _/\ 3 4 5 8 9 \ 2 1

I'm going to try and adapt it to produce a slightly different style of output that I think results in nicer -- cleaner, more easily read -- output. Eg. Instead of:

_____/\_____ ___________/\_ ___/\ _______________/\_ /\_ /\_ z ___/\_____ /\_____ t /\ w /\ _/\_ _/\___ n _/\_ u v x y _/\ /\ _/\ _/\_ _/\ /\ /\ c d e /\ h /\ /\_ /\ q r s a b f g i j k /\ o p l m

This:

_______ ___________/ \___ ___________/ \_ _/ \ _______/ \_____ / \_ / \_ z _/ \___ / \_ t / \ w / \ _/ \_ _/ \__ n _/ \_ u v x y _/ \ / \ _/ \ _/ \ _/ \ / \ / \ c d e / \ h / \ /\_ / \ q r s a b f g i j k / \ o p l m

Also, one possibility for handling node 'names' of more than 1 or 2 chars; though I'm not sure it really works as is?:

_______ ___________/ \___ ___________/ \_ _/ \ _______/ \_____ / \_ / \_ z _/ \___ / \_ t / \ w / \ u _/ \_ _/ \__ n _/ \_ a u v h x y l _/ \ / \ _/ \ _/ \ o _/ \ / \ n n i i r a u / \ c d e / \ h / \ /\_ v / \ q r s g i c s a n a b h e c f g o i j k / \ e o p u o i o f t k y k l r a l h o o t n u i l m m s a e m e o o e e p a r t o x l e d l l i i b c p b e r r r y y h v l a t f l i i o m k e a a e o r m a o i r g e a w r r c a e o o t t

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong