مسابقات برنامه نویسی بیان

مسابقات برنامه نویسی بیان

آخرین نظرات
  • ۲۰ خرداد ۹۴، ۱۹:۴۶ - spider robot
    توی#

۴ مطلب با موضوع «راهنمای مسابقه :: ۹۰» ثبت شده است

فرمول محاسبه امتیازات

شنبه, ۱۶ مهر ۱۳۹۰، ۰۸:۰۳ ب.ظ

فرمول امتیاز دهی مرحله اول

در این فرمول n تعداد افرادی است که یک مساله را حل کرده اند. T زمان کل مسابقه و t زمان پذیرفته شدن یک راه حل. w نیز تعداد دفعاتی است که یک فرد تلاش ناموفق دارد.

در این فرمول ۳ عامل موثر است:

۱- سختی سوال :‌ این عامل با تعداد کسانی که سوال را حل کرده اند رابطه عکس دارد.

۲- سرعت حل:‌  این فاکتور با هر چه که از زمان مسابقه می گذرد از امتیاز شما می کاهد.

۳- دقت در حل:‌ هربار تلاش ناموفق مقدار ثابتی از شما می کاهد.

 

فرمول امتیاز دهی مرحله دوم

در این فرمول درجه سختی سوال با شیب ملایمتری به سمت صفر حرکت می کند.

هر زمان که یک سوال را ۱۰۰ نفر یا بیشتر حل کنند، نشان دهنده این است که سوال آسان بوده و به واسطه سختی سوال چیزی به امتیاز شما اضافه نمی شود. به عبارت دیگر امتیاز سوال از ۱۰۰ محاسبه خواهد شد.

  • برگزارکننده مسابقه

 

قبل از شرکت در مسابقه به نکات زیر توجه کنید:

  • سیستم مسابقات از مروگرهای IE7 و پایین تر، Chrome 2 و پایین تر، firefox 3.5  و پایین تر پشتیبانی نمی کند. اگر در استفاده از سایت مسابقه با مشکلی مواجه بودید، حتما از مرورگرهای به روز تر استفاده کنید.
  • قابل توجه کسانی که با ویندوز کار می کنند:
    بیشتر زبانهای برنامه نویسی (جاوا، سی، پایتون، تمام زبانهای دات نت و ... ) فرمت فایل های ورودی را می فهمند و هیچ مشکلی با آن نخواهد داشت. به استثنای کسانی که با VB6 کار می کنند که توضیحات مربوط به آن در نمونه سوالات وجود دارد.
    اما اگر می خواهید خودتان هم وقتی فایل ها را باز می کنید با فرمت درستی ببنید می توانید با IDE های خود مثلا Visual Studio ، eclipse و یا با برنامه ++Notepad  فایل ورودی را باز کنید.
  • کسانی که در محیطهای IDE مثل Visual Studio یا eclipse کار می کنند دقت کنند که در قسمت "ارسال کد" تنها فایل کد خود که منطق برنامه در آن است را بفرستند نه تمام پروژه را. به عنوان مثال فایلهای با پسوند java, cpp, cs یا هر پسوند دیگری که نشان دهنده یک فایل کد است را ارسال کنید.
  • سیستم عامل و زبان برنامه نویسی تاثیری در پذیرش برنامه شما ندارد.
  • اگر در دریافت فایل ورودی دچار مشکل شدید، در زمان باقیمانده «دریافت دوباره فایل ورودی» را بزنید.
  • کسانی مشکل کار با فایل دارند به توضیحات نمونه سوالات مراجعه کنند.

 

  • برگزارکننده مسابقه

راهنمای مسابقه

دوشنبه, ۴ مهر ۱۳۹۰، ۱۰:۲۴ ب.ظ


ثبت نام در مسابقه

دعوت نامه بگیرید و آن را ارسال کنید:

وارد صفحه اول مسابقه (contest.bayan.ir) شوید و دکمه "ثبت نام" را کلیک کنید. پنجره ای باز می شود که در آن گفته شده contest90 را به عنوان کد دعوتنامه وارد کنید.

