diff options
| -rw-r--r-- | challenge-220/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-220/arne-sommer/raku/ch-1.raku | 9 | ||||
| -rwxr-xr-x | challenge-220/arne-sommer/raku/ch-2.raku | 21 | ||||
| -rwxr-xr-x | challenge-220/arne-sommer/raku/common-characters | 9 | ||||
| -rwxr-xr-x | challenge-220/arne-sommer/raku/squareful | 21 |
5 files changed, 61 insertions, 0 deletions
diff --git a/challenge-220/arne-sommer/blog.txt b/challenge-220/arne-sommer/blog.txt new file mode 100644 index 0000000000..b651a9bf4b --- /dev/null +++ b/challenge-220/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/squarefully-common.html diff --git a/challenge-220/arne-sommer/raku/ch-1.raku b/challenge-220/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..cf1a0759e2 --- /dev/null +++ b/challenge-220/arne-sommer/raku/ch-1.raku @@ -0,0 +1,9 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@words where @words.elems > 1 && all(@words) ~~ /^<[a..zA..Z]>+$/, :v(:$verbose)); + +my $set = [(&)] @words>>.lc>>.comb; + +say ":Set: { $set.raku }" if $verbose; + +say '(' ~ $set.keys.sort.map({ '"' ~ $_ ~ '"' }).join(", ") ~ ')'; diff --git a/challenge-220/arne-sommer/raku/ch-2.raku b/challenge-220/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..fad02576a5 --- /dev/null +++ b/challenge-220/arne-sommer/raku/ch-2.raku @@ -0,0 +1,21 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 1 && all(@ints) ~~ Int); + +my $length = @ints.elems; +my @squareful; + +PERM-LOOP: +for @ints.permutations.unique(:with(&[eqv])) -> @permutation +{ + for 0 .. $length -2 -> $index + { + my $sum = @permutation[$index] + @permutation[$index +1]; + my $root = $sum.sqrt; + next PERM-LOOP unless $root.Int == $root; + } + + push(@squareful, @permutation); +} + +say @squareful; diff --git a/challenge-220/arne-sommer/raku/common-characters b/challenge-220/arne-sommer/raku/common-characters new file mode 100755 index 0000000000..cf1a0759e2 --- /dev/null +++ b/challenge-220/arne-sommer/raku/common-characters @@ -0,0 +1,9 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@words where @words.elems > 1 && all(@words) ~~ /^<[a..zA..Z]>+$/, :v(:$verbose)); + +my $set = [(&)] @words>>.lc>>.comb; + +say ":Set: { $set.raku }" if $verbose; + +say '(' ~ $set.keys.sort.map({ '"' ~ $_ ~ '"' }).join(", ") ~ ')'; diff --git a/challenge-220/arne-sommer/raku/squareful b/challenge-220/arne-sommer/raku/squareful new file mode 100755 index 0000000000..fad02576a5 --- /dev/null +++ b/challenge-220/arne-sommer/raku/squareful @@ -0,0 +1,21 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 1 && all(@ints) ~~ Int); + +my $length = @ints.elems; +my @squareful; + +PERM-LOOP: +for @ints.permutations.unique(:with(&[eqv])) -> @permutation +{ + for 0 .. $length -2 -> $index + { + my $sum = @permutation[$index] + @permutation[$index +1]; + my $root = $sum.sqrt; + next PERM-LOOP unless $root.Int == $root; + } + + push(@squareful, @permutation); +} + +say @squareful; |
