aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-263/zapwai/c/ch-1.c50
-rw-r--r--challenge-263/zapwai/c/ch-2.c65
-rw-r--r--challenge-263/zapwai/javascript/ch-1.js15
-rw-r--r--challenge-263/zapwai/javascript/ch-2.js39
-rw-r--r--challenge-263/zapwai/perl/ch-1.pl14
-rw-r--r--challenge-263/zapwai/perl/ch-2.pl40
-rw-r--r--challenge-263/zapwai/python/ch-1.py15
-rw-r--r--challenge-263/zapwai/python/ch-2.py31
-rw-r--r--challenge-263/zapwai/rust/ch-1.rs20
-rw-r--r--challenge-263/zapwai/rust/ch-2.rs51
10 files changed, 340 insertions, 0 deletions
diff --git a/challenge-263/zapwai/c/ch-1.c b/challenge-263/zapwai/c/ch-1.c
new file mode 100644
index 0000000000..20e93d647a
--- /dev/null
+++ b/challenge-263/zapwai/c/ch-1.c
@@ -0,0 +1,50 @@
+#include <stdio.h>
+#define MAX 300
+
+void sort_me(int* ints, int intlen) {
+ int cnt = 0;
+ do {
+ cnt = 0;
+ for (int i = 0; i < intlen - 1; i++) {
+ if (ints[i] > ints[i+1]) {
+ cnt++;
+ int tmp = ints[i];
+ ints[i] = ints[i+1];
+ ints[i+1] = tmp;
+ }
+ }
+ } while (cnt != 0);
+}
+
+void proc(int k, int intlen, int ints[]) {
+ printf("Input: ");
+ for (int i = 0; i < intlen; i++)
+ printf("%d ", ints[i]);
+ printf("\n");
+
+ sort_me(ints, intlen);
+
+ int ind[MAX] = {};
+ int j = 0;
+ for (int i = 0; i < intlen; i++)
+ if (ints[i] == k) {
+ ind[j] = i;
+ j++;
+ }
+ printf("Output: ");
+ for (int i = 0; i < j; i++)
+ printf("%d ", ind[i]);
+ printf("\n");
+}
+
+int main() {
+ int ints1[] = {1, 5, 3, 2, 4, 2}; int k1 = 2;
+ int ints2[] = {1, 2, 4, 3, 5}; int k2 = 6;
+ int ints3[] = {5, 3, 2, 4, 2, 1}; int k3 = 4;
+ int intlen1 = sizeof(ints1) / sizeof(int);
+ int intlen2 = sizeof(ints2) / sizeof(int);
+ int intlen3 = sizeof(ints3) / sizeof(int);
+ proc(k1, intlen1, ints1);
+ proc(k2, intlen2, ints2);
+ proc(k3, intlen3, ints3);
+}
diff --git a/challenge-263/zapwai/c/ch-2.c b/challenge-263/zapwai/c/ch-2.c
new file mode 100644
index 0000000000..88473587aa
--- /dev/null
+++ b/challenge-263/zapwai/c/ch-2.c
@@ -0,0 +1,65 @@
+#include <stdio.h>
+#define MAX 50
+
+void print_input(int items1[][2], int items2[][2], int len1, int len2) {
+ printf("Input: items1 = { ");
+ for (int i = 0; i < len1; i++)
+ printf("(%d, %d) ", items1[i][0],items1[i][1]);
+ printf("}, items2 = { ");
+ for (int i = 0; i < len2; i++)
+ printf("(%d, %d) ", items2[i][0], items2[i][1]);
+ printf("}\n");
+}
+
+void print_output(int k[], int v[], int len) {
+ printf("Output: ");
+ for (int i = 0; i < len; i++)
+ printf("(%d, %d) ", k[i], v[i]);
+ printf("\n");
+}
+
+void proc(int items1[][2], int items2[][2], int len1, int len2) {
+ print_input(items1, items2, len1, len2);
+ int k[MAX] = {};
+ int v[MAX] = {};
+ int len = 0;
+ for (int i = 0; i < len1; i++) {
+ int present_index = -1;
+ for (int j = 0; j < len; j++)
+ if (k[j] == items1[i][0])
+ present_index = j;
+ if (present_index == -1) {
+ k[len] = items1[i][0];
+ v[len] = items1[i][1];
+ len++;
+ } else {
+ v[present_index] += items1[i][1];
+ }
+ }
+ for (int i = 0; i < len2; i++) {
+ int present_index = -1;
+ for (int j = 0; j < len; j++)
+ if (k[j] == items2[i][0])
+ present_index = j;
+ if (present_index == -1) {
+ k[len] = items2[i][0];
+ v[len] = items2[i][1];
+ len++;
+ } else {
+ v[present_index] += items2[i][1];
+ }
+ }
+ print_output(k, v, len);
+}
+
+int main() {
+ int items1c[3][2] = { {1,1}, {2,1}, {3,2} };
+ int items2c[2][2] = { {2,2}, {1,3} };
+ int items1a[4][2] = { {1,2}, {2,3}, {1,3}, {3,2} };
+ int items2a[2][2] = { {3,1}, {1,3} };
+ int items1b[3][2] = { {1,1}, {2,2}, {3,3} };
+ int items2b[2][2] = { {2,3}, {2,4} };
+ proc(items1c, items2c, 3, 2);
+ proc(items1a, items2a, 4, 2);
+ proc(items1b, items2b, 3, 2);
+}
diff --git a/challenge-263/zapwai/javascript/ch-1.js b/challenge-263/zapwai/javascript/ch-1.js
new file mode 100644
index 0000000000..98aa10529c
--- /dev/null
+++ b/challenge-263/zapwai/javascript/ch-1.js
@@ -0,0 +1,15 @@
+let ints1 = [1, 5, 3, 2, 4, 2]; let k1 = 2;
+let ints2 = [1, 2, 4, 3, 5]; let k2 = 6;
+let ints3 = [5, 3, 2, 4, 2, 1]; let k3 = 4;
+proc(k1, ints1);
+proc(k2, ints2);
+proc(k3, ints3);
+function proc(k, ints) {
+ console.log("Input:", ints);
+ ints = ints.sort();
+ let ind = [];
+ for (let i = 0; i < ints.length; i++)
+ if (ints[i] == k)
+ ind.push(i);
+ console.log("Output:", ind);
+}
diff --git a/challenge-263/zapwai/javascript/ch-2.js b/challenge-263/zapwai/javascript/ch-2.js
new file mode 100644
index 0000000000..da51c92306
--- /dev/null
+++ b/challenge-263/zapwai/javascript/ch-2.js
@@ -0,0 +1,39 @@
+function main() {
+ let items1c = [ [1,1], [2,1], [3,2] ];
+ let items2c = [ [2,2], [1,3] ];
+ let items1a = [ [1,2], [2,3], [1,3], [3,2] ];
+ let items2a = [ [3,1], [1,3] ];
+ let items1b = [ [1,1], [2,2], [3,3] ];
+ let items2b = [ [2,3], [2,4] ];
+ proc(items1c, items2c);
+ proc(items1a, items2a);
+ proc(items1b, items2b);
+}
+
+function print_input(items1, items2) {
+ console.log("Input:", items1, items2);
+}
+
+function print_output(h) {
+ console.log("Output:", h);
+}
+
+function proc(items1, items2) {
+ print_input(items1, items2);
+ let h = {};
+ for (let i of items1) {
+ h[i[0]] = 0
+ }
+ for (let i of items2) {
+ h[i[0]] = 0
+ }
+ for (let i of items1) {
+ h[i[0]] += i[1];
+ }
+ for (let i of items2) {
+ h[i[0]] += i[1];
+ }
+ print_output(h);
+}
+
+main();
diff --git a/challenge-263/zapwai/perl/ch-1.pl b/challenge-263/zapwai/perl/ch-1.pl
new file mode 100644
index 0000000000..2e79e0f48c
--- /dev/null
+++ b/challenge-263/zapwai/perl/ch-1.pl
@@ -0,0 +1,14 @@
+use v5.38;
+my @ints1 = (1, 5, 3, 2, 4, 2); my $k1 = 2;
+my @ints2 = (1, 2, 4, 3, 5); my $k2 = 6;
+my @ints3 = (5, 3, 2, 4, 2, 1); my $k3 = 4;
+proc($k1, @ints1);
+proc($k2, @ints2);
+proc($k3, @ints3);
+
+sub proc($k, @ints) {
+ say "Input: \@ints = " . join(", ", @ints);
+ @ints = sort { $a <=> $b } @ints;
+ my @ind = grep { $ints[$_] == $k } (0 .. $#ints);
+ say "Output: " . join(", ", @ind);
+}
diff --git a/challenge-263/zapwai/perl/ch-2.pl b/challenge-263/zapwai/perl/ch-2.pl
new file mode 100644
index 0000000000..6150a7d2cd
--- /dev/null
+++ b/challenge-263/zapwai/perl/ch-2.pl
@@ -0,0 +1,40 @@
+use v5.38;
+my $items1c = [ [1,1], [2,1], [3,2] ];
+my $items2c = [ [2,2], [1,3] ];
+my $items1a = [ [1,2], [2,3], [1,3], [3,2] ];
+my $items2a = [ [3,1], [1,3] ];
+my $items1b = [ [1,1], [2,2], [3,3] ];
+my $items2b = [ [2,3], [2,4] ];
+proc($items1c, $items2c);
+proc($items1a, $items2a);
+proc($items1b, $items2b);
+
+sub print_input($items1, $items2) {
+ print "Input: ";
+ print "\@items1: ";
+ print "(".join(", ", @$_).") " for (@$items1);
+ print "\@items2: ";
+ print "(".join(", ", @$_).") " for (@$items2);
+ print "\n";
+}
+
+sub print_output($href) {
+ my %h = %$href;
+ print "Output: ";
+ foreach (sort { $a <=> $b } keys %h) {
+ print "[$_, $h{$_}] ";
+ }
+ print "\n";
+}
+
+sub proc($items1, $items2) {
+ print_input($items1, $items2);
+ my %h;
+ foreach my $i (@$items1) {
+ $h{$$i[0]} += $$i[1];
+ }
+ foreach my $i (@$items2) {
+ $h{$$i[0]} += $$i[1];
+ }
+ print_output(\%h);
+}
diff --git a/challenge-263/zapwai/python/ch-1.py b/challenge-263/zapwai/python/ch-1.py
new file mode 100644
index 0000000000..67d54f92c2
--- /dev/null
+++ b/challenge-263/zapwai/python/ch-1.py
@@ -0,0 +1,15 @@
+def proc(k, ints) :
+ print("Input:", ints)
+ ints.sort()
+ ind = []
+ for i in range(len(ints)):
+ if ints[i] == k:
+ ind.append(i)
+ print("Output:", ind)
+
+ints1 = [1, 5, 3, 2, 4, 2]; k1 = 2
+ints2 = [1, 2, 4, 3, 5]; k2 = 6
+ints3 = [5, 3, 2, 4, 2, 1]; k3 = 4
+proc(k1, ints1)
+proc(k2, ints2)
+proc(k3, ints3)
diff --git a/challenge-263/zapwai/python/ch-2.py b/challenge-263/zapwai/python/ch-2.py
new file mode 100644
index 0000000000..8f1d20bdc7
--- /dev/null
+++ b/challenge-263/zapwai/python/ch-2.py
@@ -0,0 +1,31 @@
+def print_input(items1, items2):
+ print("Input: ", items1, items2)
+
+def print_output(h):
+ print("Output: ", end='')
+ for i in h.keys():
+ print('[', i, ', ', h[i], sep='', end='] ')
+ print()
+
+def proc(items1, items2):
+ print_input(items1, items2)
+ h = {}
+ for i in items1:
+ h[i[0]] = 0
+ for i in items2:
+ h[i[0]] = 0
+ for i in items1:
+ h[i[0]] += i[1]
+ for i in items2:
+ h[i[0]] += i[1]
+ print_output(h)
+
+items1c = [ [1,1], [2,1], [3,2] ]
+items2c = [ [2,2], [1,3] ]
+items1a = [ [1,2], [2,3], [1,3], [3,2] ]
+items2a = [ [3,1], [1,3] ]
+items1b = [ [1,1], [2,2], [3,3] ]
+items2b = [ [2,3], [2,4] ]
+proc(items1c, items2c)
+proc(items1a, items2a)
+proc(items1b, items2b)
diff --git a/challenge-263/zapwai/rust/ch-1.rs b/challenge-263/zapwai/rust/ch-1.rs
new file mode 100644
index 0000000000..acd8a11f7c
--- /dev/null
+++ b/challenge-263/zapwai/rust/ch-1.rs
@@ -0,0 +1,20 @@
+fn main() {
+ let mut ints1 = vec![1, 5, 3, 2, 4, 2]; let k1 = 2;
+ let mut ints2 = vec![1, 2, 4, 3, 5]; let k2 = 6;
+ let mut ints3 = vec![5, 3, 2, 4, 2, 1]; let k3 = 4;
+ proc(k1, ints1);
+ proc(k2, ints2);
+ proc(k3, ints3);
+}
+
+fn proc(k :i32, mut ints :Vec<i32>) {
+ println!("Input: {:?}", ints);
+ ints.sort();
+ let mut ind : Vec<i32> = Vec::new();
+ for i in 0 .. ints.len() {
+ if ints[i] == k {
+ ind.push(i as i32)
+ }
+ }
+ println!("Output: {:?}", ind);
+}
diff --git a/challenge-263/zapwai/rust/ch-2.rs b/challenge-263/zapwai/rust/ch-2.rs
new file mode 100644
index 0000000000..47cfeea9d8
--- /dev/null
+++ b/challenge-263/zapwai/rust/ch-2.rs
@@ -0,0 +1,51 @@
+use std::collections::HashMap;
+
+fn print_input(items1 :Vec<[i32;2]>, items2 :Vec<[i32;2]>) {
+ println!("Input: items1 = {:?}, items2 = {:?}", items1, items2);
+}
+
+fn print_output(h: HashMap<i32, i32>) {
+ print!("Output: ");
+ for i in h.keys() {
+ print!("({i}, {}) ", h.get(&i).unwrap());
+ }
+ println!();
+}
+
+fn proc(items1 :Vec<[i32;2]>, items2 :Vec<[i32;2]>) {
+ print_input(items1.clone(), items2.clone());
+ let mut h : HashMap<i32, i32> = HashMap::new();
+ for block in items1 {
+ let k = block[0];
+ let v = block[1];
+ if h.contains_key(&k) {
+ let current_value = h.get(&k).unwrap();
+ h.insert(k, current_value + v);
+ } else {
+ h.insert(k, v);
+ }
+ }
+ for block in items2 {
+ let k = block[0];
+ let v = block[1];
+ if h.contains_key(&k) {
+ let current_value = h.get(&k).unwrap();
+ h.insert(k, current_value + v);
+ } else {
+ h.insert(k, v);
+ }
+ }
+ print_output(h);
+}
+
+fn main() {
+ let items1c = vec![ [1,1], [2,1], [3,2] ];
+ let items2c = vec![ [2,2], [1,3] ];
+ let items1a = vec![ [1,2], [2,3], [1,3], [3,2] ];
+ let items2a = vec![ [3,1], [1,3] ];
+ let items1b = vec![ [1,1], [2,2], [3,3] ];
+ let items2b = vec![ [2,3], [2,4] ];
+ proc(items1c, items2c);
+ proc(items1a, items2a);
+ proc(items1b, items2b);
+}