Arvorezinha 2.0 – No explicit loops nor conditions, C99 & POSIX Compliant
Cá vai uma arvorezinha 2.0 totalmente inútil em C, sem loops nem condições (pelo menos, explicitamente)... um verdadeiro apedrejamento aos rins dos recursos. No entanto, está compliant com C99 e POSIX. Não está à prova de numeros demasiado grandes para o seu tamanho... receberão um exit status 1 caso se exceda o temporary size max e uma arvorezinha bem destruida.
Deixando-me de lengalengas... aqui vai:
-- EDIT: Nova versão do code. Não valia a pena criar outro post com mais do mesmo, portanto editei aqui mesmo.
#include <stdio.h> #include <signal.h> #include <stdlib.h> #include <string.h> #define TEMPORARY_SIZE_MAX 128 int n, l, magic = 0; void bye(void); void bazinga(void); void draw_bottom(void); void draw_top(void); void (*magic_matrix[2][2]) (void) = { { &bazinga, &draw_top }, { &bye, &draw_bottom } }; void sigsegv_syntax(int s) { printf("Invalid syntax.\n"); exit(EXIT_FAILURE); } void sigsegv_toolarge(int s) { printf("Value too large.\n"); exit(EXIT_FAILURE); } void bye(void) { exit(EXIT_SUCCESS); } void bazinga(void) { n = l; magic++; draw_bottom(); } void draw_bottom(void) { printf("\x1b[%dC\x1b[%dD", (l / 2) * (n & 1) + 1, !(n & 1)); fwrite(memset((char [TEMPORARY_SIZE_MAX]) { }, 0x23, TEMPORARY_SIZE_MAX), n & 1, l - !(l & 1), stdout); fwrite("\n", n & 1, 1, stdout); magic_matrix[magic][!!--n](); } void draw_top(void) { printf("\x1b[%d%c", n - 1, 0x43 + !(n - 1)); fwrite(memset((char [TEMPORARY_SIZE_MAX]) { }, 0x2A, TEMPORARY_SIZE_MAX), 1, (((l - n) + 1) * 2) - 1, stdout); putchar('\n'); magic_matrix[magic][!!--n](); } int main(int argc, char *argv[]) { signal(SIGSEGV, &sigsegv_syntax); n = l = atoi(argv[1]); signal(SIGSEGV, &sigsegv_toolarge); draw_top(); return EXIT_SUCCESS; }
PoC:
# gcc -Wall --std=c99 -o arv2 arv2.c # ./arv2 15 * *** ***** ******* ********* *********** ************* *************** ***************** ******************* ********************* *********************** ************************* *************************** ***************************** ############### ############### ############### ############### ############### ############### ############### ############### # echo $? 0 #
dasssss não é pa meninos!!...