diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-08-26 17:23:02 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-26 17:23:02 +0100 |
| commit | 88dfa96d9b379f17662ed8807da5c4effced4d42 (patch) | |
| tree | 66f70595c4e7599566ddde77627cf92bbcc949f9 | |
| parent | c84694e039c2e0fa8151954c5ce30342c7802331 (diff) | |
| parent | 33fa14320318c8f5684f84b892f8b082e8cd018c (diff) | |
| download | perlweeklychallenge-club-88dfa96d9b379f17662ed8807da5c4effced4d42.tar.gz perlweeklychallenge-club-88dfa96d9b379f17662ed8807da5c4effced4d42.tar.bz2 perlweeklychallenge-club-88dfa96d9b379f17662ed8807da5c4effced4d42.zip | |
Merge pull request #10707 from zapwai/branch-for-284
Week 284
| -rw-r--r-- | challenge-284/zapwai/c/ch-1.c | 31 | ||||
| -rw-r--r-- | challenge-284/zapwai/c/ch-2.c | 57 | ||||
| -rw-r--r-- | challenge-284/zapwai/c/vec.h | 294 | ||||
| -rw-r--r-- | challenge-284/zapwai/javascript/ch-1.js | 29 | ||||
| -rw-r--r-- | challenge-284/zapwai/javascript/ch-2.js | 42 | ||||
| -rw-r--r-- | challenge-284/zapwai/perl/ch-1.pl | 27 | ||||
| -rw-r--r-- | challenge-284/zapwai/perl/ch-2.pl | 37 | ||||
| -rw-r--r-- | challenge-284/zapwai/python/ch-1.py | 20 | ||||
| -rw-r--r-- | challenge-284/zapwai/python/ch-2.py | 32 | ||||
| -rw-r--r-- | challenge-284/zapwai/r/ch-1.r | 24 | ||||
| -rw-r--r-- | challenge-284/zapwai/r/ch-2.r | 36 | ||||
| -rw-r--r-- | challenge-284/zapwai/rust/ch-1.rs | 25 | ||||
| -rw-r--r-- | challenge-284/zapwai/rust/ch-2.rs | 43 |
13 files changed, 697 insertions, 0 deletions
diff --git a/challenge-284/zapwai/c/ch-1.c b/challenge-284/zapwai/c/ch-1.c new file mode 100644 index 0000000000..836a8cdf1b --- /dev/null +++ b/challenge-284/zapwai/c/ch-1.c @@ -0,0 +1,31 @@ +#include <stdio.h> + +void proc(int ints[], int intslen) { + printf("Input: ints = { "); + int lucky = -1; + int max = 0; + for (int i = 0; i < intslen; i++) { + printf("%d ", ints[i]); + if (max < ints[i]) + max = ints[i]; + } + printf("}\n"); + int freq[1 + max]; + for (int i = 0; i < 1 + max; i++) + freq[i] = 0; + for (int i = 0; i < intslen; i++) + freq[ints[i]]++; + for (int i = 1; i < 1 + max; i++) + if (i == freq[i]) + lucky = i; + printf("Output: %d\n", lucky); +} + +int main() { + int ints[] = {2, 2, 3, 4}; + proc(ints, sizeof(ints) / sizeof(int)); + int ints2[] = {1, 2, 2, 3, 3, 3}; + proc(ints2, sizeof(ints2) / sizeof(int)); + int ints3[] = {1, 1, 1, 3}; + proc(ints3, sizeof(ints3) / sizeof(int)); +} diff --git a/challenge-284/zapwai/c/ch-2.c b/challenge-284/zapwai/c/ch-2.c new file mode 100644 index 0000000000..b91f0c562e --- /dev/null +++ b/challenge-284/zapwai/c/ch-2.c @@ -0,0 +1,57 @@ +#include <stdio.h> +#include "vec.h" + +void proc(int l1[], int l2[], int l1len, int l2len) { + printf("Input: \n"); + printf(" List1 = { "); + for (int i = 0; i < l1len; i++) + printf("%d ", l1[i]); + printf("}\n"); + printf(" List2 = { "); + for (int i = 0; i < l2len; i++) + printf("%d ", l2[i]); + printf("}\n"); + vec* tail = new_vec('i'); + for (int i = 0; i < l1len; i++) { + int item = l1[i]; + int elem_of_l2_flag = 0; + for (int j = 0; j < l2len; j++) { + int item2 = l2[j]; + if (item == item2) { + elem_of_l2_flag = 1; + break; + } + } + if (elem_of_l2_flag == 0) + push(tail, &item); + } + vec* out = new_vec('i'); + for (int j = 0; j < l2len; j++) { + int item2 = l2[j]; + for (int i = 0; i < l1len; i++) { + int item = l1[i]; + if (item == item2) + push(out, &item); + } + } + sort(tail); + for (int i = 0; i < tail->size; i++) + push(out, &tail->data[i]); + printf("Output: "); + display(out); + printf("\n"); + destroy_vec(tail); + destroy_vec(out); +} + +int main() { + int list1[] = {2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5}; + int list2[] = {2, 1, 4, 3, 5, 6}; + proc(list1, list2, sizeof(list1)/sizeof(int), sizeof(list2)/sizeof(int)); + int alist1[] = {3, 3, 4, 6, 2, 4, 2, 1, 3}; + int alist2[] = {1, 3, 2}; + proc(alist1, alist2, sizeof(alist1)/sizeof(int), sizeof(alist2)/sizeof(int)); + int blist1[] = {3, 0, 5, 0, 2, 1, 4, 1, 1}; + int blist2[] = {1, 0, 3, 2}; + proc(blist1, blist2, sizeof(blist1)/sizeof(int), sizeof(blist2)/sizeof(int)); +} diff --git a/challenge-284/zapwai/c/vec.h b/challenge-284/zapwai/c/vec.h new file mode 100644 index 0000000000..8a73798e45 --- /dev/null +++ b/challenge-284/zapwai/c/vec.h @@ -0,0 +1,294 @@ +#ifndef VEC_H +#define VEC_H +#include <stdlib.h> +#include <string.h> +#define VECMAXSTRLEN 50 +#define VECCAP 10 +typedef struct vector { + size_t cap; /* actual size allocated (reduces calls to realloc)*/ + size_t size; /* size of data */ + int* data; /* integer data */ + char* datac; /* char data */ + char** datas; /* string data */ + char type; /* i, c, or s */ +} vec; + +vec* new_vec(char t) { + struct vector* v = malloc(sizeof(vec)); + if ( t != 'c' && t != 'i' && t != 's') { + exit(1); + } + v->type = t; + v->size = 0; + v->cap = VECCAP; + v->data = malloc(v->cap * sizeof(int)); + v->datac = malloc(v->cap * sizeof(char)); + v->datas = malloc(v->cap * sizeof(char*)); + for (int i = 0; i < v->cap; i++) + v->datas[i] = malloc(VECMAXSTRLEN); + return v; +} + +void destroy_vec(struct vector* v) { + free (v->data); /* good habit */ + free (v->datac); + int number_of_strings = (v->type == 's') ? v->cap : VECCAP; + for (int i = 0; i < number_of_strings; i++) + free(v->datas[i]); + free (v->datas); + free(v); +} + +/* If a vector needs more memory, add VECCAP (e.g. 10) slots */ +void stretch_vec(struct vector* v) { + if (v->size == v->cap) { + v->cap += VECCAP; + switch(v->type) { + case 'i': + v->data = realloc(v->data, sizeof(int) * v->cap); + break; + case 'c': + v->datac = realloc(v->datac, sizeof(char) * v->cap); + break; + case 's': + v->datas = realloc(v->datas, sizeof(char*) * v->cap); + for (int i = v->size; i < v->cap; i++) + v->datas[i] = malloc(VECMAXSTRLEN); + break; + } + } +} + +void push(struct vector* v, void* value) { + v->size++; + stretch_vec(v); + switch(v->type) { + case 'i': + v->data[v->size - 1] = *(int *) value; + break; + case 'c': + v->datac[v->size - 1] = *(char *) value; + break; + case 's': + strcpy(v->datas[v->size - 1], (char *) value); + break; + } +} + + +void unshift(struct vector* v, void* value) { + v->size++; + stretch_vec(v); + switch(v->type) { + case 'i': + for (int i = v->size - 1; i > 0; i--) + v->data[i] = v->data[i - 1]; + v->data[0] = * (int*) value; + break; + case 'c': + for (int i = v->size - 1; i > 0; i--) + v->datac[i] = v->datac[i - 1]; + v->datac[0] = * (char*) value; + break; + case 's': + for (int i = v->size - 1; i > 0; i--) + strcpy(v->datas[i], v->datas[i - 1]); + strcpy(v->datas[0], (char*) value); + break; + } +} + +void* shift(struct vector* v) { + void *x = NULL; + if (v->size == 0) return NULL; + v->size--; + switch(v->type) { + case 'i': + x = malloc(sizeof(int)); + if (x == NULL) return NULL; + *(int*)x = v->data[0]; + for (int i = 0; i < v->size; i++) + v->data[i] = v->data[i + 1]; + v->data[v->size] = 0; + break; + case 'c': + x = malloc(sizeof(char)); + if (x == NULL) return NULL; + *(char *)x = v->datac[0]; + for (int i = 0; i < v->size; i++) + v->datac[i] = v->datac[i + 1]; + v->datac[v->size] = '\0'; + break; + case 's': + x = malloc(VECMAXSTRLEN); + if (x == NULL) return NULL; + strcpy(x, v->datas[0]); + for (int i = 0; i < v->size; i++) + strcpy(v->datas[i], v->datas[i + 1]); + strcpy(v->datas[v->size], ""); + break; + } + return x; +} + +void* pop(struct vector* v) { + void *x = NULL; + if (v->size == 0) return NULL; + v->size--; + switch(v->type) { + case 'i': + x = malloc(sizeof(int)); + *(int*)x = v->data[v->size]; + v->data[v->size] = 0; + break; + case 'c': + x = malloc(sizeof(char)); + *(char*)x = v->datac[v->size]; + v->datac[v->size] = '\0'; + break; + case 's': + x = malloc(VECMAXSTRLEN); + strcpy(x, v->datas[v->size]); + strcpy(v->datas[v->size], " "); + break; + } + return x; +} + +void push_list(struct vector* v, void* list, int listlen) { + for (int i = 0; i < listlen; i++) + switch(v->type) { + case 'i': + push(v, &((int*)list)[i]); + break; + case 'c': + push(v, &((char*)list)[i]); + break; + case 's': + push(v, ((char**)list)[i]); + break; + } +} + +void sort(struct vector* v) { + int cnt; + do { + cnt = 0; + for (int i = 0; i < v->size - 1; i++) { + switch(v->type) { + case 'i': + if (v->data[i] > v->data[i + 1]) { + cnt++; + int tmp = v->data[i]; + v->data[i] = v->data[i+1]; + v->data[i+1] = tmp; + } + break; + case 'c': + if (v->datac[i] > v->datac[i + 1]) { + cnt++; + char tmp = v->datac[i]; + v->datac[i] = v->datac[i+1]; + v->datac[i+1] = tmp; + } + break; + case 's': + if (strcmp(v->datas[i], v->datas[i + 1]) > 0) { + cnt++; + char* tmp = v->datas[i]; + v->datas[i] = v->datas[i+1]; + v->datas[i+1] = tmp; + } + break; + } + } + } while(cnt > 0); +} + +void reverse(struct vector* v) { + if (v->size == 1) return; + int k = v->size / 2; + for (int i = 0; i < k; i++) { + int idx = (v->size % 2 == 0) ? k+i : k+1+i; + int idy = k - i - 1; + switch(v->type) { + case 'i': + { + int x = v->data[idy]; + v->data[idy] = v->data[idx]; + v->data[idx] = x; + } + break; + case 'c': + { + char x = v->datac[k-1-i]; + v->datac[idy] = v->datac[idx]; + v->datac[idx] = x; + } + break; + case 's': + { + char* x = v->datas[k-1-i]; + v->datas[idy] = v->datas[idx]; + v->datas[idx] = x; + } + break; + } + } +} + +void display(struct vector* v) { + printf("["); + if (v->size > 0){ + switch(v->type) { + case 'i': + for (int i = 0; i < v->size - 1; i++) printf("%d, ", v->data[i]); + printf("%d", v->data[v->size-1]); + break; + case 'c': + for (int i = 0; i < v->size - 1; i++) printf("%c, ", v->datac[i]); + printf("%c", v->datac[v->size-1]); + break; + case 's': + for (int i = 0; i < v->size - 1; i++) printf("%s, ", v->datas[i]); + printf("%s", v->datas[v->size-1]); + break; + } + } + printf("]"); +} + +void* get(struct vector* v, int k) { + void* x = NULL; + switch(v->type) { + case 'i': + x = malloc(sizeof(int)); + *(int*) x = v->data[k]; + break; + case 'c': + x = malloc(sizeof(char)); + *(char*) x = v->datac[k]; + break; + case 's': + x = malloc(VECMAXSTRLEN); + strcpy(x, v->datas[k]); + break; + } + return x; +} + +void set(struct vector* v, int k, void* value) { + switch(v->type) { + case 'i': + v->data[k] = *(int*) value; + break; + case 'c': + v->datac[k] = *(char*) value; + break; + case 's': + strcpy(v->datas[k], (char*) value); + break; + } + +} +#endif diff --git a/challenge-284/zapwai/javascript/ch-1.js b/challenge-284/zapwai/javascript/ch-1.js new file mode 100644 index 0000000000..ced6b0c439 --- /dev/null +++ b/challenge-284/zapwai/javascript/ch-1.js @@ -0,0 +1,29 @@ +let ints = [2, 2, 3, 4]; +proc(ints); +ints = [1, 2, 2, 3, 3, 3]; +proc(ints); +ints = [1, 1, 1, 3]; +proc(ints); +function proc(ints) { + console.log("Input: ints =", ints); + let lucky = -1; + let max = 0; + for (let item of ints) { + if (max < item) { + max = item; + } + } + let freq = []; + for (let j = 0; j < 1 + max; j++) { + freq.push(0); + } + for (let item of ints) { + freq[item]++; + } + for (let i = 1; i < freq.length; i++) { + if (i == freq[i]) { + lucky = i; + } + } + console.log("Output:", lucky); +} diff --git a/challenge-284/zapwai/javascript/ch-2.js b/challenge-284/zapwai/javascript/ch-2.js new file mode 100644 index 0000000000..0fd001cd0b --- /dev/null +++ b/challenge-284/zapwai/javascript/ch-2.js @@ -0,0 +1,42 @@ +let list1 = [2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5]; +let list2 = [2, 1, 4, 3, 5, 6]; +proc(list1, list2); +list1 = [3, 3, 4, 6, 2, 4, 2, 1, 3]; +list2 = [1, 3, 2]; +proc(list1, list2); +list1 = [3, 0, 5, 0, 2, 1, 4, 1, 1]; +list2 = [1, 0, 3, 2]; +proc(list1, list2); + +function proc(l1, l2) { + console.log("Input:"); + console.log(l1); + console.log(l2); + let tail = []; + for (let item of list1) { + let elem_of_l2_flag = 0; + for (let item2 of list2) { + if (item == item2) { + elem_of_l2_flag = 1; + break; + } + } + if (elem_of_l2_flag == 0) { + tail.push(item); + } + } + let pre = []; + for (let item2 of list2) { + for (let item of list1) { + if (item == item2) { + pre.push(item); + } + } + } + let sorted_tail = tail.sort(); + let out = pre; + for (let t of sorted_tail) { + out.push(t); + } + console.log("Output:", out); +} diff --git a/challenge-284/zapwai/perl/ch-1.pl b/challenge-284/zapwai/perl/ch-1.pl new file mode 100644 index 0000000000..303eaa97a4 --- /dev/null +++ b/challenge-284/zapwai/perl/ch-1.pl @@ -0,0 +1,27 @@ +use v5.38; +my @ints = (2, 2, 3, 4); +proc(@ints); +@ints = (1, 2, 2, 3, 3, 3); +proc(@ints); +@ints = (1, 1, 1, 3); +proc(@ints); +sub proc(@ints) { + say "Input: \@ints = @ints"; + my $lucky = -1; + my $max = 0; + for my $item (@ints) { + if ($max < $item) { + $max = $item; + } + } + my @freq = (0) x (1 + $max); + for my $item (@ints) { + $freq[$item]++; + } + for my $i (1 .. $#freq) { + if ($i == $freq[$i]) { + $lucky = $i; + } + } + say "Output: $lucky"; +} diff --git a/challenge-284/zapwai/perl/ch-2.pl b/challenge-284/zapwai/perl/ch-2.pl new file mode 100644 index 0000000000..893fa398be --- /dev/null +++ b/challenge-284/zapwai/perl/ch-2.pl @@ -0,0 +1,37 @@ +use v5.38; +my @list1 = (2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5); +my @list2 = (2, 1, 4, 3, 5, 6); +proc(\@list1, \@list2); +@list1 = (3, 3, 4, 6, 2, 4, 2, 1, 3); +@list2 = (1, 3, 2); +proc(\@list1, \@list2); +@list1 = (3, 0, 5, 0, 2, 1, 4, 1, 1); +@list2 = (1, 0, 3, 2); +proc(\@list1, \@list2); + +sub proc($l1, $l2) { + say "Input: \n \@list1 = @{$l1}\n \@list2 = @{$l2}"; + my @tail; + for my $item (@list1) { + my $elem_of_l2_flag = 0; + for my $item2 (@list2) { + if ($item == $item2) { + $elem_of_l2_flag = 1; + last; + } + } + if ($elem_of_l2_flag == 0) { + push @tail, $item; + } + } + my @pre; + for my $item2 (@list2) { + for my $item (@list1) { + if ($item == $item2) { + push @pre, $item; + } + } + } + my @sorted_tail = sort { $a <=> $b } @tail; + say "Output: @pre @sorted_tail"; +} diff --git a/challenge-284/zapwai/python/ch-1.py b/challenge-284/zapwai/python/ch-1.py new file mode 100644 index 0000000000..16187e6da5 --- /dev/null +++ b/challenge-284/zapwai/python/ch-1.py @@ -0,0 +1,20 @@ +def proc(ints): + print("Input: ints =", ints) + lucky = -1 + freq = [] + for j in range(1 + max(ints)): + freq.append(0) + for item in ints: + freq[item] += 1 + + for i in range(1, len(freq)): + if i == freq[i]: + lucky = i + print("Output:", lucky) + +ints = [2, 2, 3, 4] +proc(ints) +ints = [1, 2, 2, 3, 3, 3] +proc(ints) +ints = [1, 1, 1, 3] +proc(ints) diff --git a/challenge-284/zapwai/python/ch-2.py b/challenge-284/zapwai/python/ch-2.py new file mode 100644 index 0000000000..7e1c4bb38b --- /dev/null +++ b/challenge-284/zapwai/python/ch-2.py @@ -0,0 +1,32 @@ +def proc(l1, l2): + print("Input: \n list1 =", l1, "\n list2 =", l2) + tail = [] + for item in list1: + elem_of_l2_flag = 0 + for item2 in list2: + if item == item2 : + elem_of_l2_flag = 1 + break + + if elem_of_l2_flag == 0 : + tail.append(item) + pre = [] + for item2 in list2 : + for item in list1 : + if item == item2 : + pre.append(item) + tail.sort(); + out = pre + for t in tail: + out.append(t) + print("Output:", out) + +list1 = [2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5] +list2 = [2, 1, 4, 3, 5, 6] +proc(list1, list2) +list1 = [3, 3, 4, 6, 2, 4, 2, 1, 3] +list2 = [1, 3, 2] +proc(list1, list2) +list1 = [3, 0, 5, 0, 2, 1, 4, 1, 1] +list2 = [1, 0, 3, 2] +proc(list1, list2) diff --git a/challenge-284/zapwai/r/ch-1.r b/challenge-284/zapwai/r/ch-1.r new file mode 100644 index 0000000000..217964d244 --- /dev/null +++ b/challenge-284/zapwai/r/ch-1.r @@ -0,0 +1,24 @@ +proc <- function(ints) { + cat("Input: ints = ") + cat(ints) + lucky = -1 + freq = c(0) + for (i in 1:max(ints)) { + freq <- append(freq, 0) + } + for (item in ints) { + freq[item] <- freq[item] + 1 + } + for (i in 1:length(freq)) { + if (i == freq[i]) { + lucky <- i + } + } + cat("\nOutput:", lucky, "\n") +} +ints = c(2, 2, 3, 4) +proc(ints) +ints = c(1, 2, 2, 3, 3, 3) +proc(ints) +ints = c(1, 1, 1, 3) +proc(ints) diff --git a/challenge-284/zapwai/r/ch-2.r b/challenge-284/zapwai/r/ch-2.r new file mode 100644 index 0000000000..40d24840b5 --- /dev/null +++ b/challenge-284/zapwai/r/ch-2.r @@ -0,0 +1,36 @@ +proc <- function(l1, l2) { + cat( "Input: \n list1 = ", l1, "\n list2 = ", l2 ) + tail = c() + for (item in list1) { + elem_of_l2_flag = 0 + for (item2 in list2) { + if (item == item2) { + elem_of_l2_flag = 1 + break + } + } + if (elem_of_l2_flag == 0) { + tail <- append(tail, item) + } + } + out = c() + for (item2 in list2) { + for (item in list1) { + if (item == item2) { + out <- append(out, item) + } + } + } + sorted_tail <- sort(tail) + cat( "\nOutput: ", out, sorted_tail, "\n" ) +} + +list1 = c(2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5) +list2 = c(2, 1, 4, 3, 5, 6) +proc(list1, list2) +list1 = c(3, 3, 4, 6, 2, 4, 2, 1, 3) +list2 = c(1, 3, 2) +proc(list1, list2) +list1 = c(3, 0, 5, 0, 2, 1, 4, 1, 1) +list2 = c(1, 0, 3, 2) +proc(list1, list2) diff --git a/challenge-284/zapwai/rust/ch-1.rs b/challenge-284/zapwai/rust/ch-1.rs new file mode 100644 index 0000000000..e6af4dfead --- /dev/null +++ b/challenge-284/zapwai/rust/ch-1.rs @@ -0,0 +1,25 @@ +fn main() { + let ints = vec![2, 2, 3, 4]; + proc(ints); + let ints2 = vec![1, 2, 2, 3, 3, 3]; + proc(ints2); + let ints3 = vec![1, 1, 1, 3]; + proc(ints3); +} +fn proc(ints :Vec<i32>) { + println!("Input: ints = {:?}", ints); + let mut lucky : i32 = -1; + let mut freq = vec![0]; + for _j in 0 .. 1 + ints.iter().max().unwrap() { + freq.push(0); + } + for item in ints { + freq[item as usize] += 1; + } + for i in 1 .. freq.len() { + if i == freq[i] { + lucky = i as i32; + } + } + println!("Output: {lucky}"); +} diff --git a/challenge-284/zapwai/rust/ch-2.rs b/challenge-284/zapwai/rust/ch-2.rs new file mode 100644 index 0000000000..c211a740cd --- /dev/null +++ b/challenge-284/zapwai/rust/ch-2.rs @@ -0,0 +1,43 @@ +fn main() { + let list1 = vec![2, 3, 9, 3, 1, 4, 6, 7, 2, 8, 5]; + let list2 = vec![2, 1, 4, 3, 5, 6]; + proc(list1, list2); + let alist1 = vec![3, 3, 4, 6, 2, 4, 2, 1, 3]; + let alist2 = vec![1, 3, 2]; + proc(alist1, alist2); + let blist1 = vec![3, 0, 5, 0, 2, 1, 4, 1, 1]; + let blist2 = vec![1, 0, 3, 2]; + proc(blist1, blist2); + +} +fn proc(l1 :Vec<i32>, l2 :Vec<i32>) { + println!("Input: \n list1 = {:?}\n list2 = {:?}", l1, l2); + let mut tail : Vec<i32> = Vec::new(); + for item in &l1 { + let mut elem_of_l2_flag = 0; + for item2 in &l2 { + if item == item2 { + elem_of_l2_flag = 1; + break; + } + } + + if elem_of_l2_flag == 0 { + tail.push(*item); + } + } + let mut pre : Vec<i32> = Vec::new(); + for item2 in &l2 { + for item in &l1 { + if item == item2 { + pre.push(*item); + } + } + } + tail.sort(); + let mut out = pre; + for t in tail { + out.push(t); + } + println!("Output: {:?}", out); +} |
