یکی از بهترین راههای بهبود مهارتهای برنامه نویسی و برنامه نوشتن این است که به طور مرتب معماها و یا مسائل برنامه نویسی را حل کنید. به ویژه اگر زبان برنامه نویسی جدیدی را یاد گرفته باشید، با استفاده از حل کردن مشکلات رایج و مسائل مختلف میتوانید سریعتر به آن زبان مسلط شوید. برای اینکه کار شما را کمی سادهتر کنیم، در این مقاله، سایتهای حل تمرین برنامه نویسی را به اشتراک میگذاریم که معماها و مسالههای زیادی را فراهم میکنند و میتوانید مهارتهای خود را با حل این مسائل با هر زبانی که میشناسید افزایش دهید. توجه داشته باشید که همهی امکانات موجود در این وب سایتها رایگان نیست؛ همچنین برخی از این وب سایتها به طور منظم رقابتهای سازماندهی شدهای را برگزار میکنند و اگر مهارتهای خوبی داشته باشید، میتوانید حتی جوایز نقدی هم بگیرید.
سایت 1 - Programming Praxis

Programming Praxis یک وبلاگ است که شامل تعدادی مسئله و مشکل جذاب به همراه راه حل میباشد. میتوان مسائل مربوط به این حوزههای مختلف را ابتدا با روش خود حل کرده و سپس از راه حلهای ارائه شده در آن کمک بگیرید و نتیجه کار خود را بررسی کنید. مسائل این سایت بهطور معمول با زبانهای مختلفی قرار داده میشود.
سایت 2 - CodeKata

این وبلاگ که توسط دیو توماس نوشته شده است، ( نویسندهی کتاب Pragmatic Programmer) شامل مسائل بسیاری است که بهطور مستقیم با برنامه نویسی دنیای واقعی مرتبط هستند، بنابراین این وب سایت فرصت خوبی است تا مهارتهای کدنویسی خود را بهبود دهید.
سایت 3 - TopCoder

TopCoder یکی از بسترهای اصلی برنامه نویسی رقابتی است. این سایت یک فهرست از چالشهای الگوریتمی را (از گذشته تا کنون) فراهم میکند که با استفاده از آن میتوان به طور مستقیم و با استفاده از ویرایشگر، به صورت آنلاین کد نوشت و به کار خود ادامه دهید. در اصل Topcoder یک اجتماع یا انجمن فعال از برنامه نویسان هست که دوست دارند مسائل مختلف رو حل کنند. چالشهای زیاد جدید و فعالی وجود دارد که میتوان روی آنها فکر کرده و برخی از آنها جوایز نقدی نیز دارند.
کاربران رده بالا در TopCoder برنامه نویسان رقابتی بسیار خوبی هستند و به طور منظم در رقابتهای برنامه نویسی شرکت میکنند. همچنین یکی از برترین کاربران که همواره در بالای جدول ردهبندی قرار دارد (فعلا اول است) پتر میتریچف (Petr Mitrichev) نام دارد. این کاربر یک وبلاگ شخصی با نام الگوریتمهای هفتگی (Algorithms Weekly) دارد که هر هفته در آن در مورد رقابتهای کد نویسی، الگوریتمها، ریاضی و سایر موارد مربوط مینویسد.
سایت 4 - Coderbyte

Coderbyte نیز یک سایت حل مسائل برنامه نویسی است. این وب سایت تعداد زیادی چالش کد نویسی را ارائه میدهد که شما میتوانید بهصورت مستقیم با یکی از 12 زبان برنامه نویسی مانند جاوا، جاوا اسکریپت، پایتون، سی شارپ، سی پلاس پلاس و .... آن را حل کنید. این چالشها از درجهی آسان (مانند پیدا کردن بزرگترین کلمه در یک رشته) به درجهی سخت (چاپ حداکثر رابطهی منطقی در گراف) مرتب شدهاند. این وب سایت همچنین مجموعهای از برنامههای آموزشی، ویدیوهای مقدماتی، دورههای آمادهسازی و مصاحبهها را فراهم میکند. بر خلاف HackerRank و دیگر وب سایتهای مشابه، شما میتوانید نمونه سوالات حل شده برنامه نویسی جاوا، نمونه مسائل حل شده پایتون و سایر زبانها را بررسی کرده و راه حل هایی که کاربران دیگر برای هر چالشی نوشتهاند و همچنین راهحلهای رسمی ارسالشده توسط Coderbyte را مشاهده کنید.
سایت 5 - Project Euler

