diff options
| author | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
|---|---|---|
| committer | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
| commit | c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (patch) | |
| tree | 3e4f42f93c7ae89a364e4d51fff6e5cec4e55fa9 /rushs/tinyprintf/functional_programming | |
add: graphs et rushs
Diffstat (limited to 'rushs/tinyprintf/functional_programming')
4 files changed, 40 insertions, 0 deletions
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 <stddef.h> + +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); + } +} |