با تایید این پنجره وارد صفحه ای می شوید که از شما پرسیده شده "آیا شمادعوتنامه دارید؟". در این صفحه شما دکمه "بله دعوت نامه دارم" را کلیک کنید.

در صفحه بعد کد دعوت نامه را همانطور که گفته شده بود contest90 وارد کنید و دکمه "ارسال" را بزنید.

اطلاعات خود را ثبت کنید:

پس از ارسال دعوت نامه، شما وارد صفحه ثبت نام می شوید. اطلاعات خود را وارد کنید و مطمئن شوید که همه فیلدهای اجباری "تیک سبز" خورده اند، در انتهای صفحه متن موافقت نامه را تایید کرده و دکمه ارسال را بزنید.

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

حساب کاربری خود را فعال کنید:

وارد ایمیل خود شوید و لینک فعال سازی ارسال شده را کلیک کنید. با کلیک رو لینک، شما به "صفحه ورود" هدایت می شوید.

وارد سایت مسابقات شوید:

در "صفحه ورود" با استفاده از نام کاربری و کلمه عبور خود وارد سایت شوید. پس از ورود، لیست سرویس هایی را می بینید که به آنها دسترسی دارید. البته شما فقط به سرویس مسابقات برنامه نویسی دسترسی دارید. روی "مسابقات برنامه نویسی بیان" کلیک کرده و وارد سایت مسابقات (contest.bayan.ir) شوید.

در صفحه اول سایت مسابقات، دکمه "ورود" را کلیک کنید.



شرکت در مسابقه

در صفحه اول بر روی دکمه "شرکت در مسابقه" کلیک کنید. در صفحه بعدی لیست مسابقه ها را می توانید مشاهده کنید.
هنگامیکه برای اولین با در یک مسابقه شرکت می کنید، از شما نام مستعار و سایر اطلاعات تکمیلی پرسیده خواهد شد.

حتما قبل از شرکت در مسابقه، قوانین مسابقه را مطالعه نمایید.

مسابقه تمرینی (آزمایشی):

این مسابقه فقط برای آشنایی با نحوه کار وب سایت مسابقات، روی وب سایت قرار داده شده است و شرکت کردن در آن اختیاری است. ساده و ابتدایی بودن سوالات آن نیز به همین دلیل است. توصیه می شود حتما در این مسابقه شرکت کنید تا با قسمتهای مختلف وب سایت مسابقات آشنا شوید.

مسابقه دانش آموزی:

این مسابقه و سوالات آن برای دانش آموزان طراحی شده است.

مسابقه آزاد:

شرکت در این مسابقه برای عموم آزاد است. سطح سوالات این مسابقه بالاتر از مسابقه دانش آموزی می باشد.



صفحه مسابقه

منوی سمت راست در صفحه مسابقه، امکان مشاهده قسمت های مختلف را به شما می دهد. پنج قسمت "مساله ها"، "ارسال جواب"، "رده بندی"، "تاریخچه" و "ارتباط با داوران" در ادامه شرح داده شده است. همچنین امکان مشاهده مستقیم صورت هر مساله وجود دارد.

مساله ها

در این قسمت لیست مساله ها قرار دارد. با کلیک روی عنوان هر مساله، صفحه مربوط به آن مساله دیده می شود.

عموما هر مساله شامل ۴ بخش است که در بخش اول صورت سوال توضیح داده می شود. در بخش دوم ورودی مساله و در بخش سوم خروجی مساله شرح داده می شود. در بخش چهارم نیز برای درک بهتر مساله، نمونه ای از داده های ورودی و خروجی نمایش داده می شود.

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

ارسال جواب

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

برنامه خود را بر روی فایل دریافت شده اجرا کنید. سپس از طریق دو قسمت "خروجی برنامه" و "کد برنامه" فایل خروجی تولید شده و همچنین فایل کد برنامه خود (source code) را ارسال (upload) نمایید.

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

با هر بار کلیک روی دکمه "دریافت ورودی جدید"، یک فایل جدید برای شما ارسال می شود.

قسمتهای تاریخچه و رده بندی

در این قسمت می توانید نتیجه کار خود و همچنین سایر شرکت کنندگان را مشاهده نمایید. در منوی اصلی نیز در کنار لینک هر مساله، نتیجه نمایش داده می شود.

