aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordeadmarshal <adeadmarshal@gmail.com>2024-08-19 13:53:19 +0330
committerdeadmarshal <adeadmarshal@gmail.com>2024-08-19 13:53:19 +0330
commit2d8b7574604fe1f8cb5e03d0b2a6d0bce1d3b76e (patch)
treeb01ee6e33e1ce076989a38b05e2e9a74f865fdbe
parent77ecff551b5e341658ad156635933ddf47f5ef8e (diff)
downloadperlweeklychallenge-club-2d8b7574604fe1f8cb5e03d0b2a6d0bce1d3b76e.tar.gz
perlweeklychallenge-club-2d8b7574604fe1f8cb5e03d0b2a6d0bce1d3b76e.tar.bz2
perlweeklychallenge-club-2d8b7574604fe1f8cb5e03d0b2a6d0bce1d3b76e.zip
TWC283
-rw-r--r--challenge-283/deadmarshal/blog.txt1
-rw-r--r--challenge-283/deadmarshal/c/ch-1.c24
-rw-r--r--challenge-283/deadmarshal/c/ch-2.c20
-rw-r--r--challenge-283/deadmarshal/java/Ch1.java18
-rw-r--r--challenge-283/deadmarshal/java/Ch2.java16
-rw-r--r--challenge-283/deadmarshal/modula-3/ch1/src/Ch1.m327
-rw-r--r--challenge-283/deadmarshal/modula-3/ch1/src/m3makefile5
-rw-r--r--challenge-283/deadmarshal/modula-3/ch2/src/Ch2.m324
-rw-r--r--challenge-283/deadmarshal/modula-3/ch2/src/m3makefile6
-rw-r--r--challenge-283/deadmarshal/perl/ch-1.pl15
-rw-r--r--challenge-283/deadmarshal/perl/ch-2.pl13
-rw-r--r--challenge-283/deadmarshal/raku/ch-1.raku12
-rw-r--r--challenge-283/deadmarshal/raku/ch-2.raku10
-rw-r--r--challenge-283/deadmarshal/ruby/ch1.rb11
-rw-r--r--challenge-283/deadmarshal/ruby/ch2.rb12
15 files changed, 214 insertions, 0 deletions
diff --git a/challenge-283/deadmarshal/blog.txt b/challenge-283/deadmarshal/blog.txt
new file mode 100644
index 0000000000..35ee794cc2
--- /dev/null
+++ b/challenge-283/deadmarshal/blog.txt
@@ -0,0 +1 @@
+https://deadmarshal.blogspot.com/2024/08/twc283.html
diff --git a/challenge-283/deadmarshal/c/ch-1.c b/challenge-283/deadmarshal/c/ch-1.c
new file mode 100644
index 0000000000..a09166434c
--- /dev/null
+++ b/challenge-283/deadmarshal/c/ch-1.c
@@ -0,0 +1,24 @@
+#include<stdio.h>
+
+int unique_number(int *arr, size_t sz)
+{
+ int hash[10] = {0};
+ for(size_t i = 0; i < sz; ++i) hash[arr[i] % 10]++;
+ for(size_t i = 0; i < 10; ++i) if(hash[i] == 1) return i;
+ return -1;
+}
+
+int main(void)
+{
+ int arr1[] = {3,3,1};
+ int arr2[] = {3,2,4,2,4};
+ int arr3[] = {1};
+ int arr4[] = {4,3,1,1,1,4};
+ size_t sz1 = 3,sz2 = 5,sz3 = 1,sz4 = 6;
+ printf("%d\n",unique_number(arr1,sz1));
+ printf("%d\n",unique_number(arr2,sz2));
+ printf("%d\n",unique_number(arr3,sz3));
+ printf("%d\n",unique_number(arr4,sz4));
+ return 0;
+}
+
diff --git a/challenge-283/deadmarshal/c/ch-2.c b/challenge-283/deadmarshal/c/ch-2.c
new file mode 100644
index 0000000000..dcfcc2896c
--- /dev/null
+++ b/challenge-283/deadmarshal/c/ch-2.c
@@ -0,0 +1,20 @@
+#include<stdio.h>
+
+int digit_count_value(int *arr,size_t sz)
+{
+ int hash[10] = {0};
+ for(size_t i = 0; i < sz; ++i) hash[arr[i] % 10]++;
+ for(size_t i = 0; i < sz; ++i) if(hash[i] != arr[i]) return 0;
+ return 1;
+}
+
+int main(void)
+{
+ int arr1[] = {1,2,1,0};
+ int arr2[] = {0,3,0};
+ size_t sz1 = 4,sz2 = 3;
+ printf("%d\n",digit_count_value(arr1,sz1));
+ printf("%d\n",digit_count_value(arr2,sz2));
+ return 0;
+}
+
diff --git a/challenge-283/deadmarshal/java/Ch1.java b/challenge-283/deadmarshal/java/Ch1.java
new file mode 100644
index 0000000000..766e711f7f
--- /dev/null
+++ b/challenge-283/deadmarshal/java/Ch1.java
@@ -0,0 +1,18 @@
+import java.util.Arrays;
+
+public class Ch1 {
+ public static void main(String[] args) {
+ System.out.println(unique_number(new int[]{3, 3, 1}));
+ System.out.println(unique_number(new int[]{3, 2, 4, 2, 4}));
+ System.out.println(unique_number(new int[]{1}));
+ System.out.println(unique_number(new int[]{4, 3, 1, 1, 1, 4}));
+ }
+
+ private static int unique_number(int[] arr) {
+ int[] hash = new int[10];
+ Arrays.fill(hash, 0);
+ for (int i = 0; i < arr.length; ++i) hash[arr[i] % 10]++;
+ for (int i = 0; i < hash.length; ++i) if (hash[i] == 1) return i;
+ return -1;
+ }
+}
diff --git a/challenge-283/deadmarshal/java/Ch2.java b/challenge-283/deadmarshal/java/Ch2.java
new file mode 100644
index 0000000000..4abf63d278
--- /dev/null
+++ b/challenge-283/deadmarshal/java/Ch2.java
@@ -0,0 +1,16 @@
+import java.util.Arrays;
+
+public class Ch2 {
+ public static void main(String[] args) {
+ System.out.println(digit_count_value(new int[]{1, 2, 1, 0}));
+ System.out.println(digit_count_value(new int[]{0, 3, 0}));
+ }
+
+ private static boolean digit_count_value(int[] arr) {
+ int[] hash = new int[10];
+ Arrays.fill(hash, 0);
+ for (int i = 0; i < arr.length; ++i) hash[arr[i] % 10]++;
+ for (int i = 0; i < arr.length; ++i) if (hash[i] != arr[i]) return false;
+ return true;
+ }
+}
diff --git a/challenge-283/deadmarshal/modula-3/ch1/src/Ch1.m3 b/challenge-283/deadmarshal/modula-3/ch1/src/Ch1.m3
new file mode 100644
index 0000000000..1cd164af39
--- /dev/null
+++ b/challenge-283/deadmarshal/modula-3/ch1/src/Ch1.m3
@@ -0,0 +1,27 @@
+MODULE Ch1 EXPORTS Main;
+
+IMPORT SIO;
+
+VAR
+ A1 := ARRAY[0..2] OF CARDINAL{3,3,1};
+ A2 := ARRAY[0..4] OF CARDINAL{3,2,4,2,4};
+ A3 := ARRAY[0..0] OF CARDINAL{1};
+ A4 := ARRAY[0..5] OF CARDINAL{4,3,1,1,1,4};
+
+PROCEDURE UniqueNumber(VAR A:ARRAY OF CARDINAL):CARDINAL =
+ VAR
+ Hash:ARRAY[0..9] OF CARDINAL := ARRAY[0..9] OF CARDINAL{0,..};
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO INC(Hash[A[I] MOD 10]) END;
+ FOR I := FIRST(Hash) TO LAST(Hash) DO
+ IF Hash[I] = 1 THEN RETURN I END
+ END;
+ END UniqueNumber;
+
+BEGIN
+ SIO.PutInt(UniqueNumber(A1)); SIO.Nl();
+ SIO.PutInt(UniqueNumber(A2)); SIO.Nl();
+ SIO.PutInt(UniqueNumber(A3)); SIO.Nl();
+ SIO.PutInt(UniqueNumber(A4)); SIO.Nl()
+END Ch1.
+
diff --git a/challenge-283/deadmarshal/modula-3/ch1/src/m3makefile b/challenge-283/deadmarshal/modula-3/ch1/src/m3makefile
new file mode 100644
index 0000000000..9f66e4a51f
--- /dev/null
+++ b/challenge-283/deadmarshal/modula-3/ch1/src/m3makefile
@@ -0,0 +1,5 @@
+import("libm3")
+import("libsio")
+implementation("Ch1")
+program("ch1")
+
diff --git a/challenge-283/deadmarshal/modula-3/ch2/src/Ch2.m3 b/challenge-283/deadmarshal/modula-3/ch2/src/Ch2.m3
new file mode 100644
index 0000000000..4ad523093e
--- /dev/null
+++ b/challenge-283/deadmarshal/modula-3/ch2/src/Ch2.m3
@@ -0,0 +1,24 @@
+MODULE Ch2 EXPORTS Main;
+
+IMPORT SIO;
+
+VAR
+ A1:ARRAY[0..3] OF CARDINAL := ARRAY OF CARDINAL{1,2,1,0};
+ A2:ARRAY[0..2] OF CARDINAL := ARRAY OF CARDINAL{0,3,0};
+
+PROCEDURE DigitCountValue(VAR A:ARRAY OF CARDINAL):BOOLEAN =
+ VAR
+ Hash:ARRAY[0..9] OF CARDINAL := ARRAY[0..9] OF CARDINAL{0,..};
+ BEGIN
+ FOR I := FIRST(A) TO LAST(A) DO INC(Hash[A[I] MOD 10]) END;
+ FOR I := FIRST(A) TO LAST(A) DO
+ IF Hash[I] # A[I] THEN RETURN FALSE END
+ END;
+ RETURN TRUE
+ END DigitCountValue;
+
+BEGIN
+ SIO.PutBool(DigitCountValue(A1)); SIO.Nl();
+ SIO.PutBool(DigitCountValue(A2)); SIO.Nl()
+END Ch2.
+
diff --git a/challenge-283/deadmarshal/modula-3/ch2/src/m3makefile b/challenge-283/deadmarshal/modula-3/ch2/src/m3makefile
new file mode 100644
index 0000000000..cd51aa87ee
--- /dev/null
+++ b/challenge-283/deadmarshal/modula-3/ch2/src/m3makefile
@@ -0,0 +1,6 @@
+import("libm3")
+import("libsio")
+implementation("Ch2")
+program("ch2")
+
+
diff --git a/challenge-283/deadmarshal/perl/ch-1.pl b/challenge-283/deadmarshal/perl/ch-1.pl
new file mode 100644
index 0000000000..637609e11c
--- /dev/null
+++ b/challenge-283/deadmarshal/perl/ch-1.pl
@@ -0,0 +1,15 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::MoreUtils qw(singleton);
+
+sub unique_number{
+ my @arr = singleton @{$_[0]};
+ @arr == 1 ? $arr[0] : undef
+}
+
+printf "%d\n",unique_number([3,3,1]);
+printf "%d\n",unique_number([3,2,4,2,4]);
+printf "%d\n",unique_number([1]);
+printf "%d\n",unique_number([4,3,1,1,1,4]);
+
diff --git a/challenge-283/deadmarshal/perl/ch-2.pl b/challenge-283/deadmarshal/perl/ch-2.pl
new file mode 100644
index 0000000000..4888899815
--- /dev/null
+++ b/challenge-283/deadmarshal/perl/ch-2.pl
@@ -0,0 +1,13 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use List::MoreUtils qw(all frequency);
+
+sub digit_count_value{
+ my ($i,%h) = (0,frequency(@{$_[0]}));
+ all{($h{$i++} // 0) == $_} @{$_[0]}
+}
+
+printf "%d\n",digit_count_value([1,2,1,0]);
+printf "%d\n",digit_count_value([0,3,0]);
+
diff --git a/challenge-283/deadmarshal/raku/ch-1.raku b/challenge-283/deadmarshal/raku/ch-1.raku
new file mode 100644
index 0000000000..261efae976
--- /dev/null
+++ b/challenge-283/deadmarshal/raku/ch-1.raku
@@ -0,0 +1,12 @@
+#!/usr/bin/env raku
+
+sub unique-number(@arr)
+{
+ @arr (-) @arr.repeated
+}
+
+say unique-number([3,3,1]);
+say unique-number([3,2,4,2,4]);
+say unique-number([1]);
+say unique-number([4,3,1,1,1,4]);
+
diff --git a/challenge-283/deadmarshal/raku/ch-2.raku b/challenge-283/deadmarshal/raku/ch-2.raku
new file mode 100644
index 0000000000..b26f52e258
--- /dev/null
+++ b/challenge-283/deadmarshal/raku/ch-2.raku
@@ -0,0 +1,10 @@
+#!/usr/bin/env raku
+
+sub digit-count-value(@arr)
+{
+ @arr.pairs.Bag eqv @arr.Bag
+}
+
+say digit-count-value([1,2,1,0]);
+say digit-count-value([0,3,0]);
+
diff --git a/challenge-283/deadmarshal/ruby/ch1.rb b/challenge-283/deadmarshal/ruby/ch1.rb
new file mode 100644
index 0000000000..d8b2474b21
--- /dev/null
+++ b/challenge-283/deadmarshal/ruby/ch1.rb
@@ -0,0 +1,11 @@
+#!/usr/bin/env ruby
+
+def unique_number(arr)
+ arr.uniq.find{|e| arr.count(e) == 1}
+end
+
+puts unique_number([3,3,1])
+puts unique_number([3,2,4,2,4])
+puts unique_number([1])
+puts unique_number([4,3,1,1,1,4])
+
diff --git a/challenge-283/deadmarshal/ruby/ch2.rb b/challenge-283/deadmarshal/ruby/ch2.rb
new file mode 100644
index 0000000000..4d711245f8
--- /dev/null
+++ b/challenge-283/deadmarshal/ruby/ch2.rb
@@ -0,0 +1,12 @@
+#!/usr/bin/env ruby
+
+def digit_count_value(arr)
+ h = Hash.new(0)
+ arr.each{|e| h[e] += 1}
+ i = 0
+ arr.all?{|e| h[i] == e && i += 1}
+end
+
+puts digit_count_value([1,2,1,0])
+puts digit_count_value([0,3,0])
+