আমার সহকর্মী, জিমি সি / সি ++ তে দারুণ নতুন। তিনি ধীর ধাত্রীও kind এখন, সত্যি বলতে, তার কোডটি সর্বদা সংকলন করে তবে তার কিছু সত্যই opড়ু অভ্যাস রয়েছে। উদাহরণস্বরূপ, সকলেই জানেন যে আপনি এই জাতীয় অ্যারে সংজ্ঞায়িত করতে পারেন:
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;
আমি কোড-রিভিউতে তার জন্য এটি ঠিক করে রাখছি, তবে সে শিখবে না। সুতরাং আমি আপনাকে এমন একটি সরঞ্জাম লিখতে চাই যা সে যখন প্রতিশ্রুতি দেয় তখন স্বয়ংক্রিয়ভাবে তার জন্য এটি করে ¹
চ্যালেঞ্জ
আমি চাই আপনি একটি সম্পূর্ণ প্রোগ্রাম বা এমন একটি ফাংশন লিখুন যা মাল্টলাইন স্ট্রিংটিকে ইনপুট হিসাবে গ্রহণ করে এবং সি অ্যারের আরও কমপ্যাক্ট সংস্করণকে আউটপুট করে। ইনপুট সর্বদা এই বিন্যাসটি অনুসরণ করবে , শ্বেত স্পেস অন্তর্ভুক্ত:
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;
সংক্ষেপে, ইনপুটটি সর্বদা বৈধ এবং সঠিকভাবে সংজ্ঞায়িত হবে সি আরও বিশদে:
সনাক্তকারীদের সবগুলি কেবলমাত্র অক্ষর এবং আন্ডারস্কোর দিয়ে তৈরি করা হবে। দৈর্ঘ্য সর্বদা সর্বনিম্ন এক হবে এবং কোনও অনুপস্থিত বা সীমাবদ্ধ সূচকগুলির বাইরে কখনও হবে না। আপনি অনুমানও করতে পারেন যে সূচীগুলি ক্রমযুক্ত। উদাহরণ স্বরূপ:
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, ফাংশন আর্গুমেন্ট এবং রিটার্ন মান, ফাইল পড়া এবং লেখার ইত্যাদি স্ট্যান্ডার্ড লুফোলগুলি প্রয়োগ করে। বাইটের সংক্ষিপ্ত উত্তরটি জিতল!
এটি প্যাসিভ-আক্রমণাত্মক এবং একটি ভয়ানক ধারণা। তুমি করেছ না আমার কাছ থেকে এই ধারণা পান।