ارتباط با داوران

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

 

سوالات متداول

سوال ۱:‌ مسابقه تمرینی چیست؟
جواب:‌ هدف از مسابقه آزمایشی صرفا آشنایی شما با سایت مسابقه و تمرین کار با سایت است. سوالات این مسابقه به همراه جواب آنها در ۵ زبان در بخش نمونه سوالات قرار گرفته است. برای آشنایی با نحوه نگارش سوالات و ارسال جواب، شرکت در مسابقه آزمایشی اکیدا توصیه می شود. شرکت در این مسابقه اجباری نیست و امتیاز آن هیچ تاثیری در رده بندی شما در مسابقه اصلی ندارد.

سوال ۲:‌ آیا می توان در هر دو مسابقه آزاد و دانش آموزی شرکت کرد؟
جواب:‌ شرکت در مسابقه دانش آموزی فقط برای افراد زیر ۱۸ سال آزاد است. ولی برای شرکت در مسابقه آزاد هیچ محدودیتی وجود ندارد. ولی با توجه به اینکه مرحله دوم مسابقه آزاد و مرحله اول مسابقه دانش آموزی در یک روز برگزار می شود، شرکت در هر دو توصیه نمی شود.

سوال ۳:‌ چگونه می توانید سن افرادی که در مسابقه دانش آموزی شرکت می کنند را بررسی می کنید؟
جواب :‌ مسابقه نهایی به صورت حضوری برگزار می شود. یعنی قبل از شرکت در مسابقه نهایی مدارک شرکت کنندگان بررسی می شود و در صورت نقض قوانین از شرکت فرد در مسابقه نهایی ممانعت به عمل می آید.

سوال ۴:‌ آیا محدودیتی در استفاده از مروگر وجود دارد؟
جواب:‌ سعی شده است که بتوانیم از تعداد زیادی از مرورگرها پشتیبانی کنیم. ولی برای اطمینان از مروگرهای جدیدتر استفاده کنید.

سوال ۵:‌ نحوه محاسبه امتیاز چگونه است؟
جواب:‌ به هر سوال حل شده شما ۱ امتیاز داده می شود. سپس درجه سختی سوال به آن اضافه می شود. درجه سختی از روی تعداد افرادی که سوال را حل کرده اند به دست می آید.
سپس دو مقدار از عدد بدست آمده کم می شود.
یکی ضریبی متناسب با زمان حل مساله. یعنی هر چه دیرتر حل کنید عدد بیشتری از شما کم می شود.
دیگر ضریبی از تعداد پاسخها نادرستی که به این سوال داده اید. یعنی هر چه برای یک سوال پاسخهای نادرست بیشتری بفرستید عدد بیشتری از شما کم می شود.

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

سوال ۷: فایل ورودی و خروجی چیست؟‌ چگونه می توان با فایل کار کرد؟
جواب:‌ شما هنگامی که سوال خود را حل کردید و با ورودی های تستی آن را آزمایش کردید در خواست ورودی اصلی را می کنید. با این درخواست سیستم به شما یک فایل ورودی می دهد که شما باید آن را به برنامه خود بدهید. خروجی تولید شده از برنامه شما همان جوابیست که باید به عنوان فایل خروجی برای ما ارسال کنید. این فایل را به همراه کد برنامه خود برای سیستم ارسال می کنید.
   نکته‌: در مورد کار با فایل در انتهای نمونه سوالات راهنمایی لازم انجام شده است.

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


 

  • برگزارکننده مسابقه

قواعد فنی مسابقه

دوشنبه, ۴ مهر ۱۳۹۰، ۱۰:۰۷ ب.ظ

سوالات


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

 

حل سوالات


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

لازم به ذکر است که سیستم داوری خودکار می باشد و در صورتی که برنامه ی حل شده خروجی را دقیقا در فرم خواسته شده تولید نکند منجر به اشتباه فرض شدن خروجی خواهد شد.

 

دریافت نتیجه ارسال

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

محاسبه امتیاز

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

 

توضیح ها و اعلان ها

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

چند نکته جوانمردانه

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

  • برگزارکننده مسابقه