0
Pls explain this program(lock and say sequence)
#include <stdio.h> #include <stdlib.h> int main() { char *a = malloc(2), *b = 0, *x, c; int cnt, len = 1; for (sprintf(a, "1"); (b = realloc(b, len * 2 + 1)); a = b, b = x) { puts(x = a); for (len = 0, cnt = 1; (c = *a); ) { if (c == *++a) cnt++; else if (c) { len += sprintf(b + len, "%d%c", cnt, c); cnt = 1; } } } return 0; } Output be like If input is 5 1 11 //only 1 one in first line 21//two 1 in second line 1211// one 2 and one 1 in third line 111221//one 1 one 2 two 1 in fourth line
1 Respuesta
+ 1
That is some crazy awful code you got here ...
The for loop initialize a to "1".
The "condition" for the loop to stop is also used to assign b using realloc
The "iteration" of the for loop is used to assign b to a and x to b (in this order)
the puts will print a value AND assign a to x
Second for loop, initialize len and cnt, use the first character of a as a stopping condition and ... no iteration ...
This for loop will count the number of times a character occur in a string sequence
I have two hypothesis for this code ... either it was made for a code golf or to hurt people. It is not a professional code as its readability is ... awful and so does its maintainability
Do not follow this guy's lead ! (If it is a code golf code and you want to do some yourself, then do not follow what I just said :p )