제 동료 인 Jimmy 는 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입니다.
모든 식별자는 문자와 밑줄로 구성됩니다. 길이는 항상 최소 1 개이며 범위 인덱스가 없거나 누락되지 않습니다. 인덱스가 순서대로 있다고 가정 할 수도 있습니다. 예를 들면 다음과 같습니다.
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
모두 유효하지 않은 입력이므로 제출시 정의되지 않은 동작이 발생할 수 있습니다. 또한 모든 숫자가 유효한 10 진수 (음수 또는 양수)라고 가정 할 수 있습니다. 입력에 외부 공간이 없습니다. 출력은 항상 공백을 포함하여이 형식을 따라야합니다.
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, 함수 인수 및 리턴 값, 파일 읽기 및 쓰기 등과 같은 합리적인 형식으로 입력 및 출력을 취할 수 있습니다. 표준 허점이 적용됩니다. 바이트 단위의 최단 답변이 승리합니다!
¹ 이것은 수동적이고 공격적이고 끔찍한 아이디어입니다. 당신은 않았다 하지 나에서이 아이디어를 얻을.