#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define MARKUP_LEN 7
void place_char(char *string, char toPlace, int index, bool reg) {
switch (reg) {
case true:
string[index] = toPlace;
break;
case false:
string[index] = '[';
string[index + 1] = toPlace;
string[index + 2] = ']';
break;
default:
}
}
int main(void) {
char buffer[1025];
while (fgets(buffer
, 1025, stdin
) != NULL
) { if (buffer
[strlen(buffer
) - 1] == '\n') { buffer
[strlen(buffer
) - 1] = '\0'; }
size_t orig_str_len
= strlen(buffer
); char *new_string
= calloc(orig_str_len
* 4 + 1, sizeof(char)); short markup = 1;
int i = 0;
unsigned int index;
for (index = 0; index < orig_str_len; index++) {
if (buffer[index] != ' ') {
place_char(new_string, '0' + markup, i, false);
i += 3;
} else {
markup--;
}
place_char(new_string, buffer[index], i, true);
i += 1;
markup++;
if (markup > MARKUP_LEN)
markup = 1;
}
printf("\tOriginal: %s\n\tRainbow: %s\n", buffer
, new_string
); }
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgkjaW5jbHVkZSA8c3RkbGliLmg+CgkjaW5jbHVkZSA8c3RyaW5nLmg+CgkjaW5jbHVkZSA8c3RkYm9vbC5oPgoKCSNkZWZpbmUgTUFSS1VQX0xFTiAgICAgIDcKCgl2b2lkIHBsYWNlX2NoYXIoY2hhciAqc3RyaW5nLCBjaGFyIHRvUGxhY2UsIGludCBpbmRleCwgYm9vbCByZWcpIHsKCQlzd2l0Y2ggKHJlZykgewoJCQljYXNlIHRydWU6CgkJCQlzdHJpbmdbaW5kZXhdID0gdG9QbGFjZTsKCQkJCWJyZWFrOwoJCQljYXNlIGZhbHNlOgoJCQkJc3RyaW5nW2luZGV4XSA9ICdbJzsKCQkJCXN0cmluZ1tpbmRleCArIDFdID0gdG9QbGFjZTsKCQkJCXN0cmluZ1tpbmRleCArIDJdID0gJ10nOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQ6CgkJCQlmcHJpbnRmKHN0ZGVyciwgImVycm9yXG4iKTsKCQl9Cgl9CgoJaW50IG1haW4odm9pZCkgewoJCWNoYXIgYnVmZmVyWzEwMjVdOwoJCXdoaWxlIChmZ2V0cyhidWZmZXIsIDEwMjUsIHN0ZGluKSAhPSBOVUxMKSB7CgkJCWlmIChidWZmZXJbc3RybGVuKGJ1ZmZlcikgLSAxXSA9PSAnXG4nKSB7CgkJCQlidWZmZXJbc3RybGVuKGJ1ZmZlcikgLSAxXSA9ICdcMCc7CgkJCX0KCQkJc2l6ZV90IG9yaWdfc3RyX2xlbiA9IHN0cmxlbihidWZmZXIpOwoJCQljaGFyICpuZXdfc3RyaW5nID0gY2FsbG9jKG9yaWdfc3RyX2xlbiAqIDQgKyAxLCBzaXplb2YoY2hhcikpOwoJCQlzaG9ydCBtYXJrdXAgPSAxOwoJCQlpbnQgaSA9IDA7CgkJCXVuc2lnbmVkIGludCBpbmRleDsKCQkJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgb3JpZ19zdHJfbGVuOyBpbmRleCsrKSB7CgkJCQlpZiAoYnVmZmVyW2luZGV4XSAhPSAnICcpIHsgCgkJCQkJcGxhY2VfY2hhcihuZXdfc3RyaW5nLCAnMCcgKyBtYXJrdXAsIGksIGZhbHNlKTsKCQkJCQlpICs9IDM7CgkJCQl9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXAtLTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCQkJCXBsYWNlX2NoYXIobmV3X3N0cmluZywgYnVmZmVyW2luZGV4XSwgaSwgdHJ1ZSk7CgkJCQlpICs9IDE7CgkJCQltYXJrdXArKzsKCQkJCWlmIChtYXJrdXAgPiBNQVJLVVBfTEVOKQoJCQkJCW1hcmt1cCA9IDE7CgkJCX0KCQkJcHJpbnRmKCJcdE9yaWdpbmFsOiAlc1xuXHRSYWluYm93OiAlc1xuIiwgYnVmZmVyLCBuZXdfc3RyaW5nKTsKCQkJZnJlZShuZXdfc3RyaW5nKTsKCQl9CgkJcmV0dXJuIEVYSVRfU1VDQ0VTUzsKCX0=