diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-08 21:30:56 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2020-05-08 21:30:56 +0100 |
| commit | 42497f56acb5263f25c9baf5d3e521242333d6e7 (patch) | |
| tree | 2e9bcd94e8fd4f2376d0a079605b1780bfbfcf64 /challenge-059/arne-sommer/raku/linked-list-linked | |
| parent | 549387f4601e94e9f99ed83ffa078e4228535dac (diff) | |
| download | perlweeklychallenge-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-x | challenge-059/arne-sommer/raku/linked-list-linked | 48 |
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; +} |
