aboutsummaryrefslogtreecommitdiff
path: root/challenge-059/arne-sommer/raku/linked-list-linked
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-05-08 21:30:56 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-05-08 21:30:56 +0100
commit42497f56acb5263f25c9baf5d3e521242333d6e7 (patch)
tree2e9bcd94e8fd4f2376d0a079605b1780bfbfcf64 /challenge-059/arne-sommer/raku/linked-list-linked
parent549387f4601e94e9f99ed83ffa078e4228535dac (diff)
downloadperlweeklychallenge-club-42497f56acb5263f25c9baf5d3e521242333d6e7.tar.gz
perlweeklychallenge-club-42497f56acb5263f25c9baf5d3e521242333d6e7.tar.bz2
perlweeklychallenge-club-42497f56acb5263f25c9baf5d3e521242333d6e7.zip
- Added solutions by Arne Sommer.
Diffstat (limited to 'challenge-059/arne-sommer/raku/linked-list-linked')
-rwxr-xr-xchallenge-059/arne-sommer/raku/linked-list-linked48
1 files changed, 48 insertions, 0 deletions
diff --git a/challenge-059/arne-sommer/raku/linked-list-linked b/challenge-059/arne-sommer/raku/linked-list-linked
new file mode 100755
index 0000000000..00796d8676
--- /dev/null
+++ b/challenge-059/arne-sommer/raku/linked-list-linked
@@ -0,0 +1,48 @@
+#! /usr/bin/env raku
+
+multi MAIN (Int $k = 3, Str $list = "1 4 3 2 5 2", :$verbose)
+{
+ MAIN($k, $list.words, :$verbose);
+}
+
+multi MAIN (Int $k = 3, *@list, :$verbose)
+{
+ my @lower;
+ my @higher;
+
+ for @list -> $elem
+ {
+ $elem >= $k
+ ?? @higher.push: $elem
+ !! @lower.push: $elem;
+ }
+
+ my @result = (@lower, @higher).flat;
+
+ if $verbose
+ {
+ say ": == : $k";
+ say ": < : @lower[]";
+ say ": >= : @higher[]";
+ }
+
+ say @result.join(" → ") if $verbose;
+
+ class ListElem
+ {
+ has $.value;
+ has $.next is rw;
+
+ method display
+ {
+ print $.value;
+ if $.next { print " → "; $.next.display; } else { say ""; }
+ }
+ }
+
+ my $head;
+
+ $head = ListElem.new(value => $_, next => $head) for @result.reverse;
+
+ $head.display;
+}