Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^4: Tree Structure Challenge

by choroba (Archbishop)
on Nov 30, 2015 at 00:19 UTC ( #1148844=note: print w/replies, xml ) Need Help??


in reply to Re^3: Tree Structure Challenge
in thread Tree Structure Challenge

What should the result look like?
( [], [ 'Dog', 'Wolf' ] )

Huh?
I know how to run your code. It doesn't follow the specification: you haven't implemented a static method.
($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Replies are listed 'Best First'.
Re^5: Tree Structure Challenge
by Anonymous Monk on Nov 30, 2015 at 00:31 UTC

    I know how to run your code.

    Its right there in the code

    It doesn't follow the specification: you haven't implemented a static method.

    I didn't implement a static method because its just extra indirection -- the spec contains enough indirection on its own, it doesn't benefit from extra confusion

    Speaking of which, you say it should return

    ( [], [ 'Dog', 'Wolf' ] )

    That is kind of a surprise compared to your original sample data and sample ooutput ... as it stands my "solution" isn't there yet

      That is kind of a surprise
      English is not my first language, so I might be imprecise. But, if you build the two trees as described in "The Task", they look like this:
      T1: Mammal - Canine - Dog - Fox - Wolf T2: Mammal - Canine - Fox

      To get from T1 to T2, you have to remove Dog and Wolf.

      it doesn't benefit from extra confusion
      Well, the tree structure was part of the class originally. I'll add that to the specification.

      Update: I won't. It's not needed in the solution. You should use the documented API, i.e. Parent and get_leaves.

      ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

        ...Update: I won't. It's not needed in the solution. You should use the documented API, i.e. Parent and get_leaves.

        Good luck :)

        #!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd /; dd( deef( [ qw/ Cobra /] , [qw/ Fox /] ) ); dd( deef( [ qw/ Dog Fox Wolf /] , [qw/ Fox /] ) ); sub deef { my( $got, $want) = @_; my %have; undef @have{ @$got }; my @add = grep { !exists $have{$_} } @$want; undef %have; undef @have{ @$want }; my @del = grep { !exists $have{$_} } @$got; [deeef( @add )], [deeef( @del )]; } sub deeef { my( @animals ) = @_; my %catcatdog = ( Mammal => { Bovine => ["Cow", "Bison"], Canine => ["Dog", "Fox", "Wolf"], Equine => ["Horse", "Zebra", "Pony"], }, Reptile => { Bird => ["Pigeon", "Canary", "Owl"], Lizard => ["Salamander", "Chameleon"], Snake => ["Python", "Cobra"], }, ); my %dogcatcat; for my $cat ( keys %catcatdog ){ for my $catcat ( keys %{ $catcatdog{ $cat } } ){ for my $dog( @{ $catcatdog{$cat}{$catcat} } ){ push @{ $dogcatcat{$dog} }, $catcat, $cat, ; } } } return map {; [ $_, @{ $dogcatcat{$_} } ] } @animals; } __END__ ( [["Fox", "Canine", "Mammal"]], [["Cobra", "Snake", "Reptile"]], ) ( [], [["Dog", "Canine", "Mammal"], ["Wolf", "Canine", "Mammal"]], )

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1148844]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (5)
As of 2020-10-29 17:46 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (274 votes). Check out past polls.

    Notices?