aboutsummaryrefslogtreecommitdiff
path: root/challenge-285
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-09-02 13:01:40 +0100
committerGitHub <noreply@github.com>2024-09-02 13:01:40 +0100
commit91304dfdc8fe93b9616a8c8292386c21260937a7 (patch)
tree146fbb460f90974b0e1a519578734053a2273286 /challenge-285
parent15aabf08869eba6262eb088c845e27852440ecfe (diff)
parent34e50de41749881c7cf0ee5e7c7020e2cbc855d1 (diff)
downloadperlweeklychallenge-club-91304dfdc8fe93b9616a8c8292386c21260937a7.tar.gz
perlweeklychallenge-club-91304dfdc8fe93b9616a8c8292386c21260937a7.tar.bz2
perlweeklychallenge-club-91304dfdc8fe93b9616a8c8292386c21260937a7.zip
Merge pull request #10757 from deadmarshal/TWC285
Twc285
Diffstat (limited to 'challenge-285')
-rw-r--r--challenge-285/deadmarshal/blog.txt1
-rw-r--r--challenge-285/deadmarshal/java/Ch1.java23
-rw-r--r--challenge-285/deadmarshal/java/Ch2.java16
-rw-r--r--challenge-285/deadmarshal/modula-3/ch1/src/Ch1.m335
-rw-r--r--challenge-285/deadmarshal/modula-3/ch1/src/m3makefile5
-rw-r--r--challenge-285/deadmarshal/modula-3/ch2/src/Ch2.m322
-rw-r--r--challenge-285/deadmarshal/modula-3/ch2/src/m3makefile5
-rw-r--r--challenge-285/deadmarshal/perl/ch-1.pl19
-rw-r--r--challenge-285/deadmarshal/perl/ch-2.pl21
9 files changed, 147 insertions, 0 deletions
diff --git a/challenge-285/deadmarshal/blog.txt b/challenge-285/deadmarshal/blog.txt
new file mode 100644
index 0000000000..c16d550280
--- /dev/null
+++ b/challenge-285/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2024/09/twc285.html
diff --git a/challenge-285/deadmarshal/java/Ch1.java b/challenge-285/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..8b8f8229f4
--- /dev/null
+++ b/challenge-285/deadmarshal/java/Ch1.java
@@ -0,0 +1,23 @@
+import java.util.HashMap;
+import java.util.Map;
+
+public class Ch1 {
+ public static void main(String[] args) {
+ String[][] arr1 = {{"B", "C"}, {"D", "B"}, {"C", "A"}};
+ String[][] arr2 = {{"A", "Z"}};
+ System.out.println(no_connection(arr1));
+ System.out.println(no_connection(arr2));
+ }
+
+ private static String no_connection(String[][] arr) {
+ Map<String, Integer> destinations = new HashMap<>(),
+ sources = new HashMap<>();
+ for (String[] a : arr) {
+ sources.put(a[0], 1);
+ destinations.put(a[1], 1);
+ }
+ for (String d : destinations.keySet())
+ if (!sources.containsKey(d)) return d;
+ return "";
+ }
+}
diff --git a/challenge-285/deadmarshal/java/Ch2.java b/challenge-285/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..2763ddf32f
--- /dev/null
+++ b/challenge-285/deadmarshal/java/Ch2.java
@@ -0,0 +1,16 @@
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(making_change(9));
+ System.out.println(making_change(15));
+ System.out.println(making_change(100));
+ }
+
+ private static int making_change(int amount) {
+ int[] coins = {1, 5, 10, 25, 50};
+ int[] dp = new int[amount+1];
+ dp[0] = 1;
+ for (int coin : coins)
+ for (int i = coin; i <= amount; ++i) dp[i] += dp[i - coin];
+ return dp[amount];
+ }
+}
diff --git a/challenge-285/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-285/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..0cf0ee508a
--- /dev/null
+++ b/challenge-285/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,35 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT SIO,TextIntTbl;
+
+VAR
+ A1 := ARRAY[0..2],[0..1] OF TEXT{
+ ARRAY[0..1] OF TEXT{"B","C"},
+ ARRAY[0..1] OF TEXT{"D","B"},
+ ARRAY[0..1] OF TEXT{"C","A"}};
+ A2 := ARRAY[0..0],[0..1] OF TEXT{
+ ARRAY OF TEXT{"A","Z"}};
+
+PROCEDURE NoConnection(VAR A:ARRAY OF ARRAY OF TEXT):TEXT =
+ VAR
+ Destinations,Sources := NEW(TextIntTbl.Default).init(NUMBER(A));
+ It:TextIntTbl.Iterator;
+ K:TEXT := "";
+ V:INTEGER;
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO
+ EVAL Sources.put(A[I,0],1);
+ EVAL Destinations.put(A[I,1],1);
+ END;
+ It := Destinations.iterate();
+ WHILE It.next(K,V) DO
+ IF Destinations.get(K,V) THEN RETURN K END
+ END;
+ RETURN ""
+ END NoConnection;
+
+BEGIN
+ SIO.PutText(NoConnection(A1) & "\n");
+ SIO.PutText(NoConnection(A2) & "\n")
+END Ch1.
+
diff --git a/challenge-285/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-285/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..9f66e4a51f
--- /dev/null
+++ b/challenge-285/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-285/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-285/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..9d1daec876
--- /dev/null
+++ b/challenge-285/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,22 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO;
+
+PROCEDURE MakingChange(READONLY A:CARDINAL):CARDINAL =
+ VAR
+ Coins:ARRAY[0..4] OF CARDINAL := ARRAY[0..4] OF CARDINAL{1,5,10,25,50};
+ DP:REF ARRAY OF CARDINAL := NEW(REF ARRAY OF CARDINAL,A+1);
+ BEGIN
+ DP[0] := 1;
+ FOR I := FIRST(Coins) TO LAST(Coins) DO
+ FOR J := Coins[I] TO A DO INC(DP[J],DP[J-Coins[I]]) END
+ END;
+ RETURN DP[A]
+ END MakingChange;
+
+BEGIN
+ SIO.PutInt(MakingChange(9)); SIO.Nl();
+ SIO.PutInt(MakingChange(15)); SIO.Nl();
+ SIO.PutInt(MakingChange(100)); SIO.Nl()
+END Ch2.
+
diff --git a/challenge-285/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-285/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..798c627ef3
--- /dev/null
+++ b/challenge-285/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("ch2")
+
diff --git a/challenge-285/deadmarshal/perl/ch-1.pl b/challenge-285/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..959064cc61
--- /dev/null
+++ b/challenge-285/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,19 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub no_connection{
+ my ($arr) = @_;
+ my (%destinations,%sources);
+ foreach my $r(@{$arr}){
+ $sources{$r->[0]} = $destinations{$r->[1]} = 1;
+ }
+ foreach my $d(keys %destinations){
+ return $d unless exists $sources{$d}
+ }
+ ""
+}
+
+printf "%s\n",no_connection([["B","C"],["D","B"],["C","A"]]);
+printf "%s\n",no_connection([["A","Z"]]);
+
diff --git a/challenge-285/deadmarshal/perl/ch-2.pl b/challenge-285/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..74397ab8d8
--- /dev/null
+++ b/challenge-285/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,21 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+
+sub making_change{
+ my ($amount) = @_;
+ my @coins = (1,5,10,25,50);
+ my @dp = (0) x ($amount+1);
+ $dp[0] = 1;
+ foreach my $c(@coins){
+ foreach my $i($c..$amount) {
+ $dp[$i] += $dp[$i-$c]
+ }
+ }
+ $dp[$amount]
+}
+
+printf "%d\n",making_change(9);
+printf "%d\n",making_change(15);
+printf "%d\n",making_change(100);
+