diff options
| author | arnesom <arne@bbop.org> | 2023-01-29 20:28:49 +0100 |
|---|---|---|
| committer | arnesom <arne@bbop.org> | 2023-01-29 20:28:49 +0100 |
| commit | a66214c0e882bcfe55cb8bc47b5716879ea64828 (patch) | |
| tree | c8f64e861bcd818a6735b0357fd0e96297ef338b | |
| parent | 43e51aace521869142d8a8ac87674f19d38b2777 (diff) | |
| download | perlweeklychallenge-club-a66214c0e882bcfe55cb8bc47b5716879ea64828.tar.gz perlweeklychallenge-club-a66214c0e882bcfe55cb8bc47b5716879ea64828.tar.bz2 perlweeklychallenge-club-a66214c0e882bcfe55cb8bc47b5716879ea64828.zip | |
Arne Sommer
| -rw-r--r-- | challenge-201/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-201/arne-sommer/raku/ch-1.raku | 20 | ||||
| -rwxr-xr-x | challenge-201/arne-sommer/raku/ch-2.raku | 28 | ||||
| -rwxr-xr-x | challenge-201/arne-sommer/raku/missing-numbers | 20 | ||||
| -rwxr-xr-x | challenge-201/arne-sommer/raku/missing-numbers-wrong | 18 | ||||
| -rwxr-xr-x | challenge-201/arne-sommer/raku/penny-piles | 28 |
6 files changed, 115 insertions, 0 deletions
diff --git a/challenge-201/arne-sommer/blog.txt b/challenge-201/arne-sommer/blog.txt new file mode 100644 index 0000000000..f1190c8c1a --- /dev/null +++ b/challenge-201/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/pennies-numbers.html diff --git a/challenge-201/arne-sommer/raku/ch-1.raku b/challenge-201/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..2588154ad2 --- /dev/null +++ b/challenge-201/arne-sommer/raku/ch-1.raku @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@array where @array.elems && all(@array) ~~ /^<[0..9]>*$/, :v(:$verbose)); + +my $n = @array.elems; +my @sorted = @array.sort; +my @missing = (); +my $current = @sorted.shift; + +for 0 .. $n -> $i +{ + say ": Checking $i" if $verbose; + + $current == $i + ?? ( $current = @sorted.shift || next ) + !! ( @missing.push: $i ); +} + +say @missing.join(","); + diff --git a/challenge-201/arne-sommer/raku/ch-2.raku b/challenge-201/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..e2e87fcb2c --- /dev/null +++ b/challenge-201/arne-sommer/raku/ch-2.raku @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (UInt $n, :v(:$verbose)); + +my $piles := gather +{ + recurse( (), +$n); +} + +sub recurse (@done, $todo) +{ + if $todo == 0 + { + say ": @done[]" if $verbose; + take @done; + return; + } + + for 1 .. $todo -> $i + { + last if @done && $i > @done.head; + my @next = @done.clone; + @next.unshift: $i; + recurse(@next, $todo - $i); + } +} + +say $piles.elems; diff --git a/challenge-201/arne-sommer/raku/missing-numbers b/challenge-201/arne-sommer/raku/missing-numbers new file mode 100755 index 0000000000..2588154ad2 --- /dev/null +++ b/challenge-201/arne-sommer/raku/missing-numbers @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@array where @array.elems && all(@array) ~~ /^<[0..9]>*$/, :v(:$verbose)); + +my $n = @array.elems; +my @sorted = @array.sort; +my @missing = (); +my $current = @sorted.shift; + +for 0 .. $n -> $i +{ + say ": Checking $i" if $verbose; + + $current == $i + ?? ( $current = @sorted.shift || next ) + !! ( @missing.push: $i ); +} + +say @missing.join(","); + diff --git a/challenge-201/arne-sommer/raku/missing-numbers-wrong b/challenge-201/arne-sommer/raku/missing-numbers-wrong new file mode 100755 index 0000000000..6867ac1329 --- /dev/null +++ b/challenge-201/arne-sommer/raku/missing-numbers-wrong @@ -0,0 +1,18 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@array where @array.elems && all(@array) ~~ /^<[0..9]>*$/, :v(:$verbose)); + +my $n = @array.elems; +my @sorted = @array.sort; + +for ^$n -> $i +{ + say ": $i -> @sorted[$i]" if $verbose; + unless @sorted[$i] == $i + { + say $i; + exit; + } +} + +say $n; diff --git a/challenge-201/arne-sommer/raku/penny-piles b/challenge-201/arne-sommer/raku/penny-piles new file mode 100755 index 0000000000..e2e87fcb2c --- /dev/null +++ b/challenge-201/arne-sommer/raku/penny-piles @@ -0,0 +1,28 @@ +#! /usr/bin/env raku + +unit sub MAIN (UInt $n, :v(:$verbose)); + +my $piles := gather +{ + recurse( (), +$n); +} + +sub recurse (@done, $todo) +{ + if $todo == 0 + { + say ": @done[]" if $verbose; + take @done; + return; + } + + for 1 .. $todo -> $i + { + last if @done && $i > @done.head; + my @next = @done.clone; + @next.unshift: $i; + recurse(@next, $todo - $i); + } +} + +say $piles.elems; |
