in reply to Challenge: Dumping trees.
Done! Adapted from http://hectorcorrea.com/Blog/Drawing-a-Binary-Tree-in-Ruby, where descendents are called children :)
#!/usr/bin/perl --
use strict; use warnings; use Data::Dump;
my $root =
[
[
[
[
[[["a", "b"], "c"], ["d", "e"]],
[[["f", "g"], "h"], [["i", "j"], ["k", ["l", "m"]]]],
#~ [[["a", "b"], "cc"], ["dd", "ee"]],
#~ [[["a", "b"], "ccc"], ["ddd", "eee"]],
],
["n", [[["o", "p"], "q"], ["r", "s"]]],
],
["t", ["u", "v"]],
],
[["w", ["x", "y"]], "z"],
];
my $leftstart = 1000;
my @lines;
my @rows;
my $leftestmost = 0;
my $rightestmost = 0;
Fudgy( $root, 0, 0, sub {
my($node, $x,$y,$px,$py, $leftoright ) = @_;
$leftestmost = $x if $x < 0 and $leftestmost > $x;
$rightestmost = $x if $x > 0 and $rightestmost < $x;
my $text = $node;
if( ref $node ){
my( $left, $right ) = @$node;
$text = '';
$text .= '/' if $left;
$text .= '\\' if $right;
}
my $xpd = abs(abs($px)-abs($x));
$x = $leftstart + $x;
push @{ $rows[ $y ] } , [ $x, $text , $px, $py , $xpd ];
my $lll = $lines[ $y ]; $lll ||= ' ' x ( 2 * $leftstart );;
substr $lll, $x, length($text), $text;
$lines[ $y ] = $lll;
if( $y > 0 ){
my $off = $x + 1;
my $rep = '_' x ( $xpd - 1 );
my $lline = $lines[ $y - 1];
if( $leftoright > 0 ){
$off -= length( $rep );
}
substr $lline, $off, length($rep),$rep;
$lines[ $y -1 ] = $lline;
}
} );
dd \@rows;
s/\s+$// for @lines;
$leftestmost = $leftstart + $leftestmost ;
s/^\s{$leftestmost}// for @lines;
print join "\n", @lines;
sub Fudgy {
my( $node , $x, $y, $subref ) = @_;
return if not @$node;
my( $left, $right ) = @$node;
$subref->( $node, $x, $y , $x, $y );
$left and draw_left( $left, $x , $y , $subref );
$right and draw_right($right, $x , $y , $subref );
}
sub draw_left {
my( $node , $px, $py, $subref ) = @_;
my $count = 0;
my( $left, $right ) = eval { @$node };
$right and $count = 1 + descendents_count( $right );
my $x = $px - $count - 1;
my $y = $py + 1;
$subref->( $node, $x, $y, $px, $py , -1 );
$left and draw_left( $left , $x, $y, $subref );
$right and draw_right( $right, $x, $y, $subref );
}
sub children_count {
return 1 if not ref $_[0];
return int @{ $_[0] };
}
sub descendents_count {
my( $node ) = @_;
my( $left, $right ) = eval { @$node };
my $count = 0;
$left and $count += 1 + descendents_count( $left );
$right and $count += 1 + descendents_count( $right );
return $count;
}
sub draw_right {
my( $node , $px, $py, $subref ) = @_;
my $count = 0;
my( $left, $right ) = eval { @$node };
$right and $count = 1 + descendents_count( $left );
my $x = $px + $count + 1;
my $y = $py + 1;
$subref->( $node, $x, $y, $px, $py , +1 );
$left and draw_left( $left , $x, $y, $subref );
$right and draw_right( $right, $x, $y, $subref );
}
__END__
__END__
__END__
__END__
_____/\_____
___________/\_ ___/\
_______________/\_ /\_ /\_ 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
Naturally nodes with a width greater than 2 chars breaks it :)
Re^2: Challenge: Dumping trees.
by BrowserUk (Patriarch) on Oct 14, 2012 at 08:40 UTC
|
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
| [reply] [d/l] [select] |
Re^2: Challenge: Dumping trees.
by BrowserUk (Patriarch) on Oct 15, 2012 at 14:16 UTC
|
Upon further testing, the anomalies I noted in Re^2: Challenge: Dumping trees. were actually more prevalent and distracting than I first thought; and I failed in my attempts to cure them in your code.
I also finally succeeded in getting my attempt to work properly. In part, because of a couple of things I learnt from studying your code. Thank you.
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
| [reply] |
|
I also finally succeeded neat :) it really is much easier on the eyes
Upon further testing, the anomalies
Hmm, weird. Using your tree generator from genBiaryTree my $root = do {
our $S //= 0;
srand $S if $S;
my $r;
my @a =(
'a'..'z',
1..9,
'A'..'Z',
);
$r = int( rand $#a ), splice @a, $r, 2, [ @a[ $r, $r+1 ]] while @a
+ > 1;
@a = @{ $a[0] };
\@a;
};
And running Fudgy >anomaly.txt
Fudgy -S=2 >>anomaly.txt
Fudgy -S=3 >>anomaly.txt
Fudgy -S=4 >>anomaly.txt
Fudgy -S=40 >>anomaly.txt
Fudgy -S=400 >>anomaly.txt
Fudgy -S=400000 >>anomaly.txt
Fudgy -S=99999400000 >>anomaly.txt
notepad anomaly.txt
I was not able to reproduce the anomalies, I get
_________________/\_____________________________________________
+____
_/\_____ __
+___/\___________________________________
_/\ _/\_______ ___________________________/\_
+__ _/\_________
/\ c _/\ ___/\_ _________/\_____
+_/\ _______________________/\ _/\
a b /\ f _/\_ /\ _/\_______ _/\_______ /
+\ B ___/\_________________ T _____/\ Z
d e /\ /\ k l _/\ _/\ _/\ ___/\_________ 9
+A ___/\_ _____/\_ /\_ Y
g h i j /\ o ___/\ t /\ w _/\_ _______/\_
+ /\_ /\ ___/\___ /\_ U /\_
m n /\_ s u v /\ /\ /\___ /\
+ C /\ F G ___/\_ _/\ Q /\ V /\
p /\ x y z 1 2 _/\_ 7 8
+ D E _/\_ /\ /\ P R S W X
q r /\ /\
+ /\ /\ L M N O
3 4 5 6
+ H I J K
_______/\_____________________________________________________
+________________________________________________
_/\___
+ _______________________________/\_
_/\ _/\_ ______________________
+_______________/\___ /\
_/\ d /\ /\ _____________/\_____________________
+______________ _/\_________________________ Y Z
/\ c e f g h ___________/\_______
+ _______/\ /\ _________________/\
a b ___/\_____ _/\___ ________________
+_____/\___ H I J _____/\_______________ X
/\_ _/\___ _/\ _/\ ___/\_
+ _/\_ /\_ ___________/\
i /\ _/\ _/\ _/\ u /\ x /\_ /\_
+ /\ /\ K /\_ _/\___ W
j k /\ n /\ q /\ t v w y /\ 2 /\_________
+ D E F G L /\ /\ _/\_____
l m o p r s z 1 3 _______/\_
+__ M N O P /\ _/\
/\_
+_/\_ Q R _/\ V
4 /\___ /
+\ /\ /\ U
5 _/\ 9
+A B C S T
/\ 8
6 7
______________________________
+_________________________________________________/\
___________________________________/\_____________________________
+______________ Z
_/\___________________________ ____________________
+_____________/\_______________________________
/\ _______/\_ _____/\_________
+ _______________/\_
a b _________/\_ /\_ _/\_ _____/\_________
+__ ___________/\_ /\
___/\_______ /\___ q /\_ /\ /\_ _/\_ ______
+_/\_______ _/\_________ /\_________ X Y
___/\_ _____/\ m _/\ r /\ u v w /\ /\ /\_ _/\___
+ _/\_ /\ _/\ P _/\_
/\_ /\ /\_ l /\ p s t x y z 1 2 /\ /\ _/\_
+ ___/\ /\ H I _/\ O ___/\ /\
c /\ f g h /\_ n o 3 4 5 6 /\ /
+\ /\_ E F G _/\ N _/\_ U V W
d e i /\ 7 8 9
+A B /\ _/\ M /\ /\
j k
+ C D /\ L Q R S T
+ J K
________________________________________________________________
+_________/\_____________________________________
_/\___________________________
+ ___________________________________/\_
_/\ _____/\_______________
+ /\_______________________________ /\
/\ c _/\_ ___________/\___________________
+ F ___________________________/\_ Y Z
a b _______/\ /\_ _/\_________ _______________/
+\_ _/\_________________________ /\
___/\_ n o /\ /\ _/\ _/\_
+ /\_ /\ ___________/\ W X
___/\_ /\_ p q r s ___/\ y /\ /\_
+A /\_ G H _____/\_____ V
_/\_ /\ j /\_ _/\_ x z 1 2 /\___
+ B /\_ _/\_ _/\___
/\ /\ h i k /\ /\ /\ 3 _/\___
+ C /\ ___/\ /\_ _/\ _/\
d e f g l m t u v w /\ _/\_
+ D E /\_ L M /\ /\ R /\ U
4 5 /\ /\
+ I /\ N O P Q S T
6 7 8 9
+ J K
___________/\_______________________________________
___/\_______ _____________________________/
+\___
_/\_ ___/\_ ___/\_________________________
+ _/\___________
_____/\ /\ _/\_ /\ ___/\_ _____________________/\_
+ /\ _____/\___
_/\___ g h i /\ /\ n o /\_ /\ _/\_________________ /\
+A B ___/\___ _/\___________
_/\ _/\ j k l m p /\ s t /\ ___________/\_ 8 9
+ /\_ _/\ /\ _______/\_________
/\ c /\ f q r u v _/\_________ /\
+ C /\ /\ H I J _/\___ ___/\___
a b d e _/\ _____/\ 6 7
+ D E F G /\ _/\_ ___/\_ _/\_
/\ y _/\_ 5
+ K L /\ /\ /\_ /\ /\ /\_
w x /\ /\_
+ M N O P Q /\ T U V W X /\
z 1 2 /\
+ R S Y Z
3 4
_________________________/\___________________________
+__________________________
_____________/\_
+ _____________/\_
/\_______ /\_____________________ ____
+___________/\_ /\_____________
a _/\_ i _____________/\ ___/\___
+____ /\_____ N _________/\___
___/\ /\_ ___/\___ u ___________/\_
+___/\___ G ___/\_ _/\_ _/\_
/\_ e f /\ _/\_ _/\_____ _____/\___ /\ _/
+\_ _/\_ /\_ /\_ /\ /\_ /\ /\_
b /\ g h /\ /\ /\ _/\_ /\_ _/\_____ 6 7 /\
+ /\ /\ /\ H /\ K /\ O P Q /\___ V W X /\
c d j k l m n o _/\ /\ v /\_ /\ _/\ 8 9
+A B C D E F I J L M R _/\ Y Z
/\ r s t w /\ z 1 _/\ 5
+ /\ U
p q x y /\ 4
+ S T
2 3
________________
+___________________/\_________________
_/\_______________
+________ _________/\___
_______________________________________________/\
+ ___/\___ _____/\___ _/\___
_/\_____________________________________ 1 ____________
+___/\_ _/\_____ /\___ _/\___ /\ _/\_
/\ _____________/\_______ _/\___
+ /\ /\ _/\ K _/\ /\ _/\ T U /\ /\_
a b _______/\_ _/\ /\ _/\___
+ C D E F _/\ J /\ N O P /\ S V W X /\
_______/\_____ /\___ _/\ z 2 3 /\ _/\___
+ /\ I L M Q R Y Z
___/\_ ___/\ o _/\_____ _/\ y 4 5 /\ _/
+\_ G H
_/\_ /\_ /\_ n /\ _/\ /\ x 6 7 /\
+ /\
/\ /\ g /\_ k /\ p q _/\ u v w 8 9
+A B
c d e f h /\ l m /\ t
i j r s
_______/\_____________________
+______________________
___________________________________/\_____ ______________
+_____________________/\___________
_/\___________________ ___/\ _____/\_____________
+____________________ _______/\_
/\ _______/\_________ /\_ x /\___ ____________
+___________________/\ _/\___ /\_
a b _______/\_ _______/\___ u /\ y _/\ /\___
+ K /\ _/\_ R /\___
_/\___ /\_ /\_ _/\ v w /\ 2 3 _/\_
+ L M /\ /\ S _/\_______
/\ _/\_ i /\_ m /\_ /\ t z 1 /\ /\_____
+__________ N O P Q /\ _/\
c d /\ /\ j /\ n /\_ r s 4 5 6
+_________/\___ T U ___/\ Z
e f g h k l o /\ _/
+\_ _/\___ /\_ Y
p q _/\
+ /\_____ /\ _/\ V /\
/\ 9
+A ___/\ F G /\ J W X
7 8
+ /\_ E H I
+ B /\
+ C D
| [reply] [d/l] [select] |
|
I was not able to reproduce the anomalies,
Okay.
- First problem: Your version of the generator is not -- for the same setting of srand-- producing the same randomly generated tree.
At first, I assumed this must be because you were using a different rand to me. I guessed you might be running on some flavour of *nix -- but then I noticed your use of notepad above -- which squashed that idea.
Then I thought you might be running some other flavour of windows perl -- perhaps Strawberry. So, I thought I'd re-generate the failing test cases using my version of the generator and supply you with the generated trees.
- Second problem: my version of the generator is no longer producing the same trees for a given value of -S=nnn!
Did I change the generator between posting and now? I don't remember, but I can only assume that something in the original code I used, that used rand has changed.
Never mind: I'll reverse engineer the output I posted back to a raw tree structure and give you that.
- Third problem: Reverse engineering this pretty form of output is extremely painstaking, laborious and painful!
But I did it!
my $root =
[
[
['a','b'],
[
[[['c','d'],[['e','f'],'g']],[['h',['i',['j','k']]],'l']],
[['m',['n',['o','p']]],'q']
]
],
[
[
[
[[[['r',[['s','t'],'u']],'v'],['w','x']],[['y','z'],]],
[
['1',[['2','3'],[['4','5'],[['6',['7',['8','9']]],['A','B']]]]],
[[['C','D'],['E','F']],'G']
]
],
[
[
[['H',[['I',['J','K']],'L']],[['M','N'],'O']],
['P',[[[['Q','R'],['S','T']],'U'],['V','W']]]
],
['X','Y']
]
],'Z'
]
]
;
Which fed to your dumper produces the same (malformed) dump that I originally posted: C:\test>anonBinTreeDumper.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
But that raises another problem...
- Fourth problem: if you look at the raw tree above, you'll see it is malformed: [['y','z'],]; the x,y node is paired with a null node.
And that raises the final problem.
- Fifth problem: Given that the raw tree is reproduced from the pretty-printer output, there is no way to determine if the tree my generator fed your dumper was malformed; or if the malformation is a result of occlusion in the dumper output?
I don't think that it is possible for the generator to produce bad trees -- but I haven't proven that.
Looking at the spacing between the 'z' and the '1' nodes, the gap is too big, which makes me think it is a artifact of the dumper.
At that point, I manually made the simplest correction to the raw tree that (I thought) would make it valid: my $root =
[
[
['a','b'],
[
[[['c','d'],[['e','f'],'g']],[['h',['i',['j','k']]],'l']],
[['m',['n',['o','p']]],'q']
]
],
[
[
[
[[[['r',[['s','t'],'u']],'v'],['w','x']],[['y','z']]],
[
['1',[['2','3'],[['4','5'],[['6',['7',['8','9']]],['A','B']]]]],
[[['C','D'],['E','F']],'G']
]
],
[
[
[['H',[['I',['J','K']],'L']],[['M','N'],'O']],
['P',[[[['Q','R'],['S','T']],'U'],['V','W']]]
],
['X','Y']
]
],'Z'
]
]
;
and re-ran the dumper. As you can see, it still produces the identical, malformed dump:
C:\test>anonBinTreeDumper.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
So then I fed that corrected tree to my dumper: C:\test>perl \perl64\site\lib\Tree\Dump.pm
____________________________________________________
+_________________________________
_____________/
+ \___________________
_/ \_________ __________
+_________________________________/ \
/ \ _____/ \_____ _______/
+ \_______________ Z
a b ___/ \_____ _/ \ _____/ \__________
+___________ ___/ \_
_/ \_ _/ \ / \_ q _/ \ ___/
+ \___ _______/ \_________ / \
/ \ _/ \ / \_ l m / \_ ___/ \_ _/ / \___
+ _/ \ ___/ \_ / \_ X Y
c d / \ g h / \_ n / \ ___/ \ / \ / \ 1 _/ \___
+ _/ \_ G / \___ _/ \ P ___/ \_
e f i / \ o p / \_ v w x y z / \ _/ \__
+___ / \ / \ 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
At this point, I'm kicking the ball into your court to decide if it is worth pursuing further?
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
| [reply] [d/l] [select] |
|
|
|