aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-098/luca-ferrari/raku/ch-1.p614
-rw-r--r--challenge-098/luca-ferrari/raku/ch-2.p627
2 files changed, 41 insertions, 0 deletions
diff --git a/challenge-098/luca-ferrari/raku/ch-1.p6 b/challenge-098/luca-ferrari/raku/ch-1.p6
new file mode 100644
index 0000000000..9835075cef
--- /dev/null
+++ b/challenge-098/luca-ferrari/raku/ch-1.p6
@@ -0,0 +1,14 @@
+#!raku
+
+
+sub readN( Str $file-name, Int $how-many-chars where { $how-many-chars >= 1 } ) {
+ state %handles = ();
+ %handles{ $file-name } //= $file-name.IO.open;
+ return %handles{ $file-name }.readchars: $how-many-chars;
+}
+
+sub MAIN( Str $file-name ) {
+ say readN( $file-name, 4 );
+ say readN( $file-name, 4 );
+ say readN( '/home/luca/.zshrc', 10 );
+}
diff --git a/challenge-098/luca-ferrari/raku/ch-2.p6 b/challenge-098/luca-ferrari/raku/ch-2.p6
new file mode 100644
index 0000000000..dc9bbdd1dd
--- /dev/null
+++ b/challenge-098/luca-ferrari/raku/ch-2.p6
@@ -0,0 +1,27 @@
+#!raku
+
+
+sub MAIN( ) {
+ my @N = 1,2,3,4, 7;
+ my $N = 6;
+ say "Array { @N } searching for $N";
+
+ # get the index if the element is there
+ given @N.grep: $N, :k { .say && exit if $_ }
+
+ # if here the element is not there
+ # for @N.List.kv -> $k, $v {
+ # if ( $v > $N ) {
+ # @N = |@N[ 0 .. $k - 1 ], $N, |@N[ $k .. * ];
+ # "Insert value $N at index $k".say;
+ # }
+ # }
+
+
+ given @N.grep: { $_ > $N }, :k {
+ @N = |@N[ 0 .. $_ - 1 ], $N, |@N[ $_ .. * ];
+ "Insert value $N at index $_".say;
+ exit;
+ }
+
+}