تبلیغات
کربلا - کی میدونه ACM چیه؟

کربلا، ما را نیز در خیل کربلاییان بپذیر...

کی میدونه ACM چیه؟

 

نوع مطلب: رایانه ،

مسابقات ACM-ICPC یکی از معتبرترین مسابقات علمی در حوزه ی کامپیوتر است. این مسابقات بصورت تیمی و با هدف طراحی الگوریتم برای مسائل مطرح شده و پیاده سازی الگوریتم طراحی شده به صورت بهینه در زمان مشخصی است. در این مسابقات هر تیم از …سه عضو تشکیل شده است که باید تسلط کافی بر طراحی الگوریتم، برنامه نویسی و زبان انگلیسی داشته باشند.
تاریخچه ACM:

ACM مخفف عبارت Association for Computing Machinery است و نام اولین انجمن علوم کامپیوتر می باشد که در سال ۱۹۴۷ تاسیس شده است. ICPC  مخفف International Collegiate Programming Contest است و به نوع خاصی از مسابقات برنامه نویسی گفته می شود . اولین مسابقه رسمی ICPC توسط انجمن ACM در سال ۱۹۷۶ برگزار شد و از سال ۱۹۸۰ به بعد نظارت بر این مسابقات به دانشگاه Baylor واگذار شد. از این مسابقات استقبال گسترده ای به عمل آمد و به سرعت گسترش یافت تا جایی که در سال ۱۹۹۷، IBM به عنوان sponsor (حامی) اصلی این مسابقات معرفی شد و تعداد تیم های شرکت کننده به بیش از ۳۰۰۰ تیم از بهترین دانشجویان ۶۷ کشور دنیا رسید.
قاره آسیا از سال ۱۹۹۵ به مسابقات ACM پیوست و بعد از ۴ سال تهران نیز به عنوان یکی از سایتهای قاره آسیا پذیرفته شد. دانشگاه شریف به عنوان یکی از ۱۰ سایت آسیا تا کنون ۷ دوره مسابقه ,همه ساله در اواخر پاییز برگزار می کند. در این مسابقات تیمهایی از دانشگاههای سرتاسر آسیا از جمله دانشگاههای داخل کشور در رقابتی تنگاتنگ برای حضور در مرحله نهایی و مسابقات جهانی پا به میدان می گذارند.

مسابقات ای سی ام
 هدف و چگونگی اجرا مسابقه:

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

خوش بینانه ترین حالت ها برای جواب ها:

صحیح : برنامه تمامی( test case های) تعیین شده را با موفقیت و بدون باگ گذرانده و جواب درست است.
نادرست: برنامه به ازای یکی یا تمامی test case ها جواب نادرست داده و یا شکل خروجی شما ایده آل نیست.
خطای زمان اجرا: برنامه با Run_Time Error مواجه گردیده است.
خطای زمان کامپایل: برنامه با Compilation Error مواجه گردیده است.

زمان غیرمجاز: زمانی که برنامه شما صرف یافتن جواب می کند از حد مجاز بیشتر است. برنامه باید سریع تر داده ها راپردازش نماید.

تیمهای شرکت کننده در این مسابقات از سه عضو تشکیل می شود که بنا بر یک قانون نانوشته اما ضروری باید واجد شرایط خاصی باشند. از جمله اینکه:
۱- باید به یکی از زبانهای برنامه نویسی متداول و اعلام شده توسط کمیته اجرایی مسابقات تسلط کامل داشته باشند. این زبانها عموما C++ ، C و یا جاوا می باشند.
۲- اعضای تیم باید تسلط کافی بر مفاهیم طراحی الگوریتم ، بهینه سازی الگوریتم ، پیچیدگی الگوریتم ، ساختمان داده ها , ریاضیات گسسته و … داشته باشند.
۳- حداقل یکی از اعضای تیم باید تسلط کامل بر زبان انگلیسی داشته باشد تا بتواند سوالات را به زبان مادری ترجمه و در اختیار سایر اعضای گروه قرار دهد. ( سوالات این مسابقات در تمامی مراحل به زبان انگلیسی طرح می شود.)

