Мой коллега, Джимми , немного новичок в C / C ++. Он также немного медленный ученик. Теперь, чтобы быть справедливым, его код всегда компилируется, но у него есть некоторые действительно небрежные привычки. Например, все знают, что вы можете определить массив следующим образом:
int spam[] = {4, 8, 15, 16, 23, 42};
Все, кроме Джимми. Он убежден, что единственный способ создать массив - это так:
int spam[6];
spam[0] = 4;
spam[1] = 8;
spam[2] = 15;
spam[3] = 16;
spam[4] = 23;
spam[5] = 42;
Я продолжаю исправлять это для него в обзоре кода, но он не научится. Поэтому мне нужно, чтобы вы написали инструмент, который автоматически делает это для него, когда он совершает коммит ».
Соревнование
Я хочу, чтобы вы написали либо полную программу, либо функцию, которая принимает многострочную строку в качестве входных данных и выводит более компактную версию массива C. Ввод всегда будет следовать этому формату, включая пробелы:
identifier_one identifier_two[some_length];
identifier_two[0] = some_number;
identifier_two[1] = some_number;
identifier_two[2] = some_number;
...
identifier_two[some_length - 1] = some_number;
Короче говоря, ввод всегда будет действительным и четко определенным C. Более подробно:
Все идентификаторы будут состоять только из букв и подчеркиваний. Длина всегда будет по крайней мере одна, и никогда не будет отсутствующих или выходящих за пределы индексов. Вы также можете предположить, что индексы в порядке. Например:
foo bar[3];
bar[0] = 1
bar[2] = 9;
foo bar[1];
bar[0] = 1;
bar[1] = 3;
а также
foo bar[3];
bar[2] = 9;
bar[0] = 1
bar[1] = 3
все недопустимые данные и могут привести к неопределенному поведению в вашей заявке. Вы также можете предположить, что все числа будут действительными десятичными числами, отрицательными или положительными. На входе не будет посторонних пробелов. Вывод должен всегда следовать этому формату, включая пробелы:
identifier_one identifier_two[] = {n1, n2, n3, ...};
Вот некоторые примеры данных:
Input:
spam eggs[10];
eggs[0] = 0;
eggs[1] = 4;
eggs[2] = 8;
eggs[3] = -3;
eggs[4] = 3;
eggs[5] = 7;
eggs[6] = 888;
eggs[7] = 555;
eggs[8] = 0;
eggs[9] = -2;
Output:
spam eggs[] = {0, 4, 8, -3, 3, 7, 888, 555, 0, -2};
Input:
char ans[2];
ans[0] = 52;
ans[1] = 50;
Output:
char ans[] = {52, 50};
Input:
blah_blah quux[1];
quux[0] = 105;
Output:
blah_blah quux[] = {105};
Вы можете осуществлять ввод и вывод в любом приемлемом формате, таком как STDIN / STDOUT, аргументы функций и возвращаемое значение, чтение и запись файлов и т. Д. Применяются стандартные лазейки. Самый короткий ответ в байтах побеждает!
«Это пассивно-агрессивная и ужасная идея. Вы не получили эту идею от меня.