diff options
| -rw-r--r-- | challenge-263/zapwai/c/ch-1.c | 50 | ||||
| -rw-r--r-- | challenge-263/zapwai/c/ch-2.c | 65 | ||||
| -rw-r--r-- | challenge-263/zapwai/javascript/ch-1.js | 15 | ||||
| -rw-r--r-- | challenge-263/zapwai/javascript/ch-2.js | 39 | ||||
| -rw-r--r-- | challenge-263/zapwai/perl/ch-1.pl | 14 | ||||
| -rw-r--r-- | challenge-263/zapwai/perl/ch-2.pl | 40 | ||||
| -rw-r--r-- | challenge-263/zapwai/python/ch-1.py | 15 | ||||
| -rw-r--r-- | challenge-263/zapwai/python/ch-2.py | 31 | ||||
| -rw-r--r-- | challenge-263/zapwai/rust/ch-1.rs | 20 | ||||
| -rw-r--r-- | challenge-263/zapwai/rust/ch-2.rs | 51 |
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); +} |
