diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2021-07-28 10:19:56 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-28 10:19:56 +0100 |
| commit | 2c50d15dda0829ab4bbf335160d3c4dc41aaa308 (patch) | |
| tree | 205f8067d406dc266b12ff72abd481b8e2ff97d6 | |
| parent | ca4faae6b38a1089dd684449b3a16c13abde1c45 (diff) | |
| parent | 89a81fa891a403ec8290cbe2a65732cc8b518835 (diff) | |
| download | perlweeklychallenge-club-2c50d15dda0829ab4bbf335160d3c4dc41aaa308.tar.gz perlweeklychallenge-club-2c50d15dda0829ab4bbf335160d3c4dc41aaa308.tar.bz2 perlweeklychallenge-club-2c50d15dda0829ab4bbf335160d3c4dc41aaa308.zip | |
Merge pull request #4621 from Scimon/master
Reducing code by making more Rakuish
| -rw-r--r-- | challenge-123/simon-proctor/raku/ch-2.raku | 31 |
1 files changed, 14 insertions, 17 deletions
diff --git a/challenge-123/simon-proctor/raku/ch-2.raku b/challenge-123/simon-proctor/raku/ch-2.raku index bff4cbcc4e..05ff2038ae 100644 --- a/challenge-123/simon-proctor/raku/ch-2.raku +++ b/challenge-123/simon-proctor/raku/ch-2.raku @@ -2,10 +2,10 @@ multi MAIN( 'Test' ) { use Test; - ok is-square( 10, 20, 20, 20, 20, 10, 10, 10 ); - ok !is-square( 12, 24, 16,10, 20, 12, 18, 16 ); - ok is-square( 0, 10, 10, 0, 0, -10, -10, 0 ); - is sq-dist-between( 0,0, 3, 4 ), 25; + ok is-square( (10, 20), (20, 20), (20, 10), (10, 10) ); + ok !is-square( (12, 24), (16,10), (20, 12), (18, 16) ); + ok is-square( (0, 10), (10, 0), (0, -10), (-10, 0) ); + is sq-dist-between( (0,0), (3,4) ), 25; done-testing; } @@ -14,21 +14,18 @@ multi MAIN( Num() $x1, Num() $y1, Num() $x2, Num() $y2, Num() $x3, Num() $y3, Num()$x4, Num() $y4 ) { - say +is-square( $x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4 ); + say +is-square( ($x1, $y1), ($x2, $y2), ($x3, $y3), ($x4, $y4) ); } -multi sq-dist-between( $x1, $y1, $x2, $y2 ) { - ( $x1-$x2 )² + ( $y1-$y2 )²; +multi sq-dist-between( @p1, @p2 ) { + ( @p1[0]-@p2[0] )² + ( @p1[1]-@p2[1] )²; } -multi is-square( $x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4 ) { - my ( $d1, $d2, $d3, $d4, $d5, $d6 ) = ( - sq-dist-between( $x1,$y1, $x2, $y2), - sq-dist-between( $x1,$y1, $x3, $y3), - sq-dist-between( $x1,$y1, $x4, $y4), - sq-dist-between( $x2,$y2, $x3, $y3), - sq-dist-between( $x2,$y2, $x4, $y4), - sq-dist-between( $x3,$y3, $x4, $y4), - ).sort; - return $d1 ~~ $d2 ~~ $d3 ~~ $d4 && $d5 ~~ $d6; +multi is-square( @p1, @p2, @p3, @p4 ) { + my @d = ( @p1, @p2, @p3, @p4 ) + .combinations(2) + .map( -> @l { sq-dist-between( @l[0], @l[1] ) } ) + .sort; + + return ([~~] @d[0..3]) && ([~~] @d[4..5]); } |