۴- حداقل یکی از اعضا باید دست به تایپ خوبی داشته باشد تا بتواند الگوریتمهای طراحی شده را سریعا به کد تبدیل کند. (تمامی مراحل این مسابقات به صورت عملی و در پشت کامپیوتر برگزار می شود.)
تبدیل الگوریتم به کد خود یک مهارت بزرگ است که در واقع عامل اصلی طبقه بندی تیمها در مسابقات این چنینی محسوب می شود. در زمان مسابقه یک سیستم در اختیار هر تیم قرار می گیرد که این سه دانشجو به طور مشترک با این سیستم شروع به حل مسائل می کنند. مدت زمان هر مسابقه ۵ ساعت است و حداقل ۸ سوال در اختیار شرکت کنندگان قرار می گیرد.
پاسخ دادن به هر سوال در حقیقت نوشتن یک برنامه است. به عبارت دیگر در صورت مسئله از شرکت کنندگان خواسته می شود تا برنامه ای بنویسند که اطلاعات مشخصی را از فایل ورودی معینی، (مثلا A.in) بخوانند و پس از انجام پردازش های خاصی که در متن سوال آمده، نتیجه را در یک فایل خروجی (مثلا A.out) یا خروجی استاندارد (مانیتور) چاپ کنند.
هر دانشگاه تعدادی دانشجو با توجه به ظرفیتی که دانشگاه شریف مشخص می کند برای شرکت در مسابقات به تهران اعزام می کند؛ که این ظرفیت با توجه به تعداد سوالهای حل شده توسط تیمهای دانشگاه در دوره های قبل مشخص می شود. معمولا دانشگاه  ها برای انتخاب تیم  های اعزامی خود، یا مسابقاتی محلی در سطح دانشگاه خود برگزار می  کنند و یا اینکه از دانشجویان می خواهند که در مسابقه Online شریف که معمولا در مهر ماه برگزار می  شود، شرکت کنند و از نتیجه آن به عنوان ملاکی برای تعیین تیمهای اعزامی به شریف استفاده می  کنند. تیم¬های منتخب (سه تیم برتر) مسابقه ی منطقه ای شریف، به مرحله جهانی راه می¬یابند و از هر دانشگاه حداکثر یک تیم می¬تواند به این مرحله صعود کند. در سال ۱۳۸۵ تیم¬های دانشگاه¬های شریف، شهید بهشتی و تیمی از دانشگاه ویتنام به مرحله جهانی صعود کردند.

قوانین زیر برای مسابقات تدارکاتی Acm در دانشگاه علم وصنعت از سوی کمیته acm این دانشگاه منتشر شده که تقریباً شبیه مسابقات اصلی است:
- در زمان مسابقه تعدادی سوال در اختیار شرکت کنندگان قرار خواهد گرفت که موظفند در زمان معین به آنها پاسخ دهند.
- سوالات مسابقه  تماما به زبان انگلیسی است و ترجمه نمی شوند.
- به همراه داشتن هر گونه کتاب جزوه راهنما یا فرهنگ لغات در روز مسابقه آزاد است.
- به همراه داشتن دیسکت یا هرگونه فایل برنامه ای از پیش نوشته شده غیر مجاز است.
-پاسخ سوالات در زمان مسابقه به داور مسابقه ارسال خواهد شد وپاسخ سوالات در همان زمان از طرف داور اعلام خواهد شد.
- نحوه رده بندی تیم ها بر اساس تعداد سوالات حل شده خواهد بود. در صورت مساوی بودن تعداد سوالات حل شده زمان ارسال پاسخ به داور، مد نظر خواهد بود.
- به ازای هر پاسخ  نادرست ارسال شده  به داور ۲۰ دقیقه جریمه برای آن سوال در نظر گرفته می شود.

مراجع کتاب برای مطالعه:
۱- استراتژی های حل مسئله (نوشته ی :آرش امینی – داود وکیلی)
۲- مسائل الگوریتمی و برنامه نویسی( نوشته ی :دکتر قدسی – محمد مهدیان)
۳- سؤالات المپیاد کامپیوتر در ایران(نوشته ی :رسول حاجی زاده)
۴- چگونه مسئله حل کنیم (نوشته ی :جرج پولیا / احمد)
۵- کارگاه اعداد کنیم (نوشته ی :جرج پولیا / پرویز شهریاری)
۶- the Art of Programming Contest )Compiled by: Ahmed Shamsul A(