// Copyright (C) 2011 Toby Thain, toby@telegraphics.com.au // Programming Praxis problem: // http://programmingpraxis.com/2011/03/15/look-and-say/ // NOT WRITTEN FOR CLARITY. COMMENTS COST EXTRA. NO WARRANTY. #include #include #define M 1000 // limit of sequence length int main(){ char *p1 = malloc(M), *p2 = malloc(M), *p, *q, *t, d; int m, n; p1[0] = '1'; p1[1] = 0; for(; ; t = p1, p1 = p2, p2 = t){ for(p = p1, q = p2, n = 0; *p;){ for(m = 1, d = *p++; *p == d; ++m, ++p) ; n += 2; if(n >= M) return EXIT_SUCCESS; // buffer limit *q++ = m+'0'; *q++ = d; } *q = 0; puts(p2); } }