diff options
| -rw-r--r-- | challenge-123/markus-holzer/raku/ch-1.raku | 10 | ||||
| -rw-r--r-- | challenge-123/markus-holzer/raku/ch-2.raku | 20 |
2 files changed, 30 insertions, 0 deletions
diff --git a/challenge-123/markus-holzer/raku/ch-1.raku b/challenge-123/markus-holzer/raku/ch-1.raku new file mode 100644 index 0000000000..8d6f305684 --- /dev/null +++ b/challenge-123/markus-holzer/raku/ch-1.raku @@ -0,0 +1,10 @@ +# Write a script to find the $Nth element of "Ugly Numbers" + +unit sub MAIN( Int $N ); + +sub factors( Int $n ) { + if $n > 1 { + $_, |factors $n div $_ + given ( grep $n %% *, 2..* ).first } } + +say ( 1, |grep *.&factors.all ∈ ( 2, 3, 5 ), 2..* )[ $N ];
\ No newline at end of file diff --git a/challenge-123/markus-holzer/raku/ch-2.raku b/challenge-123/markus-holzer/raku/ch-2.raku new file mode 100644 index 0000000000..ea005a5a0c --- /dev/null +++ b/challenge-123/markus-holzer/raku/ch-2.raku @@ -0,0 +1,20 @@ +# Given four points, find out if they form a square + +class Point { + has Int $.x; + has Int $.y; +} + +my @points = Point.new( x => 10, y => 20 ), + Point.new( x => 20, y => 20 ), + Point.new( x => 20, y => 10 ), + Point.new( x => 10, y => 10 ); + +say ( '2', '4' ) ≡ .keys && .<4> * 2.sqrt ≅ .<2> + given @points + .combinations( 2 ) + .map( { ( ( .[1].x - .[0].x)² + (.[1].y - .[0].y)² ).sqrt } ) + .Bag + .invert + .Hash; + |