این وب سایت مجموعهی بزرگی از چالشها را در حوزه علوم کامپیوتر و ریاضیات ارایه میدهد. این چالشها معمولا شامل حل مسائل برنامه نویسی و نوشتن یک برنامهی کوچک برای تبدیل کردن راهحل به یک فرمول یا معادلهی ریاضی هوشمندانه مانند پیدا کردن مجموع ارقام اعداد قبل از یک عدد در یک دنباله است. در Project Euler نیز مسائل از ساده تا خیلی سخت قرار داده شدهاند.
البته باید توجه داشت که نمیتوان بهطور مستقیم کد را در ویرایشگر آنلاین این وب سایت نوشت، بنابراین باید راهحل را بر روی کامپیوتر خود نوشته و اجرا بگیرید و سپس راهحل را در وب سایت بارگذاری کنید.
سایت 6 - HackerRank

HackerRank یکی از پرطرفدارانترین وب سایت هاست که چالشهای متعددی را برای چندین حوزهی مختلف از قبیل الگوریتم ها، ریاضیات، SQL، برنامهنویسی تابعی، AI، و بیشتر فراهم میکند. شما میتوانید با ثبتنام در آن، همهی چالشها را بهطور مستقیم و بهصورت آنلاین حل کنید. وب سایت امکان بحث و leaderboard را برای هر چالشی فراهم میکند و اغلب چالشها با سر مقاله همراه هستند که بیشتر در مورد چالش و نحوهی برخورد با آن به وسیلهی یک راهحل را توضیح میدهد. اما باید بدانید که بهجز سرمقاله، شما نمیتوانید راهحلهای دیگر کاربران را در وب سایت مشاهده کنید. HackerRank همچنین به کاربران این امکان را میدهد تا برنامههای خود را ارسال کنند و با توجه به امتیازات هر کاربر میتواند شغل جدیدی بدست آورد.
سایت 7 - CodinGame

CodinGame یکی از جذابترین وب سایتهای پیشنهادی این مقاله است که کمی متفاوت از دیگر وب سایتها است، زیرا به جای آن که کاربر در آن چالشهای کدنویسی را در یک ویرایشگر حل کند، در نوشتن کد بازیهای آنلاین شرکت میکند. برای مشارکت در نوشتن کد بازی، ابتدا یک مشکل (مانند جستوجوی دودویی) توصیف میشود و سپس نمونههای آزمایشی و یک ویرایشگر داده میشود که در آن میتوانید کد خود را در یکی از زبانهای برنامه نویسی پیشنهاد شده بنویسید. نتیجه در قالب بازی به نمایش درمیآید.
اگرچه این وب سایت متفاوت از وب سایتهای برنامهنویسی رقابتی معمولی است و مانند آنهایی که در بالا ذکر شدند نمیباشد، اما هنوز هم در میان برنامه نویسانی که از حل چالشها و شرکت در مسابقات لذت میبرند، محبوب است.
سایت 8 - CodeChef

CodeChef یک وب سایت برنامهنویسی رقابتی در هند است که صدها چالش را فراهم میکند و شما میتوانید کد را در ویرایشگر آنلاین خود وب سایت بنویسید. مجموعهی چالشها بسته به سطح مهارت شما به دستههای مختلف تقسیم میشوند. همچنین یک جامعهی بزرگ از کدنویسان در وب سایت وجود دارد که در قالب انجمنها به افراد کمک میکنند، برنامههای آموزشی مینویسند و در رقابتهای کدنویسی CodeChef شرکت میکنند.
سایت 9 - Exercism

Exercism یک وب سایت چالش برنامهنویسی است که بالای ۳۱۰۰ چالش را بین ۵۲ زبان برنامهنویسی مختلف ارایه میدهد. بعد از انتخاب زبانی که میخواهید در آن حرفهای شوید، با چالشهای کدنویسی روبه رو خواهید شد. با این حال، این وب سایت کمی متفاوت از دیگر وب سایتهای رقیب است، زیرا شما پس از تکمیل هر چالش با یک مربی کار میکنید. مربی پاسخهای شما را به صورت آنلاین بررسی میکند و به شما کمک میکند. زمانی که پاسخهای شما ارسال و تایید شود، وب سایت چالشها بیشتری را باز خواهد کرد.
سایت 10 - Codewars

Codewars مجموعهی بزرگی از چالشهای کدنویسی توسط جامعهی برنامه نویسان خود را ارائه میدهد. شما میتوانید این چالشها را بهصورت مستقیم و آنلاین با یکی از زبانهای برنامه نویسی در ویرایشگر این وب سایت حل کنید. همچنین امکان بحث و گفتوگو برای هر چالش و نیز مشاهدهی راهحلهای کاربران مختلف مانند نمونه مسائل حل شدهی پایتون وجود دارد.
[rlink pid=64872]سایت 11 - LeetCode

