From 8eef1a5fe2075c07d659c3424cafffcb4819eaec Mon Sep 17 00:00:00 2001 From: Xamora Date: Mon, 2 Dec 2024 06:48:31 +0100 Subject: [PATCH] finish 02 --- 02/_.h | 25 ++ 02/a.out | Bin 0 -> 19808 bytes 02/main.txt | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++ 02/mylib.c | 84 +++++ 02/part1.c | 37 ++ 02/part1.sh | 1 + 02/part2.c | 57 +++ 02/part2.sh | 1 + 02/test.txt | 6 + 02/test2.txt | 1 + 10 files changed, 1212 insertions(+) create mode 100644 02/_.h create mode 100755 02/a.out create mode 100644 02/main.txt create mode 100644 02/mylib.c create mode 100644 02/part1.c create mode 100755 02/part1.sh create mode 100644 02/part2.c create mode 100755 02/part2.sh create mode 100644 02/test.txt create mode 100644 02/test2.txt diff --git a/02/_.h b/02/_.h new file mode 100644 index 0000000..3f93823 --- /dev/null +++ b/02/_.h @@ -0,0 +1,25 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define MAX(X, Y) ((X) > (Y) ? (X) : (Y)) +#define MIN(X, Y) ((X) < (Y) ? (X) : (Y)) +#define ABS(X) ((X) >= 0 ? (X) : -(X)) + +char** str_split(char* a_str, const char a_delim); + +int str_index(char *str, char c); + +int number_of_element(char *str, char c); + +long gmc(long a, long b); +long lmc(long a, long b); +long lmcs(int array[], int n); diff --git a/02/a.out b/02/a.out new file mode 100755 index 0000000000000000000000000000000000000000..db78779c1ba050639e35e7b77ee180f966323587 GIT binary patch literal 19808 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 0 && number - next_number < 4 && (increase == 1 || increase == 0)) { + increase = 1; + } + else if (number - next_number < 0 && number - next_number > -4 && (increase == -1 || increase == 0)) { + increase = -1; + } + else { + is_safe = 0; + } + } + if (is_safe == 1) + count_safe++; + } + + printf("safe: %d\n", count_safe); + + return 0; +} diff --git a/02/part1.sh b/02/part1.sh new file mode 100755 index 0000000..dad1d2d --- /dev/null +++ b/02/part1.sh @@ -0,0 +1 @@ +gcc -g -Wall -Wextra -include_.h part1.c mylib.c diff --git a/02/part2.c b/02/part2.c new file mode 100644 index 0000000..15debcd --- /dev/null +++ b/02/part2.c @@ -0,0 +1,57 @@ +#include "_.h" + +int main(int argc, char **argv) { + + if (argc != 2) + return 1; + + char *input = argv[1]; + char **inputs = str_split(strdup(input), '\n'); + + int count_safe = 0; + for (int i = 0; inputs[i] != NULL; i++) { + char **inputs_space_first = str_split(strdup(inputs[i]), ' '); + int is_safe = 0; + for (int y = -1; inputs_space_first[y] != NULL; y++) { + if (is_safe == 1) + break; + int increase = 0; + is_safe = 1; + char **inputs_space = str_split(strdup(inputs[i]), ' '); + if (y > -1) + inputs_space[y] = "-1"; + for (int j = 0; inputs_space[j + 1] != NULL; j++) { + int number = atoi(inputs_space[j]); + int next_number = atoi(inputs_space[j + 1]); + if (number == -1) { + if (inputs_space[j + 2] == NULL) + break; + number = atoi(inputs_space[j + 1]); + next_number = atoi(inputs_space[j + 2]); + } + if (next_number == -1) { + if (inputs_space[j + 2] == NULL) + break; + next_number = atoi(inputs_space[j + 2]); + } + + if (number - next_number > 0 && number - next_number < 4 && (increase == 1 || increase == 0)) { + increase = 1; + } + else if (number - next_number < 0 && number - next_number > -4 && (increase == -1 || increase == 0)) { + increase = -1; + } + else { + is_safe = 0; + break; + } + } + } + if (is_safe == 1) + count_safe++; + } + + printf("safe: %d\n", count_safe); + + return 0; +} diff --git a/02/part2.sh b/02/part2.sh new file mode 100755 index 0000000..119f5ba --- /dev/null +++ b/02/part2.sh @@ -0,0 +1 @@ +gcc -g -Wall -Wextra -include_.h part2.c mylib.c diff --git a/02/test.txt b/02/test.txt new file mode 100644 index 0000000..b49c10d --- /dev/null +++ b/02/test.txt @@ -0,0 +1,6 @@ +7 6 4 2 1 +1 2 7 8 9 +9 7 6 2 1 +1 3 2 4 5 +8 6 4 4 1 +1 3 6 7 9 diff --git a/02/test2.txt b/02/test2.txt new file mode 100644 index 0000000..6fefc97 --- /dev/null +++ b/02/test2.txt @@ -0,0 +1 @@ +35 37 38 41 43 41