aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Ferrone <zapwai@gmail.com>2024-02-26 10:10:41 -0500
committerDavid Ferrone <zapwai@gmail.com>2024-02-26 10:10:41 -0500
commit66a050375c085ab32267a2c15bcb359490f9e646 (patch)
treef53c22a86859bb1925419efc7f52c622161672fe
parent4416b8cd33659c6d380e3ea2c5b3e21e4a861a99 (diff)
downloadperlweeklychallenge-club-66a050375c085ab32267a2c15bcb359490f9e646.tar.gz
perlweeklychallenge-club-66a050375c085ab32267a2c15bcb359490f9e646.tar.bz2
perlweeklychallenge-club-66a050375c085ab32267a2c15bcb359490f9e646.zip
Week 258
-rw-r--r--challenge-258/zapwai/c/ch-1.c30
-rw-r--r--challenge-258/zapwai/c/ch-2.c41
-rw-r--r--challenge-258/zapwai/javascript/ch-1.js17
-rw-r--r--challenge-258/zapwai/javascript/ch-2.js23
-rw-r--r--challenge-258/zapwai/perl/ch-1.pl22
-rw-r--r--challenge-258/zapwai/perl/ch-2.pl24
-rw-r--r--challenge-258/zapwai/python/ch-1.py14
-rw-r--r--challenge-258/zapwai/python/ch-2.py22
-rw-r--r--challenge-258/zapwai/rust/ch-1.rs19
-rw-r--r--challenge-258/zapwai/rust/ch-2.rs30
10 files changed, 242 insertions, 0 deletions
diff --git a/challenge-258/zapwai/c/ch-1.c b/challenge-258/zapwai/c/ch-1.c
new file mode 100644
index 0000000000..65d6813c07
--- /dev/null
+++ b/challenge-258/zapwai/c/ch-1.c
@@ -0,0 +1,30 @@
+#include <stdio.h>
+#include <string.h>
+
+void proc(int intslen, int ints[]) {
+ printf("Input: { ");
+ for (int i = 0; i < intslen; i++) {
+ printf("%d ", ints[i]);
+ }
+ printf("}\n");
+ int cnt = 0;
+ for (int i = 0; i < intslen; i++) {
+ char word[50];
+ sprintf(word, "%d", ints[i]);
+ if (strlen(word) % 2== 0) {
+ cnt++;
+ }
+ }
+ printf("Output: %d\n", cnt);
+}
+
+int main() {
+ int ints[] = {10, 1, 111, 24, 1000};
+ proc(sizeof(ints)/sizeof(int), ints);
+ int ints2[] = {111, 1, 11111};
+ proc(sizeof(ints2)/sizeof(int), ints2);
+ int ints3[] = {2, 8, 1024, 256};
+ proc(sizeof(ints3)/sizeof(int), ints3);
+
+}
+
diff --git a/challenge-258/zapwai/c/ch-2.c b/challenge-258/zapwai/c/ch-2.c
new file mode 100644
index 0000000000..697bb706a6
--- /dev/null
+++ b/challenge-258/zapwai/c/ch-2.c
@@ -0,0 +1,41 @@
+#include <stdio.h>
+
+int binary_tally(int num) {
+ int tally = 0;
+ int bitlen = sizeof(num) * 8;
+ for (int i = bitlen - 1; i >= 0; i--) {
+ if (num & (1 << i))
+ tally++;
+ }
+ return tally;
+}
+
+void proc(int k, int intlen, int ints[]) {
+ printf("Input: { ");
+ for (int i = 0; i < intlen; i++) {
+ printf("%d ", ints[i]);
+ }
+ printf("}, k = %d\n", k);
+
+ int sum = 0;
+ for (int i = 0; i < intlen; i++) {
+ int tally = binary_tally(i);
+ if (tally == k) {
+ sum += ints[i];
+ }
+ }
+
+ printf("Output: %d\n", sum);
+}
+
+int main() {
+ int ints1[] = {2, 5, 9, 11, 3}; int k1 = 1;
+ int ints2[] = {2, 5, 9, 11, 3}; int k2 = 2;
+ int ints3[] = {2, 5, 9, 11, 3}; int k3 = 0;
+ int l1 = sizeof(ints1) / sizeof(int);
+ int l2 = sizeof(ints2) / sizeof(int);
+ int l3 = sizeof(ints3) / sizeof(int);
+ proc(k1, l1, ints1);
+ proc(k2, l2, ints2);
+ proc(k3, l3, ints3);
+}
diff --git a/challenge-258/zapwai/javascript/ch-1.js b/challenge-258/zapwai/javascript/ch-1.js
new file mode 100644
index 0000000000..b9bbd3ecb3
--- /dev/null
+++ b/challenge-258/zapwai/javascript/ch-1.js
@@ -0,0 +1,17 @@
+let ints = [10, 1, 111, 24, 1000];
+let ints2 = [111, 1, 11111];
+let ints3 = [2, 8, 1024, 256];
+proc(ints);
+proc(ints2);
+proc(ints3);
+
+function proc(ints) {
+ console.log("Input:", ints);
+ let cnt = 0;
+ for (let num of ints) {
+ if (num.toString().length % 2 == 0) {
+ cnt++;
+ }
+ }
+ console.log("Output:", cnt);
+}
diff --git a/challenge-258/zapwai/javascript/ch-2.js b/challenge-258/zapwai/javascript/ch-2.js
new file mode 100644
index 0000000000..97e37a8340
--- /dev/null
+++ b/challenge-258/zapwai/javascript/ch-2.js
@@ -0,0 +1,23 @@
+let ints1 = [2, 5, 9, 11, 3]; let k1 = 1;
+let ints2 = [2, 5, 9, 11, 3]; let k2 = 2;
+let ints3 = [2, 5, 9, 11, 3]; let k3 = 0;
+proc(k1, ints1);
+proc(k2, ints2);
+proc(k3, ints3);
+function proc(k, ints) {
+ console.log("Input:", ints, "k:", k);
+ let sum = 0;
+ for (let i in ints) {
+ let tally = 0;
+ let x = Number(i).toString(2);
+ for (let c of x.split("")) {
+ if (c == '1') {
+ tally += 1;
+ }
+ }
+ if (tally == k) {
+ sum += ints[i];
+ }
+ }
+ console.log("Output:", sum);
+}
diff --git a/challenge-258/zapwai/perl/ch-1.pl b/challenge-258/zapwai/perl/ch-1.pl
new file mode 100644
index 0000000000..ad0c288489
--- /dev/null
+++ b/challenge-258/zapwai/perl/ch-1.pl
@@ -0,0 +1,22 @@
+use v5.36;
+
+my @ints = (10, 1, 111, 24, 1000);
+my @ints2 = (111, 1, 11111);
+my @ints3 = (2, 8, 1024, 256);
+
+proc(@ints);
+proc(@ints2);
+proc(@ints3);
+
+sub proc (@ints) {
+ say "Input: (@ints)";
+ say "Output: ", cnt_even_lens(@ints);
+}
+
+sub cnt_even_lens(@ints) {
+ my $cnt = 0;
+ foreach my $item (@ints) {
+ $cnt++ if (length($item) % 2 == 0);
+ }
+ return $cnt;
+}
diff --git a/challenge-258/zapwai/perl/ch-2.pl b/challenge-258/zapwai/perl/ch-2.pl
new file mode 100644
index 0000000000..95c03ab65e
--- /dev/null
+++ b/challenge-258/zapwai/perl/ch-2.pl
@@ -0,0 +1,24 @@
+use v5.36;
+use List::Util qw( sum );
+
+my @ints1 = (2, 5, 9, 11, 3); my $k1 = 1;
+my @ints2 = (2, 5, 9, 11, 3); my $k2 = 2;
+my @ints3 = (2, 5, 9, 11, 3); my $k3 = 0;
+
+proc($k1, @ints1);
+proc($k2, @ints2);
+proc($k3, @ints3);
+
+sub proc($k, @ints) {
+ say "Input: \@ints = (@ints), \$k = $k";
+ my $sum = 0;
+ my @ind;
+ for my $i (0 .. $#ints) {
+ my $s = sprintf "%b", $i;
+ my @bit = split "", $s;
+ my $tally = sum( grep { 1 } @bit );
+ push @ind, $i if ($tally == $k);
+ }
+ $sum += $ints[$_] foreach (@ind);
+ say "Output: $sum";
+}
diff --git a/challenge-258/zapwai/python/ch-1.py b/challenge-258/zapwai/python/ch-1.py
new file mode 100644
index 0000000000..e6c8785b3a
--- /dev/null
+++ b/challenge-258/zapwai/python/ch-1.py
@@ -0,0 +1,14 @@
+def proc(ints):
+ cnt = 0;
+ for i in ints:
+ if len(str(i)) % 2 == 0:
+ cnt += 1
+ print("Input:", ints)
+ print("Output:", cnt)
+
+ints = [10, 1, 111, 24, 1000]
+ints2 = [111, 1, 11111]
+ints3 = [2, 8, 1024, 256]
+proc(ints)
+proc(ints2)
+proc(ints3)
diff --git a/challenge-258/zapwai/python/ch-2.py b/challenge-258/zapwai/python/ch-2.py
new file mode 100644
index 0000000000..d1fb04f3d8
--- /dev/null
+++ b/challenge-258/zapwai/python/ch-2.py
@@ -0,0 +1,22 @@
+def proc(k, ints):
+ print("Input: ints:", ints, "k:", k)
+ sum = 0
+ ind = []
+ for i in range(len(ints)):
+ tally = 0;
+ s = format(f'{i:b}')
+ for c in list(s):
+ if c == "1":
+ tally += 1
+ if tally == k:
+ ind.append(i)
+ for i in ind:
+ sum += ints[i]
+ print("Output:",sum)
+ints1 = [2, 5, 9, 11, 3]; k1 = 1
+ints2 = [2, 5, 9, 11, 3]; k2 = 2
+ints3 = [2, 5, 9, 11, 3]; k3 = 0
+
+proc(k1, ints1)
+proc(k2, ints2)
+proc(k3, ints3)
diff --git a/challenge-258/zapwai/rust/ch-1.rs b/challenge-258/zapwai/rust/ch-1.rs
new file mode 100644
index 0000000000..507db0ceb4
--- /dev/null
+++ b/challenge-258/zapwai/rust/ch-1.rs
@@ -0,0 +1,19 @@
+fn main() {
+ let ints = vec![10, 1, 111, 24, 1000];
+ let ints2 = vec![111, 1, 11111];
+ let ints3 = vec![2, 8, 1024, 256];
+ proc(ints);
+ proc(ints2);
+ proc(ints3);
+}
+
+fn proc(ints : Vec<i32>) {
+ let mut cnt = 0;
+ for i in &ints {
+ if i.to_string().len() % 2 == 0 {
+ cnt += 1;
+ }
+ }
+ println!("Input: {:?}", ints);
+ println!("Output: {cnt}");
+}
diff --git a/challenge-258/zapwai/rust/ch-2.rs b/challenge-258/zapwai/rust/ch-2.rs
new file mode 100644
index 0000000000..a4519e44a6
--- /dev/null
+++ b/challenge-258/zapwai/rust/ch-2.rs
@@ -0,0 +1,30 @@
+fn proc(k : i32, ints : Vec<i32>) {
+ println!("Input: {:?}, k = {k}", ints);
+ let mut sum = 0;
+ let mut ind = Vec::new();
+ for i in 0 .. ints.len() {
+ let mut tally = 0;
+ let s = format!("{:b}", i);
+ for c in s.to_string().chars() {
+ if c == '1' {
+ tally += 1;
+ }
+ }
+ if tally == k {
+ ind.push(i);
+ }
+ }
+ for i in ind {
+ sum += ints[i];
+ }
+ println!("Output: {sum}");
+}
+
+fn main() {
+ let ints1 = vec![2, 5, 9, 11, 3]; let k1 = 1;
+ let ints2 = vec![2, 5, 9, 11, 3]; let k2 = 2;
+ let ints3 = vec![2, 5, 9, 11, 3]; let k3 = 0;
+ proc(k1, ints1);
+ proc(k2, ints2);
+ proc(k3, ints3);
+}