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


in reply to Re: How do I remove the duplicates from the array?
in thread How do I remove the duplicates from the array?

maybe less cryptic?

DB<154> @a0 = (-20,20,1,1,2,2,2,9,3,-4,-4,5,-20,20); => (-20, 20, 1, 1, 2, 2, 2, 9, 3, -4, -4, 5, -20, 20) DB<155> @a1 = ( 10,11,7,9,3,3,3,1,3, 4, 5,5, 1,30); => (10, 11, 7, 9, 3, 3, 3, 1, 3, 4, 5, 5, 1, 30) DB<156> map { push @{$group{$a0[$_]}},$a1[$_] } 0..$#a0 DB<157> sub highlander { my @sort = sort @{ shift() } ; return $sort[-1]>$sort[0] ? $sort[-1] : undef } DB<158> @high{keys %group } = map { highlander($_) } values %group => (undef, 5, undef, undef, 30, 9, 10, undef) DB<159> map { ($a0[$_],$a1[$_])=() if $a1[$_] != $high{ $a0[$_] } } +0..$#a0 DB<160> \@a0 => [ -20, undef, undef, 1, undef, undef, undef, undef, undef, undef, -4, undef, undef, 20, ] DB<161> \@a1 => [ 10, undef, undef, 9, undef, undef, undef, undef, undef, undef, 5, undef, undef, 30, ]

Cheers Rolf

( addicted to the Perl Programming Language)

Replies are listed 'Best First'.
Re^3: How do I remove the duplicates from the array?
by hdb (Monsignor) on Sep 26, 2013 at 14:18 UTC

    I do not understand the line $sort[-1]>$sort[0] ? $sort[-1] : undef. What if the values are 7, 8, 8? How will it discard the whole thing? I know the OPs spec is rather cryptic but my understanding was, that the values are to be blanked out if the max occurs more than once.

      > I know the OPs spec is rather cryptic but my understanding was, that the values are to be blanked out if the max occurs more than once.

      hmm ... ok my understanding was to discard if all are maximum, see (3,3,3)

      But your definition is indeed closer to the naming highlander, maybe peak was better.

      edit

      For highlander compare with [-2] if there are more than 2 elements.

      BTW: "cryptic" is an euphemism for incompetent ... if you can't express such a problem in words you don't deserve being called a programmer.

      Cheers Rolf

      ( addicted to the Perl Programming Language)

        Unless the OP clarifies, it is probably not a meaningful discussion...