aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-123/markus-holzer/raku/ch-1.raku10
-rw-r--r--challenge-123/markus-holzer/raku/ch-2.raku20
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;
+