Mein Kollege Jimmy ist ein bisschen neu in C / C ++. Er lernt auch langsam. Nun, um fair zu sein, sein Code wird immer kompiliert, aber er hat einige wirklich schlampige Gewohnheiten. Zum Beispiel weiß jeder, dass Sie ein Array wie folgt definieren können:
int spam[] = {4, 8, 15, 16, 23, 42};
Alle außer Jimmy. Er ist überzeugt, dass der einzige Weg, ein Array zu erstellen, so ist:
int spam[6];
spam[0] = 4;
spam[1] = 8;
spam[2] = 15;
spam[3] = 16;
spam[4] = 23;
spam[5] = 42;
Ich repariere das für ihn in der Code-Überprüfung, aber er wird es nicht lernen. Sie müssen also ein Tool schreiben, das dies bei einem Commit automatisch für ihn erledigt¹.
Die Herausforderung
Ich möchte, dass Sie entweder ein vollständiges Programm oder eine Funktion schreiben, die eine mehrzeilige Zeichenfolge als Eingabe verwendet und die kompaktere Version des C-Arrays ausgibt. Die Eingabe folgt immer diesem Format, einschließlich Leerzeichen:
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;
Kurz gesagt, die Eingabe ist immer gültig und gut definiert C. Ausführlicher:
Alle Bezeichner bestehen nur aus Buchstaben und Unterstrichen. Die Länge wird immer mindestens eins sein, und es werden niemals Indizes fehlen oder außerhalb der Grenzen liegen. Sie können auch davon ausgehen, dass die Indizes in Ordnung sind. Beispielsweise:
foo bar[3];
bar[0] = 1
bar[2] = 9;
foo bar[1];
bar[0] = 1;
bar[1] = 3;
und
foo bar[3];
bar[2] = 9;
bar[0] = 1
bar[1] = 3
sind alle ungültigen Eingaben und können undefiniertes Verhalten in Ihrer Übermittlung verursachen. Sie können auch davon ausgehen, dass alle Zahlen gültige Dezimalzahlen sind, negative oder positive. Die Eingabe enthält keine überflüssigen Leerzeichen. Die Ausgabe sollte immer in diesem Format erfolgen, einschließlich Leerzeichen:
identifier_one identifier_two[] = {n1, n2, n3, ...};
Hier sind einige Beispieldaten:
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};
Sie können Ihre Eingabe und Ausgabe in jedem vernünftigen Format vornehmen, z. B. STDIN / STDOUT, Funktionsargumente und Rückgabewert, Dateien lesen und schreiben usw. Es gelten Standardlücken. Die kürzeste Antwort in Bytes gewinnt!
¹Das ist passiv-aggressiv und eine schreckliche Idee. Sie haben nicht diese Idee von mir.