From c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c Mon Sep 17 00:00:00 2001 From: Martial Simon Date: Mon, 15 Sep 2025 01:08:27 +0200 Subject: add: graphs et rushs --- rushs/tinyprintf/functional_programming/foldl.c | 11 +++++++++++ rushs/tinyprintf/functional_programming/foldr.c | 10 ++++++++++ .../functional_programming/functional_programming.h | 10 ++++++++++ rushs/tinyprintf/functional_programming/map.c | 9 +++++++++ 4 files changed, 40 insertions(+) create mode 100644 rushs/tinyprintf/functional_programming/foldl.c create mode 100644 rushs/tinyprintf/functional_programming/foldr.c create mode 100644 rushs/tinyprintf/functional_programming/functional_programming.h create mode 100644 rushs/tinyprintf/functional_programming/map.c (limited to 'rushs/tinyprintf/functional_programming') diff --git a/rushs/tinyprintf/functional_programming/foldl.c b/rushs/tinyprintf/functional_programming/foldl.c new file mode 100644 index 0000000..ac222a7 --- /dev/null +++ b/rushs/tinyprintf/functional_programming/foldl.c @@ -0,0 +1,11 @@ +#include "functional_programming.h" + +int foldl(int *array, size_t len, int (*func)(int, int)) +{ + int acc = 0; + for (size_t i = 0; i < len; i++) + { + acc = (*func)(acc, array[i]); + } + return acc; +} diff --git a/rushs/tinyprintf/functional_programming/foldr.c b/rushs/tinyprintf/functional_programming/foldr.c new file mode 100644 index 0000000..c232410 --- /dev/null +++ b/rushs/tinyprintf/functional_programming/foldr.c @@ -0,0 +1,10 @@ +#include "functional_programming.h" + +int foldr(int *array, size_t len, int (*func)(int, int)) +{ + if (len == 1) + { + return (*func)(array[0], 0); + } + return (*func)(array[0], foldr(array + 1, len - 1, func)); +} diff --git a/rushs/tinyprintf/functional_programming/functional_programming.h b/rushs/tinyprintf/functional_programming/functional_programming.h new file mode 100644 index 0000000..429b13c --- /dev/null +++ b/rushs/tinyprintf/functional_programming/functional_programming.h @@ -0,0 +1,10 @@ +#ifndef FUNCTIONAL_PROGRAMMING_H +#define FUNCTIONAL_PROGRAMMING_H + +#include + +void map(int *array, size_t len, void (*func)(int *)); +int foldr(int *array, size_t len, int (*func)(int, int)); +int foldl(int *array, size_t len, int (*func)(int, int)); + +#endif /* !FUNCTIONAL_PROGRAMMING_H */ diff --git a/rushs/tinyprintf/functional_programming/map.c b/rushs/tinyprintf/functional_programming/map.c new file mode 100644 index 0000000..311c39c --- /dev/null +++ b/rushs/tinyprintf/functional_programming/map.c @@ -0,0 +1,9 @@ +#include "functional_programming.h" + +void map(int *array, size_t len, void (*func)(int *)) +{ + for (size_t i = 0; i < len; i++) + { + (*func)(array + i); + } +} -- cgit v1.2.3