5 مسئله برنامه‌نویسی که باید زیر یک ساعت حل کنید!

ممکن است این جمله معروف استیو جابز به گوشتان خورده باشد که:

همه افراد باید برنامه‌نویسی یاد بگیرند؛ چون فکر کردن را به آدم‌ها یاد می‌دهد.

یا این نقل قول از استیون هاوکینگ که می‌گوید:

خواه به‌ دنبال کشف رموز جهان باشید و خواه به‌ دنبال یک شغل در قرن بیست‌ و یکم، اصول پایه‌ای برنامه‌نویسی یک مهارت ضروری است که باید آن را بیاموزید.

این تاکید روی یادگیری مبانی برنامه‌ نویسی طبیعی است؛ چون تقریبا هر وسیله‌ی الکترونیکی در اطراف ما، ارتباطی با برنامه‌نویسی دارد. برنامه‌نویسی، مهارتی است ترکیبی از تفکر و پیاده‌سازی. بدون تفکر مناسب نمی‌توانید مسئله را حل کنید و بدون مهارت پیاده‌سازی، عملا هیچ خروجی خاصی نداشته‌اید. وقتی می‌خواهید به عنوان برنامه‌نویس Frontend مشغول به کار شوید، مهمترین چیزی که باید به آن مسلط باشید یکی از فریم‌ورک‌های این حوزه است؛ ولی اگر می‌خواهید اسم خود را مهندس نرم‌افزار بگذارید باید توانایی حل مسائل برنامه‌نویسی را داشته باشید.

مسائلی که در ادامه مطرح می‌شوند اگرچه در نگاه اول آسان به نظر می‌رسند، اما گاهی اوقات برنامه‌نویس‌ها با چالش‌های جدی برای حل آن‌ها مواجه می‌شوند! شما هم می‌توانید توانایی حل مسئله خود را در این سوالات بسنجید. اگر نتوانستید این 5 مسئله را در کمتر از یک ساعت حل کنید، بهتر است سری به دوره‌های آموزش‌ تفکر الگوریتمی و حل مسئله کوئراکالج بزنید.

مسئله اول:

سه تابع بنویسید که یک لیست را به عنوان ورودی گرفته و حاصل‌جمع آن‌ها را با استفاده از حلقه‌ for، حلقه while و تابع بازگشتی برگرداند.

مسئله دوم:

تابعی بنویسید که دو لیست را به عنوان ورودی گرفته و اعضای آن‌ها را به صورت متناوب با هم ادغام کند و در یک لیست جدید برگرداند؛ مثلاً اگر دو لیست [a, b, c] و [3, 2, 1] را به عنوان ورودی به آن بدهیم، باید لیست [a, 1, b, 2, c, 3] را در خروجی چاپ کند.

مسئله سوم:

برنامه‌ای بنویسید که 100 جمله اول سری فیبوناچی را چاپ کند. در سری فیبوناچی هر جمله حاصل‌ِ جمع دو جمله قبل از خودش است و 10 سری اول آن به صورت ۳۴ ،۲۱ ،۱۳ ،۸ ،۵ ،۳ ،۲ ،۱ ،۱ ،۰ می‌باشد.

مسئله چهارم:

تابعی بنویسید که لیستی از اعداد صحیح غیر منفی را بگیرد و با کنار هم قرار دادن آن‌ها بزرگ‌ترین عدد ممکن را برگرداند؛ مثلاً وقتی لیست [50 ,2 ,1 ,9] را می‌گیرد، باید عدد 95021 را برگرداند.

مسئله پنجم:

تابعی بنویسید با گذاشتن + و - یا هیچ اپراتوری بین اعداد 1 تا 9 (دقیقاً به همین ترتیب) همه‌ی چندجمله‌ای‌هایی را بسازد که پاسخ آن‌ها 100 است.

به طور مثال داریم: 100 = 9 + 8 - 67 + 5 - 34 + 2 + 1



حل کردن معما یا مسائل برنامه‌نویسی یکی از راه‌هایی هست که می‌توانید با استفاده از آن مهارت‌های برنامه‌نویسی خودتان را بهبود بدهید. مخصوصا اگر یادگیری زبان برنامه‌نویسی جدیدی را شروع کرده‌اید، با استفاده از حل کردن مسائل مختلف می‌توانید سریع‌تر به آن زبان مسلط شوید. حتی اگر برایتان ساده به نظر می‌رسد، شما هم مسائل بالا را امتحان کنید. مدت زمانی که حل مسائل طول کشید را حساب کنید و در قسمت نظرات همین پست با بقیه به اشتراک بگذارید.

>> پاسخ سوالات را طی یک هفته آینده در همین پست به روز می‌کنیم.

ترجمه بر اساس:

"Five programming problems every Software Engineer should be able to solve in less than 1 hour" by Santiago L. Valdarrama @ Shifted Up

کوئرامگ مجله‌ای تخصصی برای توسعه‌دهندگان است که هر هفته با مطلب‌هایی در زمینه تکنولوژی، رشد فردی و آینده برنامه‌نویسی به‌روزرسانی می‌شود. برای اطلاع از آخرین مطلب‌های ما، می‌توانید اکانت توئیتر یا کانال تلگرام ما را دنبال کنید.