From cf87e5f67ae18767b933edb3b1371696f6b1c582 Mon Sep 17 00:00:00 2001 From: Matthew Sotoudeh Date: Fri, 7 Oct 2022 12:46:02 -0700 Subject: algorithms --- alg_l.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 alg_l.c (limited to 'alg_l.c') diff --git a/alg_l.c b/alg_l.c new file mode 100644 index 0000000..94cd548 --- /dev/null +++ b/alg_l.c @@ -0,0 +1,41 @@ +#include +#include +#include + +int main(int argv, char **argc) { + if (argv < 3) { + assert(argv > 0); + printf("Usage: %s [n] [t]\n", argc[0]); + return -1; + } + + size_t n = atoi(argc[1]), + t = atoi(argc[2]); + + size_t *c = calloc(t + 3, sizeof(*c)); + +L1_initialize: + for (size_t j = 1; j <= t; j++) + c[j] = j - 1; + c[t + 1] = n; + c[t + 2] = 0; + +L2_visit: + for (size_t j = t; j >= 1; j--) + printf("%lu ", c[j]); + printf("\n"); + +L3_find_j: + size_t j = 1; + while (c[j] + 1 == c[j + 1]) { + c[j] = j - 1; + j = j + 1; + } + +L4_maybe_done: + if (j > t) return 0; + +L5_increase_c_j: + c[j] = c[j] + 1; + goto L2_visit; +} -- cgit v1.2.3