View Full Version : مسابقه اینترنتی برنامه نویسی
Bayazee
چهارشنبه 06 مهر 1390, 14:48 عصر
مسابقه برنامه نویسی (http://contest.bayan.ir/) بیان (http://bayan.ir/) !!
نفر اول ۱.۵ میلیون تومان جایزه می گیره. یه ۱۰۰ نفری هم جوایز مختلف دارند.
استفاده از هر زبانی آزاد هست.
۱۴ مهر ۱۳۹۰
سایت اصلی : http://contest.bayan.ir
بعد از ثبت نام یک مسابقه آزمایشی و تمرینی هم داره که می شه شرکت کرد توش.
توضیح مهم ! تا تاریخ ۱۴ مهر مسابقه اصلی برگزار نمی شه و مسابقه فعلی تمرینی هست نه مسابقه اصلی !
Felony
چهارشنبه 06 مهر 1390, 17:50 عصر
برنامه ای بنویسید که ۲ عدد از ورودی گرفته و جمع آنها را چاپ کند.
ورودی مساله:
در خط اول فایل ورودی یک عدد قرار دارد( )که مشخص کننده ی تعداد جمع هایی است که باید انجام شود. در خط بعدی هر کدام دو عدد و وجود دارد که باید با یک دیگر جمع شوند.
حرف نقرهای در یک کلمه، حرفی است که فاصله آن از دو طرف رشته مساوی باشد. مثلا در کلمه ALI ، حرف L حرف نقره ای است، چون فاصله آن از دو طرف است. ولی کلمه SARA حرف نقره ای ندارد، چون حرفی را نمی توان پیدا کرد که فاصله آن از دو طرف برابر باشد
به شما یک رشته داده شده ، شما باید ابتدا تعداد حرف های آن رشته را به دست بیاورید و چاپ کنید. در صورتی که این رشته دارای حرف نقره ای است باید آن را چاپ کنید و در غیر این صورت باید به ترتیب دو حرف کنار همی را چاپ کنید که اگر هر کدام از آن ها را از رشته حذف کنیم حرف دیگر حرف نقره ای شود.
ورودی مساله:
در خط اول فایل ورودی عدد تعداد تست های ورودی را نشان میدهد( ). در خط بعدی، در هر خط یک کلمه قرار گرفته است.
یک دنباله اعداد به شما داده میشود. فرض کنید به ازای هر زیر دنباله پیوسته از این دنباله ، مجموع اعداد زیر دنباله در یک لیست نگهداری شود. از شما خواسته شده است که تعداد اعداد متفاوت در این لیست را بدست آورید.
به عنوان مثال دنباله را در نظر بگیرید. این دنباله زیر دنباله متفاوت دارد: و و و و و که مجموع آنها به ترتیب و و و و و می باشد. در نتیجه این لیست عنصر متفاوت دارد.
ورودی مساله:
در سطر اول فایل ورودی یک عدد قرار دارد که مشخص کننده ی تعداد تست ها می باشد. در هر کدام از تست بعدی یک دنباله شرح داده شده است، به این شکل که ابتدا یک عدد مشخص کننده ی تعداد اعضای دنباله و سپس عدد اعضای دنباله آمده اند.
تمام اعداد ورودی بین و قرار دارند.
این نمونه سوالات هست ، و این هم جواب سوال اول به زبان پاسکال :
program ans;
var
n,a,b,i: integer;
begin
readln(n);
for i := 1 to n do
begin
readln(a, b);
writeln(a+b);
end;
end.
عملا یعنی توهین به شعور افراد ... !
AliReza Vafakhah
چهارشنبه 06 مهر 1390, 23:21 عصر
من که ظهر دیدم از بس خسته کار بودم پیش خودم گفتم چیه یعنی صورت سوال این و تو دوتا خط سروتهش رو بستن.
آقای تاجیک از توجوهتون تشکر می کنم.
فقط خودشون رو بردن زیر سوال
Bayazee
پنج شنبه 07 مهر 1390, 15:43 عصر
آقای تاجیک اگر کمی دقت می کردید لغت آزمایشی رو می تونستید ببنید اونجا ! تا روز امتحان اصلی که ۱۴ مهر هست یک مسابقه تمرینی باز هست و قابل شرکت تا کاربرها بتونند تست کنند. احتمالا شما با مسابقات اینچنینی مثل ACM و ... آشنایی ندارید.
در ضمن بد نیست نگاهی به تیم طراح سوالات هم بندازید: http://contest.blog.ir/category/%DA%A9%D9%85%DB%8C%D8%AA%D9%87%20%D8%B7%D8%B1%D8%A D%20%D8%B3%D9%88%D8%A7%D9%84
جالب هست که هم من در این پست تاکید کردم که یک مسابقه تمرینی باز هست و مسابقه ۱۴ مهر هست و هم در سایت چندین جا اومده. مسابقه تمرینی هم هدف سوال نیست و معمول هست که اولین سوال رو بقدری راحت می گن که هر برنامه نویس مبتدی هم بتونه با چند خط حلش کنه. شما روز مسابقه تشریف ببریبد و اگر تونستید چند تا از سوال هارو حل کنید.
efazati
پنج شنبه 07 مهر 1390, 15:54 عصر
این که تابلوه مسابقه اش آزمایشی است ... واقعا فکر کردید با جایزه هایی که داره سوالات اصلیش اینه؟ :D
Felony
پنج شنبه 07 مهر 1390, 17:21 عصر
آقای تاجیک اگر کمی دقت می کردید لغت آزمایشی رو می تونستید ببنید اونجا ! تا روز امتحان اصلی که ۱۴ مهر هست یک مسابقه تمرینی باز هست و قابل شرکت تا کاربرها بتونند تست کنند. احتمالا شما با مسابقات اینچنینی مثل ACM و ... آشنایی ندارید.
آزمایشی ؟!
یعنی واقعا این مسابقه قراره شبیه ACM باشه ؟! از سوالات تمرینیش که اینطور بر نمیاد ... !
تو مسابقه آزمایشی یا هر چیزی سعی میکنن کاربر رو به واقعیت مسابقه نزدیک کنن نه بگن یه برنامه بنویس که 2 تا عدد رو جمه کنه !
در ضمن بد نیست نگاهی به تیم طراح سوالات هم بندازی
چه ربطی داره ؟ کم از این نوع مسائل ندیدم ، این هم یکی دیگش ...
مسابقه تمرینی هم هدف سوال نیست و معمول هست که اولین سوال رو بقدری راحت می گن که هر برنامه نویس مبتدی هم بتونه با چند خط حلش کنه.
من هرچی پستم رو میخونم توش چیزی نمیبینم که معنیش این باشه که روز مسابقه هم این جور سوالات رو میدن ، گفتم این سوالات یعنی توهین به کاربر ، شما هنوز معنای واژه "آزمایشی" رو نمیدونی ، آزمایشی یعنی برای آزمایش و شبیه سازی شرایط آزمون نه .. فرض کردن کاربر !
Bayazee
پنج شنبه 07 مهر 1390, 23:55 عصر
شما تا حالا مسابقات برنامه نویسی این سبکی و یا ACM شرکت کردید؟
برای مثال در ACM یک مسابقه تمرینی برکزار می شه که ساده ترین سوالات رو می دن. البته سوال اول معمولا خیلی راحت هست و سوال های بعدی سخت تر. شما توی همین مسابقه تمرینی مثال ۳ رو حل کن ما قبول می کنیم !!
مسابقه آزمایشی برای شناخت سایت و نحوه حل و ارسال سوال هست. ساده ترین مثال هم گفته می شه برای اولین سوال که کسی نگران صحیح بودن جواب نباشه و فقط با روال کلی سایت و نحوه حل سوالات اصلی آماده بشه.
در مورد اینکه این مسابقه قراره شبیه ACM باشه منظورتون رو نفهمیدم. برخی جاها شبیه هست برخی جاها نه. شاید به google code jam بیشتر شبیه باشه.
اما سوالات اصلیش مطمئن باشید به این آسونی ها نخواهد بود. البته سخت بودن سوال مزیت نیست ! سوالات آسون هم در مسابقه هست. که با کمی کار می شه حل کرد. اما یکی دو سوال هم خواهد بود که افرادی کمی که باهوش تر هستند و تجربه خوبی در حل سوالات برنامه نویسی دارند می تونند حل کنند. امیدوارم شما رو هم روز مسابقه ببنیم و اون وقت مشخص می شه شمایی که یک سوال برنامه نویسی تمرینی اینقدر بر می خوره بهتون چقدر حرف برای گفتن دارید !
Felony
جمعه 08 مهر 1390, 08:30 صبح
شما تا حالا مسابقات برنامه نویسی این سبکی و یا ACM شرکت کردید؟
نه ، چون ریاضیم خیلی خوب نیست و تو این نوع مسابقات ریاضی حرف اول رو میزنه و در ضمن زبان برنامه نویسی اکثرشون ++C هست ولی تخصص من Delphi ( پاسکال ) هست ، مطمئن باش اگر زبان پاسکال هم مورد قبول بود و مسابقه گروهی بود و یک نفر که ریاضیش خیلی خوب باشه رو پیدا میکردم حتما شرکت میکردم .
برای مثال در ACM یک مسابقه تمرینی برکزار می شه که ساده ترین سوالات رو می دن. البته سوال اول معمولا خیلی راحت هست و سوال های بعدی سخت تر. شما توی همین مسابقه تمرینی مثال ۳ رو حل کن ما قبول می کنیم !!
مسابقه آزمایشی برای شناخت سایت و نحوه حل و ارسال سوال هست. ساده ترین مثال هم گفته می شه برای اولین سوال که کسی نگران صحیح بودن جواب نباشه و فقط با روال کلی سایت و نحوه حل سوالات اصلی آماده بشه.
من مسابقه ازمایشی رو نگفتم ، نمونه سوالات رو گفتم ، دقت کن ...
امیدوارم شما رو هم روز مسابقه ببنیم و اون وقت مشخص می شه شمایی که یک سوال برنامه نویسی تمرینی اینقدر بر می خوره بهتون چقدر حرف برای گفتن دارید !
پسر خوب سعی نکن از انکار به جواب برسی ، من دارم میگم سوالاتی که به عنوان نمونه قرار دادن مزحکه ، حالا شما بیا بگو امیدوارم روز مسابقه ببینمت !
نمیبینی چون دانشجو هستم و وقتش رو ندارم ؛ نمیبینی چون 2 جا کار میکنم و وقت آزاد ندارم ؛ نمیبینی چون پروژه های این و اون رو باید تحویل بدم ، نمیبینی چون بجای اینکه تو اون مسابقه شرکت کنم 2 تا Query که یه به ظاهر مهندس نوشته رو Optimize میکنم و پولش رو در میارم ، نمیبینی چون نیازی به ثایت کردن خودم ندارم ...
Bayazee
جمعه 08 مهر 1390, 12:53 عصر
زبان پاسکال و هر مورد دیگه مورد قبول هست ! در این مسابقه انتخاب زبان برنامه نویسی آزاد هست. همه سوالات هم لزوما ریاضی نیست یا اگر باشه یه سری چیزای پایه ای هست ! مثل همین جمع ۲ عدد! که فکر نمی کنم برای هر برنامه نویسی مشکل باشه یا چون ریاضی هست نتونه انجام بده.
در مورد بخش دوم صحبت شما. من گفتم اگر فکر می کنید سوالات به قدری آسون هست که به شعور افراد توهین می کنه روز مسابقه بیاید و خودتون قضاوت کنید و خودتون رو امتحان کنید. من فکر می کنم یک سو تفاهم شده بود و دلیلش هم این هست که شما با قضاوت قبلی و بدون کوچکترین توجه به نوشته ها و توضیحات و با اعتماد به نفس کامل به سایت مسابقات مراجعه کردی و فقط قصد یه انتقاد اساسی رو داشتید.
rahmatr
دوشنبه 11 مهر 1390, 02:32 صبح
کسانی که به مسابقات برنامه نویسی این سبکی آشنایی ندارند، به سایت زیر سر بزنند :
http://projecteuler.net
اونوقت متوجه میشید که این مسابقات نه مسابقه ریاضی است و نه مسابقه کدنویسی، بلکه مسابقه الگوریتم نویسی است.
اگر تو سایت http://projecteuler.net ثبت نام کنید، می بینید که هزاران برنامه نویس از همه کشورها برای حل سوالات رقابت میکنند.
joker
دوشنبه 11 مهر 1390, 15:16 عصر
در این مسابفات، مهارت برنامهنویسی شما، یعنی توانایی شناخت مساله، طراحی راهحل و پیادهسازی کامل و دقیق آن با استفاده از یک زبان برنامهنویسی به چالش کشیده میشود.
آقا فقط خواستم بگم توی تیتر اول سایتتون غلط املائی دارین :)
درضمن ایشالا در برگذاری (برگزاری) مسابقه هم موفق باشین... با این تیمی که در بخش طراحی سوال هست خدا بداد اونائی که میخوان مسابقه بدن برسه :لبخند:
vcldeveloper
دوشنبه 11 مهر 1390, 22:51 عصر
اقدام خوبی هست، و اگر به صورت مسابقات سالانه ادامه پیدا کنه، جالب تر هم میشه؛ اما به نظرم نحوه محاسبه امتیازات چندان جالب نیست. اونطوری که من از توضیحات سایتش متوجه شدم، شما سوال را دریافت می کنید، برنامه مورد نظر را می نویسید، سپس از سایت یک فایل ورودی دریافت می کنید، و باید در یک بازه زمانی مشخص، این فایل ورودی را به برنامه نوشته شده خودتان بدید، و خروجی آن را به همراه سورس کد در سایت آپلود کنید. خروجی شما توسط یک نرم افزار مورد بررسی قرار میگیره، و اگر صحیح بود، جواب از شما قبول میشه. من در توضیحاتش مطلبی مبنی بر اینکه کدها توسط انسان مطالعه و ارزیابی میشند یا خیر، ندیدم. یکی از فاکتورهای تاثیر گزار در امتیاز شما مدت زمان سپری شده از لحظه دریافت فایل ورودی تا لحظه آپلود فایل خروجی هست. خب اولین مشکلی که اینجا بوجود میاد اینه که سرعت اینترنت کاربران شرکت کننده، میزان کارایی سیستم هایی که برنامه های خود را بر روی آن اجرا می کنند، و نوع کامپایلر انتخابی بر امتیازشان تاثیر داره، یعنی اگر شما یک سیستم با کارایی بالاتر داشته باشید، امکانش هست که در مواردی با نوشتن یک الگوریتم ناکارآمد، برنامه شما از یک برنامه نوشته شده با الگوریتمی کارآمدتر، سریعتر عمل کنه. همچنین، استفاده از یک کامپایلر که بتونه کدهای بهینه تری تولید کنه، در مواردی که رقابت نزدیک باشه، میتونه موجب سریعتر اجرا شدن یک کد نه چندان خوب نسبت به برخی کدها بشه.
نکته بعدی اینکه در پردازش خروجی ها توسط ماشین، خیلی از ظرافت ها و مهارت های کدنویسی افراد نادیده گرفته میشه، اینطوری شرکت کننده باید فقط سعی کنه الگوریتم خوبی انتخاب کنه، هر چی سریعتر کدش را بنویسه. تمیز نوشتن کد، خوانایی کد، مهارت های برنامه نویسی شی گرا و مواردی از این دست در این امتیازات نقشی ندارند، در حالی که این شرکت کننده اگر بخواد روزی در صنعت نرم افزار مشغول به کار بشه، مهارتش در این زمینه ها بسیار مهم خواهد بود.
ایکاش به جای امکان انتخاب هر زبان برنامه نویسی و هر کامپایلری، تیم برگزار کننده چند زبان برنامه نویسی مشخص (مثلا 10 زبان) را تعیین می کردند، برای هر زبان هم کامپایلر مورد استفاده را تعیین می کردند، سپس به جای دریافت خروجی برنامه ها از شرکت کنندگان، سورس کد مربوط به هر سوال را دریافت کرده، آن را با کامپایلر مربوط به زبان کد کامپایل کرده، و در یک ماشین مجازی برای بررسی کارایی آن اجرا می کردند. اینطوری شرایط اجرای برنامه ها به هم نزدیکتر میشد. همچنین، کدهایی که کارایی شان از یک حد نصابی بالاتر میشد، در اختیار تیم داوری قرار می گرفت، تا با مطالعه کد، به مهارت برنامه نویس آن امتیازی داده شود. سپس این امتیازات به همراه سایر امتیازاتی که برای مسابقه لحاظ شده، برای رتبه بندی شرکت کنندگان استفاده می شدند.
مهران رسا
سه شنبه 12 مهر 1390, 10:33 صبح
آقا فقط خواستم بگم توی تیتر اول سایتتون غلط املائی دارین :)
اون غلط تایپی هست نه املایی.
salehbagheri
پنج شنبه 14 مهر 1390, 11:33 صبح
امروز متوجه شدم که اصلا برنامه نویس خوبی نیستم! :گریه:
با صفر امتیاز در رده آخر قرار دارم، :کف:
خداوکیلی سوالاتش سخت بود و من رو به چالش انداخت ... :گیج:
-----------
بعضی سوالاتش عجیب بود! به این سوال دقت کنید:
شما برنامه ای بنویسیدکه دنبالهای از اعداد را بررسی کند و مشخص کند چه تعداد عدد باید از ابتدای دنباله حذف شود تا مطمئن شویم هیچ عددی بیش از یک بار در آن دنباله تکرار نشده باشد.
در این سوال خواسته شده بود که اعداد تکراری رو فقط از اول دنباله حذف کنه! بعدش نوشته هیچ عددی بیش از یک بار تکرار نشه! من که متوجه نشدم چی میخواد!
مثلا برای مورد زیر چیکار باید میکردیم؟
2 3 4 4 4 2 3 1
از یه نظر میشه گفت که باید 5 رقم از ابتدای کار حذف بشن تا اعداد تکراری نداشته باشیم ولی این موضوع منطقی به نظر نمیرسه چون بسیاری از اعداد ممکنه تلف بشن و همچنین با داستانهایی که بیان کرده جور در نمی یاد!
این تیکه هم خیلی جالب بود:
همچنین باید تعهد دهید که دختران ثروتمند و زیبا و ساده دل را فریب ندهید و با فقط با هم شان و همسطح خود ازدواج کنید.
به روی چشم! :چشمک:
میلاد قاضی پور
پنج شنبه 14 مهر 1390, 12:04 عصر
امروز متوجه شدم که اصلا برنامه نویس خوبی نیستم! :گریه:
با صفر امتیاز در رده آخر قرار دارم، :کف:
خداوکیلی سوالاتش سخت بود و من رو به چالش انداخت ... :گیج:
-----------
بعضی سوالاتش عجیب بود! به این سوال دقت کنید:
در این سوال خواسته شده بود که اعداد تکراری رو فقط از اول دنباله حذف کنه! بعدش نوشته هیچ عددی بیش از یک بار تکرار نشه! من که متوجه نشدم چی میخواد!
مثلا برای مورد زیر چیکار باید میکردیم؟
2 3 4 4 4 2 3 1
در این سوأل چهار عدد باید حذف بشن . از ابتدا یعنی اینکه از ابتدا شروع بشه به بررسی . "فقط" ننوشته . سخت نیست:
int[] arr=new int[]{1,3,2,4,4,4,3,2};
int temp=0;
int count=0;
for(i=0;i<arr.length;i++)
{
temp=arr[i];
for(j=1;i<arr.length;j++)
{
if(temp==arr[j])
{count++;}
}
}
Bayazee
جمعه 15 مهر 1390, 17:47 عصر
سلام جناب کشاورز
این مسابقات ادامه دار خواهد بود. مواردی رو که مطرح کردید رو بحث کردیم و پیشنهاد های مختلفی مطرح بود. اما با توجه به شرایط اکثریت افراد شرکت کننده و اولین مرحله بودن مسابقات همچنین تصمیمی گرفتیم. ما زمان مناسبی رو سعی کردیم برای دریافت ورودی و ارسال خروجی در نظر بگریم (۱۰ دقیقه) که فکر می کنم افراد با سرعت کم اینترنت هم مشکلی نداشتند. از طرف دیگه مرحله دوم و نهایی این مسابقات برگزار می شه. کد افراد برتر هم به صورت دستی چک می شه و اگر مشکلی باشه یا تکراری باشه برخورد می شه. مرحله نهایی هم حضوری هست و احتمالا نحوه و نوعش هم تغییر می کنه.
برای اولین تجربه همچین مسابقه ای در کشور بسیار خوب بود به نظر من. استقبال خوب بود و ما هم همه سعی خودمون رو کردیم تا در بهترین شرایط برگزار بشه. برای طراحی سوالات بسیار زیاد کار شده بود و مدت زمان بسیاری چندین نفر روی سوالات زمان گذاشته بودند تا سوالات خوب و مناسبی تهیه کنند. از نظر فنی هم خیلی تلاش کردیم تا مشکلی پیش نیاد.
از نظرات و پیشنهادات دوستان هم حتما استفاده خواهیم کرد تا مرحله های بعدی بهتر و با کیفیت تر برگزار بشه.
vcldeveloper
شنبه 16 مهر 1390, 00:16 صبح
ما زمان مناسبی رو سعی کردیم برای دریافت ورودی و ارسال خروجی در نظر بگریم (۱۰ دقیقه) که فکر می کنم افراد با سرعت کم اینترنت هم مشکلی نداشتند.
من برداشتم از توضیحات سایت این بوده که هر کی در زمان کوتاه تری خروجی را به سایت ارسال کنه، امتیازش بالاتر هست، یعنی اگر شرکت کننده اول برای یک سوال بتونه خروجی خودش را در مدت زمان 2 دقیقه آماده و آپلود کنه، و شرکت کننده دوم بتونه همان سوال را با توجه به سرعت کمتر کامپیوتر و اتصال اینترنتش، در مدت 4 دقیقه آماده و ارسال کنه؛ امتیازی که کاربر اول دریافت میکنه، بیشتر از امتیازی هست که کاربر دوم دریافت کرده. این برداشت من از اون توضیحات درج شده در سایت هست. اگر اشتباه هست، لطفا برای روشن شدن بیشتر نحوه امتیاز دهی، توضیحات تکمیلی را هم درج کنید.
کد افراد برتر هم به صورت دستی چک می شه و اگر مشکلی باشه یا تکراری باشه برخورد می شه.
این خیلی خوبه، البته در توضیحات موجود در سایت مسابقه به این مورد اشاره نشده بود. البته من بیشتر منظورم این بود که در امتیازدهی ها به تکنیک های برنامه نویسی به کار رفته، و رعایت اصول کد نویسی هم امتیازاتی داده بشه؛ مثلا اگر یک شرکت کننده از نامگزاری مناسب برای متغیرها و توابع نوشته شده اش استفاده کرده، یا یک کاربر Comment های مناسبی برای درک کدش درج کرده؛ یا از سایر مواردی مثل حفظ سادگی سروس کدها، Optimize کردن آنها در صورت لزوم، رعایت اصول شی گرایی و غیره بهره برده، بهش امتیاز بالاتری نسبت به کاربری که فقط خواسته به جواب مسئله برسه، داده بشه. رسیدن به جواب مهم هست، ولی همه ما میدونیم که در دنیای برنامه نویسی نوشتن کد خوب یعنی کدی که هم کارایی خوبی در اجرا داشته باشه، و هم قابلیت نگهداری و توسعه بالایی داشته باشه. اگر فقط به جواب رسیدن ملاک باشه، یا فقط سرعت بالا ملاک باشه، بسیاری از قابلیت های مورد نیاز برای اینکه یک فرد برنامه نویس خوبی باشه، سنجیده نمیشند.
برای اولین تجربه همچین مسابقه ای در کشور بسیار خوب بود به نظر من. استقبال خوب بود و ما هم همه سعی خودمون رو کردیم تا در بهترین شرایط برگزار بشه. برای طراحی سوالات بسیار زیاد کار شده بود و مدت زمان بسیاری چندین نفر روی سوالات زمان گذاشته بودند تا سوالات خوب و مناسبی تهیه کنند. از نظر فنی هم خیلی تلاش کردیم تا مشکلی پیش نیاد.
بله، در پست قبل هم عرض کردم که کار بسیار خوب و ارزشمندی هست، و امیدوارم که در آینده هم ادامه داشته باشه. به شما و همکارانتان هم بابت این کار جالب خسته نباشید عرض می کنم، و امیدوارم بتونید به خوبی اون رو توسعه بدید.
موفق باشید
returnx
شنبه 16 مهر 1390, 08:37 صبح
این خیلی خوبه، البته در توضیحات موجود در سایت مسابقه به این مورد اشاره نشده بود. البته من بیشتر منظورم این بود که در امتیازدهی ها به تکنیک های برنامه نویسی به کار رفته، و رعایت اصول کد نویسی هم امتیازاتی داده بشه؛ مثلا اگر یک شرکت کننده از نامگزاری مناسب برای متغیرها و توابع نوشته شده اش استفاده کرده، یا یک کاربر Comment های مناسبی برای درک کدش درج کرده؛ یا از سایر مواردی مثل حفظ سادگی سروس کدها، Optimize کردن آنها در صورت لزوم، رعایت اصول شی گرایی و غیره بهره برده، بهش امتیاز بالاتری نسبت به کاربری که فقط خواسته به جواب مسئله برسه، داده بشه. رسیدن به جواب مهم هست، ولی همه ما میدونیم که در دنیای برنامه نویسی نوشتن کد خوب یعنی کدی که هم کارایی خوبی در اجرا داشته باشه، و هم قابلیت نگهداری و توسعه بالایی داشته باشه. اگر فقط به جواب رسیدن ملاک باشه، یا فقط سرعت بالا ملاک باشه، بسیاری از قابلیت های مورد نیاز برای اینکه یک فرد برنامه نویس خوبی باشه، سنجیده نمیشند.
حرف شما درسته ، اما من با حرتون کمی مخالفم ، بنظر من در مسابقات خیلی سبک کد نویسی نباید ملاک قرار بگیره ، چون برنامه نویس باید خروجی رو تولید کنه و خیلی مهم نیست اینکار رو چطور انجام بده ، این برنامه نویس هست که روشش رو انتخاب میکنه ، در اینجا هم درست کد نوشتن نمیتونه خیلی هم مهم باشه مثلا بکارگیری اصول شی گرایی ، بکار گیری این اصول هیچ کمکی هم نمیکنه ،باعث میشه سرعت کد نوشتن پایین بیاد ، اگه کاربر با همون روش سنتی ساخت یافته کد بنویسه به مراتب میتونه کارش رو سریع تر انجام بده در ضمن پروژه هم انقدر وسیع نیست که کارایی برنامه مد نظر باشه بطور مثال اگه برنامه نویس یه اشتباه (هر چند به خروجی رسیده باشه) از چند حلقه تو درتو استفاده کنه که کارایی برنامه رو پایین تر بیاره در این پروژه های کوچیک اصلا بچشم نمیاد...
و کلام آخر بنظر من باید خروجی ملاک اصلی قرار بگیره ، نه اصول کد نویسی...
البته ایین کاملا نظر شخصی من بود...
vcldeveloper
شنبه 16 مهر 1390, 23:57 عصر
حرف شما درسته ، اما من با حرتون کمی مخالفم ، بنظر من در مسابقات خیلی سبک کد نویسی نباید ملاک قرار بگیره ، چون برنامه نویس باید خروجی رو تولید کنه و خیلی مهم نیست اینکار رو چطور انجام بده ، این برنامه نویس هست که روشش رو انتخاب میکنه ، در اینجا هم درست کد نوشتن نمیتونه خیلی هم مهم باشه مثلا بکارگیری اصول شی گرایی ، بکار گیری این اصول هیچ کمکی هم نمیکنه ،باعث میشه سرعت کد نوشتن پایین بیاد ، اگه کاربر با همون روش سنتی ساخت یافته کد بنویسه به مراتب میتونه کارش رو سریع تر انجام بده در ضمن پروژه هم انقدر وسیع نیست که کارایی برنامه مد نظر باشه بطور مثال اگه برنامه نویس یه اشتباه (هر چند به خروجی رسیده باشه) از چند حلقه تو درتو استفاده کنه که کارایی برنامه رو پایین تر بیاره در این پروژه های کوچیک اصلا بچشم نمیاد...
بستگی داره که شما بخواید چه چیزی رو بسنجید؛ اگر قرار باشه صرفا توان حل مسائل شرکت کنندگان سنجیده بشه، اون وقت میشه روی این موضوع تاکید کرد که خروجی برنامه ملاک امتیاز بندی هست. خب در خیلی از مسابقات همچین چیزی هست، یعنی تاکید فقط روی حل مسئله هست، و مهم نیست که طرف چطور مسئله رو حل کرده. اما اگر هدف سنجش توان برنامه نویسی افراد باشه، توانایی داشتن در حل مسائل مختلف یکی از فاکتور های لازم برای یک برنامه نویس موفق هست، اما کافی نیست. همانطور که بارها گفته شده، هر کد یک بار نوشته میشه، ولی بارها و بارها خوانده میشه. همچنین، هر کدی که شما منتشر می کنید، خودش میتونه زیر بنایی برای کدهای آینده شما یا دیگران باشه. نادیده گرفتن اصول شناخته شده کدنویسی باعث میشه که هزینه نگهداری از کد شما سنگین تر و نگهداری آن پیچیده تر، و توسعه آن سخت تر بشه. کدی که نوشته بشه، فرضا که کار هم کنه، اما قابل نگهداری و خوانده شدن نباشه، در اکثر حوزه های صنعت نرم افزار تقریبا بی ارزش هست. اینها مهارت هایی هست که برای برنامه نویس خوب شدن باید داشته باشید، و البته اینها صرفا استایل کد نویسی نیست که بگیم مثلا یک نفر دوست داره متغیرهای خودش را اینطوری نامگزاری کنه، یا کدش را اینطوری فاصله گزاری کنه، اما اون نفر دیگه جور دیگه دوست داره!
نکته اخر هم اینکه قرار نیست برای هر چیز و هر کاری لزوما پایبد به شی گرایی بود، اما همون به قول شما "روش سنتی ساختیافته" هم خودش مبتنی بر اصولی هست؛ اینطور نیست که اگر کدی شی گرا بود، بگیم اصولی، و در غیر اینصورت بگیم غیر اصولی. برنامه نویسی ساختیافته هم برای خودش اصول و شرایطی داره. حالا یک نفر برای حل یک مسئله به این نتیجه میرسه که شی گرایی برای همچین مسئله پیش پا افتاده ایی سر بار اضافی هست، خب همون کد ساختیافته ایی رو که میخواد بنویسه، حقیقتا ساختیافته بنویسه، این خودش ارزش داره. نه اینکه همینطوری یک اسپاگتی کد تولید کنه، و بگه به جواب رسیدم! اگر به جواب رسید، خب این میشه یک امتیاز، اما باید مهارت های دیگه این فرد به اصطلاح برنامه نویس هم سنجیده بشه.
returnx
یک شنبه 17 مهر 1390, 09:49 صبح
بخاطر نبود دکمه تشکر در این تالار:
ممنون از جوابتون...
Bayazee
سه شنبه 19 مهر 1390, 10:22 صبح
در پاسخ به سوال جناب آقای کشاورز :
فرمول محاسبه امتیازات:
http://contest.blog.ir/1390/7/16/points
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.