aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-09-07 20:16:05 +0100
committerGitHub <noreply@github.com>2024-09-07 20:16:05 +0100
commitcd83f19adb034cfbabd60dddbe3c55b10f6c30d8 (patch)
tree77a5ac3be4fa177c5eaa32b8de806b854b41f2fb
parent2307bd24b68d96ba4ef3b2d541860c841d43804c (diff)
parentf784bb5ee8f95134c6dbd9a85511c5f272fdfccb (diff)
downloadperlweeklychallenge-club-cd83f19adb034cfbabd60dddbe3c55b10f6c30d8.tar.gz
perlweeklychallenge-club-cd83f19adb034cfbabd60dddbe3c55b10f6c30d8.tar.bz2
perlweeklychallenge-club-cd83f19adb034cfbabd60dddbe3c55b10f6c30d8.zip
Merge pull request #10786 from arnesom/branch-for-challenge-285
Arne Sommer
-rw-r--r--challenge-285/arne-sommer/blog.txt1
-rwxr-xr-xchallenge-285/arne-sommer/raku/ch-1.raku25
-rwxr-xr-xchallenge-285/arne-sommer/raku/ch-2.raku68
-rwxr-xr-xchallenge-285/arne-sommer/raku/making-change55
-rwxr-xr-xchallenge-285/arne-sommer/raku/making-change-last68
-rwxr-xr-xchallenge-285/arne-sommer/raku/no-connection25
6 files changed, 242 insertions, 0 deletions
diff --git a/challenge-285/arne-sommer/blog.txt b/challenge-285/arne-sommer/blog.txt
new file mode 100644
index 0000000000..563ffcf0db
--- /dev/null
+++ b/challenge-285/arne-sommer/blog.txt
@@ -0,0 +1 @@
+https://raku-musings.com/no-connection.html
diff --git a/challenge-285/arne-sommer/raku/ch-1.raku b/challenge-285/arne-sommer/raku/ch-1.raku
new file mode 100755
index 0000000000..d55e3a25d0
--- /dev/null
+++ b/challenge-285/arne-sommer/raku/ch-1.raku
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@routes where @routes.elems > 0, :v(:$verbose));
+
+my %outgoing;
+
+for @routes -> $route
+{
+ my ($from, $to) = $route.split(/\s+/);
+
+ say ": Route from '$from' to '$to'" if $verbose;
+
+ %outgoing{$from}++;
+ %outgoing{$to} = 0 unless defined %outgoing{$to};
+}
+
+if $verbose
+{
+ for sort keys %outgoing -> $key
+ {
+ say ": '$key' has %outgoing{$key} outgoing connectiuon(s)" if $verbose;
+ }
+}
+
+say %outgoing.grep( *.value == 0 )>>.key.join(", ");
diff --git a/challenge-285/arne-sommer/raku/ch-2.raku b/challenge-285/arne-sommer/raku/ch-2.raku
new file mode 100755
index 0000000000..d99bfd95c5
--- /dev/null
+++ b/challenge-285/arne-sommer/raku/ch-2.raku
@@ -0,0 +1,68 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $amount, :v(:$verbose));
+
+my %value;
+
+%value<penny> = 1;
+%value<nickel> = 5;
+%value<dime> = 10;
+%value<quarter> = 25;
+%value<half-dollar> = 50;
+
+my $ok = 0;
+
+for 0 .. $amount -> $penny
+{
+ my $sum-p = $penny * %value<penny>;
+
+ for 0 .. $amount -> $nickel
+ {
+ my $sum-pn = $sum-p + $nickel * %value<nickel>;
+
+ last if $sum-pn > $amount;
+
+ for 0 .. $amount -> $dime
+ {
+ my $sum-pnd = $sum-pn + $dime * %value<dime>;
+
+ last if $sum-pnd > $amount;
+
+ for 0 .. $amount -> $quarter
+ {
+ my $sum-pndq = $sum-pnd + $quarter * %value<quarter>;
+
+ last if $sum-pndq > $amount;
+
+ for 0 .. $amount -> $half-dollar
+ {
+ my $sum = $sum-pndq + $half-dollar * %value<half-dollar>;
+
+ last if $sum > $amount;
+
+ if $sum == $amount
+ {
+ $ok++;
+ say ": " ~
+ (
+ prettyish($penny, 'P'),
+ prettyish($nickel, 'N'),
+ prettyish($dime, 'D'),
+ prettyish($quarter, 'Q'),
+ prettyish($half-dollar, 'HD')
+ ).grep( *.defined ).join(" + ") if $verbose;
+ }
+ }
+ }
+ }
+ }
+}
+
+sub prettyish ($value, $letter)
+{
+ return unless $value;
+ return $letter if $value == 1;
+ return "$value$letter";
+}
+
+say $ok;
diff --git a/challenge-285/arne-sommer/raku/making-change b/challenge-285/arne-sommer/raku/making-change
new file mode 100755
index 0000000000..927ba48fdb
--- /dev/null
+++ b/challenge-285/arne-sommer/raku/making-change
@@ -0,0 +1,55 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $amount, :v(:$verbose));
+
+my %value;
+
+%value<penny> = 1;
+%value<nickel> = 5;
+%value<dime> = 10;
+%value<quarter> = 25;
+%value<half-dollar> = 50;
+
+my $ok = 0;
+
+for 0 .. $amount -> $penny
+{
+ for 0 .. $amount div %value<nickel> -> $nickel
+ {
+ for 0 .. $amount div %value<dime> -> $dime
+ {
+ for 0 .. $amount div %value<quarter> -> $quarter
+ {
+ for 0 .. $amount div %value<half-dollar> -> $half-dollar
+ {
+ if $amount ==
+ $penny +
+ $nickel * %value<nickel> +
+ $dime * %value<dime> +
+ $quarter * %value<quarter> +
+ $half-dollar * %value<half-dollar>
+ {
+ $ok++;
+ say ": " ~
+ (
+ prettyish($penny, 'P'),
+ prettyish($nickel, 'N'),
+ prettyish($dime, 'D'),
+ prettyish($quarter, 'Q'),
+ prettyish($half-dollar, 'HD')
+ ).grep( *.defined ).join(" + ") if $verbose;
+ }
+ }
+ }
+ }
+ }
+}
+
+sub prettyish ($value, $letter)
+{
+ return unless $value;
+ return $letter if $value == 1;
+ return "$value$letter";
+}
+
+say $ok;
diff --git a/challenge-285/arne-sommer/raku/making-change-last b/challenge-285/arne-sommer/raku/making-change-last
new file mode 100755
index 0000000000..d99bfd95c5
--- /dev/null
+++ b/challenge-285/arne-sommer/raku/making-change-last
@@ -0,0 +1,68 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (UInt $amount, :v(:$verbose));
+
+my %value;
+
+%value<penny> = 1;
+%value<nickel> = 5;
+%value<dime> = 10;
+%value<quarter> = 25;
+%value<half-dollar> = 50;
+
+my $ok = 0;
+
+for 0 .. $amount -> $penny
+{
+ my $sum-p = $penny * %value<penny>;
+
+ for 0 .. $amount -> $nickel
+ {
+ my $sum-pn = $sum-p + $nickel * %value<nickel>;
+
+ last if $sum-pn > $amount;
+
+ for 0 .. $amount -> $dime
+ {
+ my $sum-pnd = $sum-pn + $dime * %value<dime>;
+
+ last if $sum-pnd > $amount;
+
+ for 0 .. $amount -> $quarter
+ {
+ my $sum-pndq = $sum-pnd + $quarter * %value<quarter>;
+
+ last if $sum-pndq > $amount;
+
+ for 0 .. $amount -> $half-dollar
+ {
+ my $sum = $sum-pndq + $half-dollar * %value<half-dollar>;
+
+ last if $sum > $amount;
+
+ if $sum == $amount
+ {
+ $ok++;
+ say ": " ~
+ (
+ prettyish($penny, 'P'),
+ prettyish($nickel, 'N'),
+ prettyish($dime, 'D'),
+ prettyish($quarter, 'Q'),
+ prettyish($half-dollar, 'HD')
+ ).grep( *.defined ).join(" + ") if $verbose;
+ }
+ }
+ }
+ }
+ }
+}
+
+sub prettyish ($value, $letter)
+{
+ return unless $value;
+ return $letter if $value == 1;
+ return "$value$letter";
+}
+
+say $ok;
diff --git a/challenge-285/arne-sommer/raku/no-connection b/challenge-285/arne-sommer/raku/no-connection
new file mode 100755
index 0000000000..d55e3a25d0
--- /dev/null
+++ b/challenge-285/arne-sommer/raku/no-connection
@@ -0,0 +1,25 @@
+#! /usr/bin/env raku
+
+unit sub MAIN (*@routes where @routes.elems > 0, :v(:$verbose));
+
+my %outgoing;
+
+for @routes -> $route
+{
+ my ($from, $to) = $route.split(/\s+/);
+
+ say ": Route from '$from' to '$to'" if $verbose;
+
+ %outgoing{$from}++;
+ %outgoing{$to} = 0 unless defined %outgoing{$to};
+}
+
+if $verbose
+{
+ for sort keys %outgoing -> $key
+ {
+ say ": '$key' has %outgoing{$key} outgoing connectiuon(s)" if $verbose;
+ }
+}
+
+say %outgoing.grep( *.value == 0 )>>.key.join(", ");