From 5d06b5f55c9d3af08afed09b921e946c85e37f44 Mon Sep 17 00:00:00 2001 From: Antonia Date: Wed, 7 Dec 2022 14:40:21 +0100 Subject: [PATCH] added days 5 and 6 --- 05.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 05_02.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 06.c | 33 +++++++++++++++++++++++++++++++++ 06_02.c | 42 ++++++++++++++++++++++++++++++++++++++++++ Makefile | 2 +- 5 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 05.c create mode 100644 05_02.c create mode 100644 06.c create mode 100644 06_02.c diff --git a/05.c b/05.c new file mode 100644 index 0000000..25c835f --- /dev/null +++ b/05.c @@ -0,0 +1,53 @@ +#include +#include +#include + +#define SIZE 50 + +char stack[10*SIZE]; +int ptr[10]; + +int move(int source, int dest) { + ptr[dest]--; + stack[ptr[dest]] = stack[ptr[source]]; + ptr[source]++; +} +int insert(int index, char val) { + stack[ptr[index]] = val; + ptr[index]++; +} + +void init_ptrs() { + for (int i=0; i<10; i++) { + ptr[i] = i*SIZE; + } +} + +int main () { + char cur[20]; + int cur_sum = 0; + int max = 0; + init_ptrs(); + int k = 1; + while (fgets(cur,5,stdin) !=NULL) { + if (strlen(cur) < 4 || cur[1] == '1') break; + if (cur[1] != ' ') { + insert(k,cur[1]); + } + k++; + if (k > 9) k=1; + } + init_ptrs(); + char c; + while (c = getchar(), c != '\n'); // skip lines + while (c = getchar(), c != '\n'); // skip lines + int q, src, dst; + while (scanf("move %d from %d to %d\n", &q, &src, &dst) != EOF) { + for (int k=0; k +#include +#include + +#define SIZE 50 + +char stack[10*SIZE]; +int ptr[10]; + +int move(int source, int dest, int q) { + ptr[dest]-= q; + memcpy(stack + ptr[dest], stack + ptr[source], q); + ptr[source]+=q; +} +int insert(int index, char val) { + stack[ptr[index]] = val; + ptr[index]++; +} + +void init_ptrs() { + for (int i=0; i<10; i++) { + ptr[i] = i*SIZE; + } +} + +int main () { + char cur[20]; + int cur_sum = 0; + int max = 0; + init_ptrs(); + int k = 1; + while (fgets(cur,5,stdin) !=NULL) { + if (strlen(cur) < 4 || cur[1] == '1') break; + if (cur[1] != ' ') { + insert(k,cur[1]); + } + k++; + if (k > 9) k=1; + } + init_ptrs(); + char c; + while (c = getchar(), c != '\n'); // skip lines + while (c = getchar(), c != '\n'); // skip lines + int q, src, dst; + while (scanf("move %d from %d to %d\n", &q, &src, &dst) != EOF) { + move(src,dst,q); + } + for (int i=1; i<10; i++) + putchar(stack[ptr[i]]); + + +} diff --git a/06.c b/06.c new file mode 100644 index 0000000..7c671e2 --- /dev/null +++ b/06.c @@ -0,0 +1,33 @@ +#include +#include +#include + + +char c[5]; + +int is_equal () { + return !(c[0] == c[1] || c[0] == c[2] || c[0] == c[3] || c[1] == c[2] || c[1] == c[3] || c[2] == c[3]); +} + +int main () { + int k = 0; + int j = 1; + char f; + c[5] = 0; + while (j < 5) { + c[k] = getchar(); + k++; + j++; + } + + while ((f = getchar()) != EOF) { + k %=4; + printf("%d %s f:%c\n",k,c,f); + if (is_equal()) break; + c[k] = f; + k++; + j++; + } + printf("%d\n", j-1); + +} diff --git a/06_02.c b/06_02.c new file mode 100644 index 0000000..be6442a --- /dev/null +++ b/06_02.c @@ -0,0 +1,42 @@ +#include +#include +#include + + +char c[15]; +int mask = 0; + +int is_equal () { + int j = 0; + mask = 0; + for (j=0; j<14; j++){ + int n = c[j] - 'a'; + if (mask & (1 << n)) + return 0; + mask |= (1<