diff --git a/ex08/ft_print_combn.c b/ex08/ft_print_combn.c new file mode 100644 index 0000000..9cc67ec --- /dev/null +++ b/ex08/ft_print_combn.c @@ -0,0 +1,68 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_print_reverse_alphabet.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: tischmid +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/03/15 21:50:37 by tischmid #+# #+# */ +/* Updated: 2023/03/16 05:00:01 by tischmid ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include + +void print_ns(char *n_str, int n_str_len, int max_len) +{ + char new_n_str[10]; + char digit; + int i; + + i = 0; + while (i < n_str_len) + { + new_n_str[i] = n_str[i]; + i++; + } + if (i > 0) + digit = n_str[i - 1] + 1; + else + digit = '0'; + if (n_str_len == max_len) + { + write(1, n_str, n_str_len); + if (n_str[0] != 10 - max_len + 0x30) + write(1, ", ", 2); + return ; + } + while (digit <= '9') + { + new_n_str[n_str_len] = digit; + new_n_str[n_str_len + 1] = '\0'; + print_ns(new_n_str, n_str_len + 1, max_len); + digit++; + } +} + +void ft_print_combn(int n) +{ + char n_str[10]; + int i; + + i = 0; + while (i < 10) + { + n_str[i] = '\0'; + i++; + } + print_ns(n_str, 0, n); +} + +/* //// +int main(void) +{ + ft_print_combn(9); + return (0); +} +*/ ////