LeetCode یک وب سایت محبوب آنلاین است که لیستی از ۱۹۰ چالشی که میتوانند به شما در آمادهسازی برای مصاحبههای فنی و شغلی کمک کند، ارائه میدهد. شما میتوانید این چالشها را مستقیما با یکی از ۹ زبان برنامهنویسی در ویرایشگر خود وب سایت حل کنید. البته باید توجه داشت که قادر به مشاهدهی راهحلهای دیگر کاربران نیستید، اما برای مقایسهی سرعت اجرای راهحلهای خودتان با کد کاربران دیگر امکاناتی در نظر گرفته شده است.
این وب سایت همچنین یک بخش مصاحبهی آزمایشی دارند که به طور خاص برای آمادهسازی مصاحبهی شغلی است. برگزاری رقابتهای کدنویسی و بخش مقالات آموزشی به شما کمک میکنند تا با خطاها و مشکلات مربوط به این حوزه آشنا شده و راهحلها را بهتر درک کنید.
سایت 12 - SPOJ

یکی دیگر از وب سایتهای رقابتی این حوزه است که بیش از ۲۰ چالش کدنویسی را ارائه میدهد. شما میتوانید کد خود را تحت ویرایشگر آنلاین خود وب سایت ارسال کنید. علاوه بر آن، SPOJ بخش مشخصی برای کاربران دارد تا درباره چالشهای کدنویسی بحث و تبادل نظر کنند، هرچند در حال حاضر برخلاف سایر وب سایتهای رقیب، هیچ راهحل رسمی برای حل سوالات ارائه نمیکنند.
سایت 13 - Python Challenge

در Python Challenge یک سایت حل تمرین برنامه نویسی پایتون است که برای یادگیری و تمرین برنامه نویسی پایتون بسیار مناسب میباشد. از شما خواسته میشود تا تمرینات برنامه نویسی پایتون و یا مشکلات خاص برنامه نویسی را حل کنید. این مشکلات از سطح ساده تا سخت دسته بندی شدهاند و با استفاده از آنها میتوانید مهارت خود را به خوبی ارتقا دهید. این وبسایت برای کسانی که به دنبال تمرین پایتون با جواب و نمونه سوال پایتون با جواب هستند بسیار مفید است.
سایت 14 - Al Zimmermann's

Al Zimmermann's سایتی است که هر 6 ماه یکبار یک رقابت را بین برنامه نویسان راه انداخته و میتوانید در آن شرکت کنید و جایزه دریافت کرده و قدرت حل مسئله خود را محک بزنید.
سایت 15 - Ruby Quiz

Ruby Quiz مجموعه ای از تعدادی مسئله یا رقابت هست که مربوط به زبان Ruby هستند و شما میتوانید آنها را حل کنید. هر چند که این موارد برای روبی هستند ولی این امکان وجود دارد که برای دیگر زبانها نیز مسائل را حل کرده و تست کنید.
سایت 16 - C Puzzles

در سایت C Puzzles تعدادی معما یا مسئله قرار داده شده است که مربوط به زبان برنامه نویسی C هستند و میتوانید آنها را حل کنید. برای هر مسئله یک راهنما یا Hint نیز قرار داده شده است که برای کمک گرفتن از آنها استفاده میشود.
سایت 17 - Prolog Problems

در سایت Prolog Problems مسائل مربوط به زبان Prolog قرار داده شده ولی راه حلها در زبانهای دیگر از جمله Python و Ruby و Haskell و Scala و ... نیز قابل قبول است. با کار کردن با این موارد میتوانید یک زبان جدید را به راحتی یاد بگیرید.
[note] اگر به برنامه نویسی علاقهمند هستی و نمیدونی از کجا باید شروع کنی بهترین پیشنهاد ما برای آموزش برنامه نویسی ، دوره الفبای برنامه نویسی سون لرن است . حتما به صفحه دوره سربزنید. [/note]جمعبندی
توانایی حل مساله یکی از بنیادیترین موارد برای شروع برنامه نویسی و مسلط شدن در آن است. لذا در این مقاله وب سایت هایی را معرفی کردیم تا به شما در تست کردن و بهبود بخشیدن حل مسائل برنامه نویسی کمک کرده و قدرت فکر و حل مشکل را بهبود بخشد. آیا سایت مشابه دیگری سراغ دارید که در آن مسائل و معماهای برنامه نویسی قرار داده شده باشد؟ خوشحال میشویم آن را در بخش نظرات معرفی کرده و با ما و سایر کاربران به اشتراک بذارید.