diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-05-14 13:49:11 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-14 13:49:11 +0100 |
| commit | 39c0a7809fadf47232350104b9d8275d59d63b5c (patch) | |
| tree | 523bc4b628b0c04a1c32f4dc1426940ac279d2cf | |
| parent | 00c4ca8130102d9c3b8762fa894d30c546f6df6b (diff) | |
| parent | 41142acb132fa0fc3f0bcb62bca01666cdca754e (diff) | |
| download | perlweeklychallenge-club-39c0a7809fadf47232350104b9d8275d59d63b5c.tar.gz perlweeklychallenge-club-39c0a7809fadf47232350104b9d8275d59d63b5c.tar.bz2 perlweeklychallenge-club-39c0a7809fadf47232350104b9d8275d59d63b5c.zip | |
Merge pull request #10093 from arnesom/branch-for-challenge-269
Arne Sommer
| -rw-r--r-- | challenge-269/arne-sommer/blog.txt | 1 | ||||
| -rwxr-xr-x | challenge-269/arne-sommer/raku/bitwise-or | 20 | ||||
| -rwxr-xr-x | challenge-269/arne-sommer/raku/bitwise-or-all | 22 | ||||
| -rwxr-xr-x | challenge-269/arne-sommer/raku/ch-1.raku | 20 | ||||
| -rwxr-xr-x | challenge-269/arne-sommer/raku/ch-2.raku | 42 | ||||
| -rwxr-xr-x | challenge-269/arne-sommer/raku/distribute-elements | 42 |
6 files changed, 147 insertions, 0 deletions
diff --git a/challenge-269/arne-sommer/blog.txt b/challenge-269/arne-sommer/blog.txt new file mode 100644 index 0000000000..8359414368 --- /dev/null +++ b/challenge-269/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/distribute-or.html diff --git a/challenge-269/arne-sommer/raku/bitwise-or b/challenge-269/arne-sommer/raku/bitwise-or new file mode 100755 index 0000000000..727da39fc6 --- /dev/null +++ b/challenge-269/arne-sommer/raku/bitwise-or @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 1 && all(@ints) ~~ UInt && all(@ints) > 0, :v(:$verbose)); + +for @ints.combinations(2..*) -> @combination +{ + my $or = [+|] @combination; + my $binary = $or.fmt('%b'); + my $trailing = so ($binary ~~ /.0$/); + + say ": Combination: { @combination.join(",") } -> or: $or -> binary: $binary | trailing 0: $trailing" if $verbose; + + if $trailing + { + say True; + exit; + } +} + +say False; diff --git a/challenge-269/arne-sommer/raku/bitwise-or-all b/challenge-269/arne-sommer/raku/bitwise-or-all new file mode 100755 index 0000000000..e3513fdee0 --- /dev/null +++ b/challenge-269/arne-sommer/raku/bitwise-or-all @@ -0,0 +1,22 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 1 && all(@ints) ~~ UInt && all(@ints) > 0, :a(:$all) = False, :v(:$verbose) = $all); + +my $found = False; + +for @ints.combinations(2..*) -> @combination +{ + my $or = [+|] @combination; + my $binary = $or.fmt('%b'); + my $trailing = so ($binary ~~ /.0$/); + + say ": Combination: { @combination.join(",") } -> or: $or -> binary: $binary | trailing 0: $trailing" if $verbose; + + if $trailing + { + $found = True; + last unless $all; + } +} + +say $found;
\ No newline at end of file diff --git a/challenge-269/arne-sommer/raku/ch-1.raku b/challenge-269/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..727da39fc6 --- /dev/null +++ b/challenge-269/arne-sommer/raku/ch-1.raku @@ -0,0 +1,20 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 1 && all(@ints) ~~ UInt && all(@ints) > 0, :v(:$verbose)); + +for @ints.combinations(2..*) -> @combination +{ + my $or = [+|] @combination; + my $binary = $or.fmt('%b'); + my $trailing = so ($binary ~~ /.0$/); + + say ": Combination: { @combination.join(",") } -> or: $or -> binary: $binary | trailing 0: $trailing" if $verbose; + + if $trailing + { + say True; + exit; + } +} + +say False; diff --git a/challenge-269/arne-sommer/raku/ch-2.raku b/challenge-269/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..7b20457bb4 --- /dev/null +++ b/challenge-269/arne-sommer/raku/ch-2.raku @@ -0,0 +1,42 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 1 && @ints.unique.elems == @ints.elems && all(@ints) ~~ Int, :v(:$verbose)); + +my @arr1 = @ints.shift.Int; +my @arr2 = @ints.shift.Int; + +if $verbose +{ + say ": 1st operation. Add { @arr1[*-1] } to @arr1 = ({ @arr1.join(", ") })"; + say ": 2nd operation. Add { @arr2[*-1] } to @arr2 = ({ @arr2.join(", ") })"; +} + +my $counter = 3; + +while @ints.elems +{ + my $int = @ints.shift.Int; + my $last1 = @arr1.tail; + my $last2 = @arr2[*-1]; + + if $last1 > $last2 + { + @arr1.push: $int; + say ": {$counter++}rd operation. Last of @ints1 > last of @ints2: Add $int to @arr1 = ({ @arr1.join(", ") })" if $verbose; + } + else + { + @arr2.push: $int; + say ": {$counter++}rd operation. Last of @ints2 <= last of @ints2: Add $int to @arr2 = ({ @arr2.join(", ") })" if $verbose; + } +} + +if $verbose +{ + say ": @arr1 = ({ @arr1.join(", ") })"; + say ": @arr2 = ({ @arr2.join(", ") })"; +} + +my @result = (@arr1, @arr2).flat; + +say "({ @result.join(", ") })"; diff --git a/challenge-269/arne-sommer/raku/distribute-elements b/challenge-269/arne-sommer/raku/distribute-elements new file mode 100755 index 0000000000..7b20457bb4 --- /dev/null +++ b/challenge-269/arne-sommer/raku/distribute-elements @@ -0,0 +1,42 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 1 && @ints.unique.elems == @ints.elems && all(@ints) ~~ Int, :v(:$verbose)); + +my @arr1 = @ints.shift.Int; +my @arr2 = @ints.shift.Int; + +if $verbose +{ + say ": 1st operation. Add { @arr1[*-1] } to @arr1 = ({ @arr1.join(", ") })"; + say ": 2nd operation. Add { @arr2[*-1] } to @arr2 = ({ @arr2.join(", ") })"; +} + +my $counter = 3; + +while @ints.elems +{ + my $int = @ints.shift.Int; + my $last1 = @arr1.tail; + my $last2 = @arr2[*-1]; + + if $last1 > $last2 + { + @arr1.push: $int; + say ": {$counter++}rd operation. Last of @ints1 > last of @ints2: Add $int to @arr1 = ({ @arr1.join(", ") })" if $verbose; + } + else + { + @arr2.push: $int; + say ": {$counter++}rd operation. Last of @ints2 <= last of @ints2: Add $int to @arr2 = ({ @arr2.join(", ") })" if $verbose; + } +} + +if $verbose +{ + say ": @arr1 = ({ @arr1.join(", ") })"; + say ": @arr2 = ({ @arr2.join(", ") })"; +} + +my @result = (@arr1, @arr2).flat; + +say "({ @result.join(", ") })"; |
