The aim of this puzzle, is to print a term of the Conway sequence or Look and Say sequence. It is just a matter of string manipulation.
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- int main(int argc, char **argv)
- {
- int R, L;
- scanf("%d\n%d\n", &R, &L);
- char line[10000];
- char newline[10000];
- sprintf(newline, "%d", R);
- for (int i = 1; i < L; i++) {
- /* copies the last known term of the sequence in 'line'
- the next term will be stored into 'newline'*/
- strncpy(line, newline, 10000);
- char *token;
- char *iter = newline;
- int val = -1;
- int count = 0;
- /* Parses the last known term
- updating the number of consecutive identical digits
- and printing when the digit changes*/
- token = strtok(line," ");
- while (token != NULL) {
- int current = atoi(token);
- if (current == val)
- count++;
- else {
- if (count != 0)
- iter += sprintf(iter, "%d %d ", count, val);
- val = current;
- count = 1;
- }
- token = strtok(NULL," ");
- }
- sprintf(iter, "%d %d\n", count, val);
- }
- printf(newline);
- return EXIT_SUCCESS;
- }