aboutsummaryrefslogtreecommitdiff
path: root/challenge-307
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-307')
-rw-r--r--challenge-307/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-307/arne-sommer/raku/ch-1.raku23
-rwxr-xr-xchallenge-307/arne-sommer/raku/ch-2.raku30
-rwxr-xr-xchallenge-307/arne-sommer/raku/check-order23
-rwxr-xr-xchallenge-307/arne-sommer/raku/find-anagrams30
-rw-r--r--challenge-307/athanasius/perl/ch-1.pl172
-rw-r--r--challenge-307/athanasius/perl/ch-2.pl200
-rw-r--r--challenge-307/athanasius/raku/ch-1.raku164
-rw-r--r--challenge-307/athanasius/raku/ch-2.raku183
-rw-r--r--challenge-307/bob-lied/README6
-rw-r--r--challenge-307/bob-lied/perl/ch-1.pl76
-rw-r--r--challenge-307/bob-lied/perl/ch-2.pl128
-rw-r--r--challenge-307/dave-jacoby/perl/ch-1.pl30
-rw-r--r--challenge-307/dave-jacoby/perl/ch-1.py52
-rw-r--r--challenge-307/dave-jacoby/perl/ch-2.pl37
-rw-r--r--challenge-307/dave-jacoby/perl/ch-2.py35
-rw-r--r--challenge-307/deadmarshal/blog.txt1
-rw-r--r--challenge-307/deadmarshal/java/Ch1.java21
-rw-r--r--challenge-307/deadmarshal/java/Ch2.java24
-rw-r--r--challenge-307/deadmarshal/modula-3/Ch1/src/Ch1.m338
-rw-r--r--challenge-307/deadmarshal/modula-3/Ch1/src/m3makefile4
-rw-r--r--challenge-307/deadmarshal/modula-3/Ch2/src/Ch2.m332
-rw-r--r--challenge-307/deadmarshal/modula-3/Ch2/src/m3makefile5
-rw-r--r--challenge-307/deadmarshal/perl/ch-1.pl14
-rw-r--r--challenge-307/deadmarshal/perl/ch-2.pl15
-rw-r--r--challenge-307/deadmarshal/zig/ch1/build.zig91
-rw-r--r--challenge-307/deadmarshal/zig/ch1/build.zig.zon72
-rw-r--r--challenge-307/deadmarshal/zig/ch1/src/main.zig60
-rw-r--r--challenge-307/deadmarshal/zig/ch1/src/root.zig10
-rw-r--r--challenge-307/deadmarshal/zig/ch2/build.zig91
-rw-r--r--challenge-307/deadmarshal/zig/ch2/build.zig.zon72
-rw-r--r--challenge-307/deadmarshal/zig/ch2/src/main.zig46
-rw-r--r--challenge-307/deadmarshal/zig/ch2/src/root.zig10
-rw-r--r--challenge-307/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-307/jaldhar-h-vyas/perl/ch-1.pl15
-rwxr-xr-xchallenge-307/jaldhar-h-vyas/perl/ch-2.pl12
-rwxr-xr-xchallenge-307/jaldhar-h-vyas/raku/ch-1.raku16
-rwxr-xr-xchallenge-307/jaldhar-h-vyas/raku/ch-2.sh3
-rw-r--r--challenge-307/jeanluc2020/blog-1.txt1
-rw-r--r--challenge-307/jeanluc2020/blog-2.txt1
-rwxr-xr-xchallenge-307/jeanluc2020/perl/ch-1.pl66
-rwxr-xr-xchallenge-307/jeanluc2020/perl/ch-2.pl86
-rw-r--r--challenge-307/jo-37/blog.txt1
-rwxr-xr-xchallenge-307/jo-37/perl/ch-1.pl93
-rwxr-xr-xchallenge-307/jo-37/perl/ch-2.pl95
-rw-r--r--challenge-307/mahnkong/perl/ch-1.pl18
-rw-r--r--challenge-307/mahnkong/perl/ch-2.pl21
-rw-r--r--challenge-307/matthias-muth/README.md157
-rw-r--r--challenge-307/matthias-muth/blog.txt1
-rwxr-xr-xchallenge-307/matthias-muth/perl/ch-1.pl28
-rwxr-xr-xchallenge-307/matthias-muth/perl/ch-2.pl36
-rw-r--r--challenge-307/pokgopun/go/ch-1.go83
-rw-r--r--challenge-307/pokgopun/go/ch-2.go104
-rw-r--r--challenge-307/pokgopun/python/ch-1.py65
-rw-r--r--challenge-307/pokgopun/python/ch-2.py75
-rw-r--r--challenge-307/roger-bell-west/blog.txt1
-rwxr-xr-xchallenge-307/roger-bell-west/crystal/ch-1.cr25
-rwxr-xr-xchallenge-307/roger-bell-west/crystal/ch-2.cr22
-rwxr-xr-xchallenge-307/roger-bell-west/javascript/ch-1.js63
-rwxr-xr-xchallenge-307/roger-bell-west/javascript/ch-2.js32
-rw-r--r--challenge-307/roger-bell-west/kotlin/ch-1.kt33
-rw-r--r--challenge-307/roger-bell-west/kotlin/ch-2.kt30
-rwxr-xr-xchallenge-307/roger-bell-west/lua/ch-1.lua64
-rwxr-xr-xchallenge-307/roger-bell-west/lua/ch-2.lua51
-rwxr-xr-xchallenge-307/roger-bell-west/perl/ch-1.pl22
-rwxr-xr-xchallenge-307/roger-bell-west/perl/ch-2.pl24
-rw-r--r--challenge-307/roger-bell-west/postscript/ch-1.ps254
-rw-r--r--challenge-307/roger-bell-west/postscript/ch-2.ps246
-rwxr-xr-xchallenge-307/roger-bell-west/python/ch-1.py25
-rwxr-xr-xchallenge-307/roger-bell-west/python/ch-2.py21
-rwxr-xr-xchallenge-307/roger-bell-west/raku/ch-1.p620
-rwxr-xr-xchallenge-307/roger-bell-west/raku/ch-2.p622
-rwxr-xr-xchallenge-307/roger-bell-west/ruby/ch-1.rb30
-rwxr-xr-xchallenge-307/roger-bell-west/ruby/ch-2.rb26
-rwxr-xr-xchallenge-307/roger-bell-west/rust/ch-1.rs27
-rwxr-xr-xchallenge-307/roger-bell-west/rust/ch-2.rs28
-rw-r--r--challenge-307/roger-bell-west/scala/ch-1.scala35
-rw-r--r--challenge-307/roger-bell-west/scala/ch-2.scala32
-rw-r--r--challenge-307/roger-bell-west/tests.json28
-rw-r--r--challenge-307/sgreen/README.md4
-rw-r--r--challenge-307/sgreen/blog.txt1
-rwxr-xr-xchallenge-307/sgreen/perl/ch-1.pl25
-rwxr-xr-xchallenge-307/sgreen/perl/ch-2.pl28
-rwxr-xr-xchallenge-307/sgreen/python/ch-1.py29
-rwxr-xr-xchallenge-307/sgreen/python/ch-2.py26
-rwxr-xr-xchallenge-307/sgreen/python/test.py25
-rw-r--r--challenge-307/simon-dueck/fsharp/ch-1.fsx16
-rw-r--r--challenge-307/simon-dueck/fsharp/ch-2.fsx21
-rw-r--r--challenge-307/steven-wilson/perl/ch-1.pl15
-rw-r--r--challenge-307/steven-wilson/perl/ch-2.pl23
-rw-r--r--challenge-307/steven-wilson/python/ch-1.py21
-rw-r--r--challenge-307/steven-wilson/python/ch-2.py39
-rw-r--r--challenge-307/wambash/julia/ch-1.jl14
-rw-r--r--challenge-307/wambash/julia/ch-2.jl13
-rw-r--r--challenge-307/wambash/raku/ch-1.raku18
-rw-r--r--challenge-307/wambash/raku/ch-2.raku19
-rwxr-xr-xchallenge-307/wanderdoc/perl/ch-1.pl53
-rwxr-xr-xchallenge-307/wanderdoc/perl/ch-2.pl45
-rwxr-xr-xchallenge-307/wlmb/perl/ch-2.pl12
-rwxr-xr-xchallenge-307/wlmb/perl/ch-2a.pl21
-rw-r--r--challenge-307/zapwai/perl/ch-1.pl17
-rw-r--r--challenge-307/zapwai/perl/ch-2.pl35
102 files changed, 4440 insertions, 15 deletions
diff --git a/challenge-307/arne-sommer/blog.txt b/challenge-307/arne-sommer/blog.txt
new file mode 100644
index 0000000000..9e4f58421f
--- /dev/null
+++ b/challenge-307/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/find-check.html
diff --git a/challenge-307/arne-sommer/raku/ch-1.raku b/challenge-307/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..7cdcfc635f
--- /dev/null
+++ b/challenge-307/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,23 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems >= 2 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my @ordered = @ints.sort;
+
+my @indices;
+
+for ^@ints.elems -> $index
+{
+ if @ints[$index] == @ordered[$index]
+ {
+ say ": Index $index: @ints[$index] == @ordered[$index] *" if $verbose;
+ }
+ else
+ {
+ @indices.push: $index;
+ say ": Index $index: @ints[$index] != @ordered[$index]" if $verbose;
+ }
+}
+
+say "({ @indices.join(", ") })";
diff --git a/challenge-307/arne-sommer/raku/ch-2.raku b/challenge-307/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..7e36e25b6e
--- /dev/null
+++ b/challenge-307/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,30 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@words where @words.elems > 0, :v(:$verbose));
+
+my %canonical;
+
+@words.map({ %canonical{$_} = $_.lc.comb.sort.join });
+
+@words.map({ say ": Canonical of: $_ -> %canonical{$_}" }) if $verbose;
+
+my $index = 0;
+
+loop
+{
+ last if @words.elems == 0;
+ last if @words.end == $index;
+
+ if %canonical{@words[$index + 0]} eq %canonical{@words[$index + 1]}
+ {
+ print ": Dropping @words[$index + 0] (index $index)" if $verbose;
+ @words.splice($index,1);
+ say " -> ({ @words.join(",") })" if $verbose;
+ }
+ else
+ {
+ $index++;
+ }
+}
+
+say @words.elems;
diff --git a/challenge-307/arne-sommer/raku/check-order b/challenge-307/arne-sommer/raku/check-order
new file mode 100755
index 0000000000..7cdcfc635f
--- /dev/null
+++ b/challenge-307/arne-sommer/raku/check-order
@@ -0,0 +1,23 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@ints where @ints.elems >= 2 && all(@ints) ~~ Int,
+ :v(:$verbose));
+
+my @ordered = @ints.sort;
+
+my @indices;
+
+for ^@ints.elems -> $index
+{
+ if @ints[$index] == @ordered[$index]
+ {
+ say ": Index $index: @ints[$index] == @ordered[$index] *" if $verbose;
+ }
+ else
+ {
+ @indices.push: $index;
+ say ": Index $index: @ints[$index] != @ordered[$index]" if $verbose;
+ }
+}
+
+say "({ @indices.join(", ") })";
diff --git a/challenge-307/arne-sommer/raku/find-anagrams b/challenge-307/arne-sommer/raku/find-anagrams
new file mode 100755
index 0000000000..7e36e25b6e
--- /dev/null
+++ b/challenge-307/arne-sommer/raku/find-anagrams
@@ -0,0 +1,30 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@words where @words.elems > 0, :v(:$verbose));
+
+my %canonical;
+
+@words.map({ %canonical{$_} = $_.lc.comb.sort.join });
+
+@words.map({ say ": Canonical of: $_ -> %canonical{$_}" }) if $verbose;
+
+my $index = 0;
+
+loop
+{
+ last if @words.elems == 0;
+ last if @words.end == $index;
+
+ if %canonical{@words[$index + 0]} eq %canonical{@words[$index + 1]}
+ {
+ print ": Dropping @words[$index + 0] (index $index)" if $verbose;
+ @words.splice($index,1);
+ say " -> ({ @words.join(",") })" if $verbose;
+ }
+ else
+ {
+ $index++;
+ }
+}
+
+say @words.elems;
diff --git a/challenge-307/athanasius/perl/ch-1.pl b/challenge-307/athanasius/perl/ch-1.pl
new file mode 100644
index 0000000000..0f1659fa96
--- /dev/null
+++ b/challenge-307/athanasius/perl/ch-1.pl
@@ -0,0 +1,172 @@
+#!perl
+
+################################################################################
+=comment
+
+Perl Weekly Challenge 307
+=========================
+
+TASK #1
+-------
+*Check Order*
+
+Submitted by: Mohammad Sajid Anwar
+
+You are given an array of integers, @ints.
+
+Write a script to re-arrange the given array in an increasing order and return
+the indices where it differs from the original array.
+
+Example 1
+
+ Input: @ints = (5, 2, 4, 3, 1)
+ Output: (0, 2, 3, 4)
+
+ Before: (5, 2, 4, 3, 1)
+ After : (1, 2, 3, 4, 5)
+
+ Difference at indices: (0, 2, 3, 4)
+
+Example 2
+
+ Input: @ints = (1, 2, 1, 1, 3)
+ Output: (1, 3)
+
+ Before: (1, 2, 1, 1, 3)
+ After : (1, 1, 1, 2, 3)
+
+ Difference at indices: (1, 3)
+
+Example 3
+
+ Input: @ints = (3, 1, 3, 2, 3)
+ Output: (0, 1, 3)
+
+ Before: (3, 1, 3, 2, 3)
+ After : (1, 2, 3, 3, 3)
+
+ Difference at indices: (0, 1, 3)
+
+=cut
+################################################################################
+
+#--------------------------------------#
+# Copyright © 2025 PerlMonk Athanasius #
+#--------------------------------------#
+
+#===============================================================================
+=comment
+
+Interface
+---------
+1. If no command-line arguments are given, the test suite is run. Otherwise:
+2. A non-empty list of integers is entered on the command-line.
+
+=cut
+#===============================================================================
+
+use v5.32; # Enables strictures
+use warnings;
+use Const::Fast;
+use Regexp::Common qw( number );
+use Test::More;
+
+const my $USAGE => <<END;
+Usage:
+ perl $0 [<ints> ...]
+ perl $0
+
+ [<ints> ...] A non-empty list of integers
+END
+
+#-------------------------------------------------------------------------------
+BEGIN
+#-------------------------------------------------------------------------------
+{
+ $| = 1;
+ print "\nChallenge 307, Task #1: Check Order (Perl)\n\n";
+}
+
+#===============================================================================
+MAIN:
+#===============================================================================
+{
+ if (scalar @ARGV == 0)
+ {
+ run_tests();
+ }
+ else
+ {
+ my @ints = @ARGV;
+
+ / ^ $RE{num}{int} $ /x or error( qq["$_" is not a valid integer] )
+ for @ints;
+
+ printf "Input: \@ints = (%s)\n", join ', ', @ints;
+
+ my $indices = find_diff_indices( \@ints );
+
+ printf "Output: (%s)\n", join ', ', @$indices;
+ }
+}
+
+#-------------------------------------------------------------------------------
+sub find_diff_indices
+#-------------------------------------------------------------------------------
+{
+ my ($ints) = @_;
+ my @sorted = sort { $a <=> $b } @$ints;
+ my @indices;
+
+ for my $i (0 .. $#$ints)
+ {
+ push @indices, $i unless $ints->[ $i ] == $sorted[ $i ];
+ }
+
+ return \@indices;
+}