Мій колега, Джиммі , якийсь новичок 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, аргументи функції та повернене значення, читання та запис файлів тощо. Застосовуються стандартні лазівки. Найкоротша відповідь у байтах виграє!
¹Це пасивно-агресивна і жахлива ідея. Ви не отримали від мене цієї ідеї.