จิมมี่ผู้ร่วมงานของฉันเป็นคนใหม่สำหรับ 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 อาร์กิวเมนต์ของฟังก์ชันและค่าส่งคืนการอ่านและการเขียนไฟล์ ฯลฯ ใช้ช่องโหว่มาตรฐาน คำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ!
“ นี่เป็นความก้าวร้าวและความคิดที่แย่มาก คุณไม่ได้รับแนวคิดนี้จากฉัน