Had time to think about this on the drive home.
I've eliminated the for loop which was my goal.
Any "better" or "cleaner" way of doing this, I'm all ears. ;)
die Some::Exception.new.throw
if %!panels.elems && !%!panels.values.map({
$end_y < .start_y || $start_x > .end_x ||
$start_y > .end_y || $end_x < .start_x
}).so;
On Thu, Nov 8, 2018 at 4:27 PM Paul Procacci <[email protected]>
wrote:
> I don't like this:
>
>
> for %!panels<>:k {
> die Some::Exception.new.throw
> unless $start_y > %!panels{$_}.end_y || $end_y <
> %!panels{$_}.start_y ||
> $end_x < %!panels{$_}.start_x || $start_x >
> %!panels{$_}.end_x;
>
> }
>
>
> In short, I have a objects stored in hash %!panels that contain the
> (x,y) coordinates of a square.
>
> The function above works; throwing an exception if any of the squares
> overlap, but I don't like using the for loop here.
>
> I'm hoping someone here can provide a similar golfed example.
>
> I've been looking at `map` and `so`, but I just can't get my brain to work.
>
>
> Thanks in Advance,
>
> ~Paul
>
>
--
__________________
:(){ :|:& };: