Đồng nghiệp của tôi, Jimmy là một người mới đối với C / C ++. Anh ấy cũng là một người học chậm. Bây giờ, để công bằng, mã của anh ta luôn biên dịch, nhưng anh ta có một số thói quen thực sự cẩu thả. Ví dụ, mọi người đều biết rằng bạn có thể định nghĩa một mảng như thế này:
int spam[] = {4, 8, 15, 16, 23, 42};
Tất cả mọi người, ngoại trừ Jimmy. Ông tin chắc rằng cách duy nhất để tạo ra một mảng là như thế này:
int spam[6];
spam[0] = 4;
spam[1] = 8;
spam[2] = 15;
spam[3] = 16;
spam[4] = 23;
spam[5] = 42;
Tôi tiếp tục sửa lỗi này cho anh ta trong phần đánh giá mã, nhưng anh ta sẽ không học. Vì vậy, tôi cần bạn viết một công cụ tự động làm điều này cho anh ta khi anh ta cam kết.
Các thách thức
Tôi muốn bạn viết một chương trình đầy đủ hoặc một hàm lấy chuỗi đa dòng làm đầu vào và xuất ra phiên bản nhỏ gọn hơn của mảng C. Đầu vào sẽ luôn theo định dạng này, bao gồm khoảng trắng:
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;
Nói tóm lại, đầu vào sẽ luôn hợp lệ và được xác định rõ C. Chi tiết hơn:
Tất cả các định danh sẽ được tạo thành chỉ bằng các chữ cái và dấu gạch dưới. Độ dài sẽ luôn có ít nhất một, và sẽ không bao giờ có bất kỳ chỉ số nào bị thiếu hoặc nằm ngoài giới hạn. Bạn cũng có thể cho rằng các chỉ mục theo thứ tự. Ví dụ:
foo bar[3];
bar[0] = 1
bar[2] = 9;
foo bar[1];
bar[0] = 1;
bar[1] = 3;
và
foo bar[3];
bar[2] = 9;
bar[0] = 1
bar[1] = 3
là tất cả các đầu vào không hợp lệ và có thể gây ra hành vi không xác định trong trình của bạn. Bạn cũng có thể cho rằng tất cả các số sẽ là số thập phân hợp lệ, âm hoặc dương. Đầu vào sẽ không có không gian bên ngoài. Đầu ra phải luôn theo định dạng này, bao gồm khoảng trắng:
identifier_one identifier_two[] = {n1, n2, n3, ...};
Đây là một số dữ liệu mẫu:
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};
Bạn có thể lấy đầu vào và đầu ra của mình ở bất kỳ định dạng hợp lý nào, chẳng hạn như STDIN / STDOUT, đối số hàm và giá trị trả về, đọc và ghi tệp, v.v. Câu trả lời ngắn nhất bằng byte thắng!
¹Đây là thụ động-tích cực và là một ý tưởng khủng khiếp. Bạn đã không nhận được ý tưởng này từ tôi.