ڪيئن مون ڪمپيوٽنگ اولمپياڊ ۾ 3 مان 4 گولڊ ميڊل کٽيا

ڪيئن مون ڪمپيوٽنگ اولمپياڊ ۾ 3 مان 4 گولڊ ميڊل کٽيا

مان Google HashCode World Championship Finals 2017 لاءِ تياري ڪري رھيو ھوس. ھيءُ سڀ کان وڏو الگورتھمڪ چيلنج مقابلو آھي گوگل پاران منظم ڪيل.

مون نائين ڪلاس ۾ شروع کان C++ سکڻ شروع ڪيو. مون کي پروگرامنگ، الگورتھم يا ڊيٽا جي جوڙجڪ بابت ڪجھ به نه ڄاڻو. ڪجهه نقطي تي مون پنهنجي پهرين لائن ڪوڊ لکيو. ستن مهينن کان پوء، پروگرامنگ مقابلو افق تي ختم ٿي ويو. مان ڏسڻ چاهيان ٿو ته منهنجي سکيا جي پروگرامنگ جو انداز ڪيئن ڪم ڪيو. اهو ڀرپور موقعو هو.

ٻن ڏينهن جي مقابلي کان پوءِ، نتيجو آيو: مون گولڊ ميڊل کٽيو.

مان ڇرڪجي ويس. مان 5 سالن جي تجربي سان مقابلي ڪندڙن کان اڳتي هوس. مون کي خبر هئي ته مون محنت ڪئي هئي، پر اها ڪاميابي منهنجي سڀني اميدن کان وڌي وئي. مون محسوس ڪيو ته راندين جي پروگرامنگ منهنجو موضوع هو ۽ ان ۾ ڪبوتر هو.

مون کي خبر آهي ته مون کي ڪاميابي جي ڪهڙي هدايت ڪئي ۽ مان توهان سان حصيداري ڪرڻ چاهيان ٿو.

ڪيئن مون ڪمپيوٽنگ اولمپياڊ ۾ 3 مان 4 گولڊ ميڊل کٽيا

مضمون جو ترجمو EDISON سافٽ ويئر جي مدد سان ڪيو ويو، جيڪو پروگرامرز جي صحت ۽ سندن ناشتي جو خيال رکي ٿو، انهي سان گڏوگڏ ڪسٽم سافٽ ويئر ٺاهي ٿو.

ڪهڙي پروگرامنگ ٻولي چونڊڻ لاءِ

  • سي ++ - انتهائي صلاح ڏيو! هو تمام تيز آهي. STL جي ڪري الگورتھم جو عمل ٿورو وقت وٺندو آھي. C++ سڀني مقابلن ۾ قبول ٿيل آهي. مون C++ ۾ ڪوڊ جي منهنجي پهرين لائن لکي.
  • سي - سي ++ سکو STL جي ڪري. جيڪڏھن توھان ڄاڻو ٿا سي، توھان پڻ پروگرام ڪري سگھو ٿا C++ ۾.
  • جاوا هڪ سست پروگرامنگ ٻولي آهي. اھو ھڪڙو وڏو انٽيجر ڪلاس آھي، پر اھو توھان جي گھڻو مدد نه ڪندو. جيڪڏهن مقابلي ۾ هڪ وقت جي حد آهي، جاوا سان توهان ضرور ان کان وڌي ويندا. جاوا سڀني مقابلي ۾ قبول نه ڪيو ويو آهي.

توهان ڪٿي مشق ڪري سگهو ٿا

مان سفارش ڪريان ٿو اسپير آن لائين جج (SPOJ). اهو مقدار ۽ معيار جي لحاظ کان هڪ مؤثر ذريعو آهي. ايڊيٽر ۽ حل آن لائن دستياب آهن جيڪڏهن توهان مسئلا حل ڪرڻ جي عمل ۾ ڦاسي پيا. ان کان علاوه هن سائيٽ جي سفارش ڪريان ٿو SPOJ ٽول ڪٽ и SPOJ.pl لاءِ مسئلو درجه بندي ڪندڙ.

سڀ کان پهريان، توهان کي پنهنجي بنيادي ڄاڻ کي وڌائڻ جي ضرورت آهي

هڪ دفعو توهان کي ٻولي جي نحو جي عادت پئجي ويندي آهي، اتي ڪجهه مسئلا حل ڪرڻ لاء آهن. سادي مسئلن سان شروع ڪريو جيڪي مشق جي ضرورت آهي. هن مرحلي تي، بنيادي شيء توهان جي پروگرامنگ انداز جو تعين ڪرڻ آهي. ٿي سگهي ٿو ته توهان تمام گهڻي وائيٽ اسپيس سان ڪوڊ لکڻ پسند ڪريو، شايد توهان نٿا ڪريو. توهان شايد قوسون رکي رهيا آهيو ساڳئي لڪير تي "جيڪڏهن"، يا توهان انهن کي الڳ لائينن تي رکي سگهو ٿا.

توھان کي توھان جي پروگرامنگ جو انداز ڳولڻو پوندو ڇو ته اھو توھان جو انداز آھي.

جڏهن توهان ان کي ڳوليندا آهيو، ٻه بنيادي اصول ياد رکو:

  • توهان جو ڪوڊ لاڳو ڪرڻ آسان هجڻ گهرجي. توهان کي آرام سان محسوس ڪرڻ گهرجي انهي حل کي لاڳو ڪرڻ جنهن سان توهان اچي رهيا آهيو. ڇو؟ ڇو ته مقابلي دوران، آخري شيء جيڪو توهان چاهيو ٿا اهو توهان جي ڪوڊ ۾ وڃائڻ آهي. اهو هميشه بهتر آهي ته اضافي 5 منٽ خرچ ڪرڻ جي باري ۾ سوچيو ته ڪوڊ جي عمل درآمد کي ڪيئن آسان ڪيو وڃي ان کي ڳولڻ جي ڪوشش ڪرڻ جي ڀيٽ ۾ 10 منٽ خرچ ڪرڻ جي.
  • توهان جو ڪوڊ پڙهڻ لاء آسان هجڻ گهرجي. جڏهن ڪوڊ پڙهڻ آسان آهي، اهو ڊيبگ ڪرڻ آسان آهي. اچو ته ان کي منهن ڏيو - ڪيڙا هر وقت ٿين ٿا. توهان کي خبر آهي ته اهو احساس جڏهن توهان وٽ 10 منٽ رهجي ويا آهن ۽ توهان غلط غلطي نه ڳولي سگهو ٿا؟ يقيناً توهان ڪندا. هن صورتحال کان بچڻ لاء، لکو legible ڪوڊ. هڪ دفعو توهان ان کي ڊيبگ ڪرڻ شروع ڪيو، ڪوڊ قدرتي ۽ سمجهڻ ۾ آسان نظر ايندو.

هتي منهنجو هڪ مثال آهي پروگرامنگ انداز.

توهان جي ترقي جي صلاحيتن کي ڪيئن بهتر بڻائي

مشق، مشق ۽ وڌيڪ مشق. مان سفارش ڪريان ٿو ته توهان پهرين 250 سڀ کان وڌيڪ حل ٿيندڙ مسئلن جي ذريعي ڪم ڪريو اسپيڪ. ان کي ترتيب ۾ حل ڪريو. انهن مان هر هڪ جي حل بابت سوچڻ ۾ گهٽ ۾ گهٽ هڪ ڪلاڪ خرچ ڪريو.

ائين نه چئو: "اهو مسئلو مون لاء ڏاڍو ڏکيو آهي، مان ايندڙ حل ڪرڻ جي ڪوشش ڪندس." اهڙي طرح گمراهه سوچيندا آهن.

ڪاغذ جو هڪ ٽڪرو ۽ هڪ پنسل وٺو. ان باري ۾ سوچو. ٿي سگهي ٿو توهان هڪ حل ڳولي سگهو ٿا، شايد نه. گهٽ ۾ گهٽ، توهان الورورٿمڪ سوچ کي ترقي ڪنداسين. جيڪڏهن توهان هڪ ڪلاڪ اندر حل نه ٿا آڻي سگهو، فورم تي يا آرٽيڪل ۾ تيار ڪيل حل ڳوليو.

توهان هن طريقي سان ڇا حاصل ڪندا؟ ڪوڊ استعمال ڪندي پنهنجي خيالن کي تڪڙو لاڳو ڪرڻ سکو. ۽ ڪلاسيڪل مسئلن ۽ الگورتھم جو مطالعو ڪريو.

ٻيو، توهان کي الورورٿم ۽ ڊيٽا جي جوڙجڪ کي ماسٽر ڪرڻ گهرجي

ھڪڙي ترتيب واري طريقي جي پيروي ڪريو. ڇا توهان هلڻ شروع ڪيو بغير ڄاڻڻ جي ڪيئن هلڻ؟ نه. ڇا توهان بغير ڪنهن مضبوط بنياد جي اسڪائي اسڪراپر ٺاهي سگهو ٿا؟ ٻيهر نه.

توهان سکيا جي رستي ۾ قدمن کي نظرانداز نٿا ڪري سگهو. جيڪڏهن توهان انهن کي نظرانداز ڪيو، توهان کي علم جي خلا سان ڇڏي ويندي. وقت سان گڏ اهي صرف خراب ٿي ويندا.

بنيادي الگورتھم ۽ ڊيٽا جي جوڙجڪ سان شروع ڪريو

اهو شروع ڪرڻ ڏکيو آهي. ٿي سگهي ٿو ڇاڪاڻ ته توهان کي خبر ناهي ته پهريان ڇا پڙهو. هن ڪري مون هڪ وڊيو ڪورس ٺاهيو “الگورٿمز ۽ ڊيٽا اسٽرڪچرز”. جڏهن هي ڪورس ٺاهيو، مون ان تي ٻڌل آهي ته آئون ڪيئن سيکارڻ چاهيان ٿو. ردعمل ناقابل اعتبار هو! پهرين مهيني ۾ 3000 کان وڌيڪ ملڪن مان 100 کان وڌيڪ شاگردن ڪورس لاءِ سائن اپ ڪيو.

جيڪڏهن توهان آسان مسئلا حل ڪرڻ تي ڪم ڪندا، توهان ڪڏهن به بهتر نه ٿيندا.

سمجھڻ جو سڀ کان وڌيڪ مؤثر طريقو جيڪو توهان نٿا ڄاڻو اهو آهي عملي طور تي تجربو ڪرڻ. ائين ئي مون سکيو. مون ڪيتريون ئي نيون ٽيڪنڪون سکيون جن بابت مون اڳي ڪڏهن به نه ٻڌو هو هڪ مشڪل ڪم جي چونڊ ڪندي.

هر ٽيون مسئلو جيڪو توهان ڪم ڪري رهيا آهيو توهان کي ڪجهه نئين سيکارڻ گهرجي. مسئلا چونڊڻ وقت وڌيڪ محتاط ٿيندؤ. وڌيڪ ڏکيو مسئلا چونڊيو!

هڪ دفعو توهان SPOJ کان اهي 250 مسئلا مڪمل ڪريو ٿا، توهان کي راندين جي پروگرامنگ جي بنيادي عنوانن جي بنيادي ڄاڻ هوندي. بنيادي الگورتھم جي پويان منطق جي گھڻي سمجھڻ سان، اعلي سطحي الگورتھم گھٽ پيچيده نظر ايندا. هن طريقي سان توهان پنهنجي علم مان تمام گهڻو فائدو حاصل ڪري سگهو ٿا.

هر هڪ بنيادي موضوعن ۾ گهيرو ڪريو

هتي هڪ قيمتي وسيلو آهي تمام گهڻي معلومات سان. اتي توهان هر موضوع لاءِ مٿيون 10 الگورتھم ۽ ڊيٽا جي جوڙجڪ ڳوليندا. SPOJ کان 250 مسئلن کان پوء، توهان کي هن فهرست مان گهڻو ڪجهه معلوم ٿيندو. پر توهان پڻ ڪيترن ئي شين تي ٺٺوليون ڪندا جيڪي توهان اڳ ڪڏهن به نه ٻڌو آهي. تنهن ڪري انهن عنوانن جو اڀياس شروع ڪريو ترتيب سان.

جيڪڏهن توهان ڪجهه نئين سکڻ کان پوء پنهنجي علم کي مضبوط نه ڪيو، توهان جلدي سڀ ڪجهه وساري ڇڏيندؤ.
مان سفارش ڪريان ٿو ته توهان هڪ نئين الگورتھم سکڻ کان پوء، ان کي عملي طور تي استعمال ڪريو. ان کي 2-3 ڪمن ذريعي ڪم ڪريو. SPOJ ۾ الگورتھم ٽيگ لاء ڏسو. اتي توھان کي مسئلا ملندا جن کي حل ڪرڻ لاءِ ھن الگورتھم جي ضرورت آھي. پهرين انهن مسئلن کي حل ڪريو.

ماسٽر متحرڪ پروگرامنگ ڇو ته اهو توهان کي فتح ڏانهن وٺي ويندو
منهنجي تجربي مان، هر مقابلي ۾ گهٽ ۾ گهٽ هڪ مسئلو آهي متحرڪ پروگرامنگ. ڪيترن ئي ماڻهن کي سر درد ٿئي ٿو جڏهن اهي جملي ٻڌندا آهن "متحرڪ پروگرامنگ" ڇاڪاڻ ته اهي اهو سڀ ڪجهه نٿا سمجهن.

۽ هي سٺو آهي. ڇو ته جيڪڏھن توھان سمجھو ٿا متحرڪ پروگرامنگ، پوء توھان کٽيندا.

مون کي متحرڪ پروگرامنگ پسند آهي، اهو منهنجو پسنديده موضوع آهي. متحرڪ پروگرامنگ جو راز عالمي سطح تي بهترين چونڊون ڪرڻ آهي، نه رڳو مقامي. توھان کي لازمي طور تي مسئلي کي آسان ذيلي مسئلن ۾ ٽوڙڻ گھرجي. انهن ذيلي مسئلن مان هر هڪ کي صرف هڪ ڀيرو حل ڪريو. پوء ھڪڙو حل ٺاھيو جيڪو حل ٿيل ذيلي مسئلن کي گڏ ڪري. لالچي الگورتھم - متحرڪ پروگرامنگ جي ابتڙ. اهو هر قدم تي مقامي طور تي بهترين چونڊون ڪرڻ جي ضرورت آهي. ۽ مقامي طور تي بهتر انتخاب خراب عالمي حل جو سبب بڻجي سگهي ٿو.

نون تصورن کي سکڻ دوران، چيڪ ڪريو TopCoder سبق. اهي تمام تفصيلي ۽ سمجھڻ وارا آهن. انهن جي مهرباني، مان سمجهي سگهيو آهيان بائنري انڊيڪس ٿيل وڻ.

ڏکيو ڪم

ڇا توهان ڪڏهن انهن رانديگرن بابت ٻڌو آهي جيڪي سالن جي مشق کان سواءِ اولمپڪس کٽيندا آهن؟ مان نه.

هر سال ڪمپيوٽر اولمپياڊ جون تياريون سيپٽمبر ۾ شروع ٿينديون هيون ۽ اپريل ۾ ختم ٿينديون هيون.

انهن 8 مهينن لاءِ هر روز مون 5 ڪلاڪ مشق ڪئي.

۽ ها، مون اهي 5 ڪلاڪ صرف الورورٿمڪ مسئلن کي حل ڪرڻ ۾ گذاريا. مون کي اهي ڏينهن ياد آهن جڏهن مون 8 ۽ 10 ڪلاڪ مشق ڪئي هئي. ڇو؟ ڇو ته مون ان کي پسند ڪيو. هر روز جڏهن مان اسڪول مان واپس گهر ايندو هوس ته سڌو بيڊ روم ۾ ويندو هوس، ڪمپيوٽر تي ويهندو هوس ۽ نئين مسئلي جو تجزيو ڪرڻ لڳندو هوس. يا مان هڪ نئون الگورٿم سکي رهيو هوس جيڪو مون کي ڄاڻڻ جي ضرورت آهي هن مسئلي کي حل ڪرڻ لاء.

جيڪڏهن توهان کي فتح ڪرڻ چاهيو ٿا، توهان کي اهو ئي ڪرڻو پوندو. هڪ مسئلو چونڊيو ۽ ان تي لٺ. ان جي باري ۾ سوچيو جڏهن سپرمارڪيٽ ڏانهن هلڻ يا ڊرائيونگ دوران.

ڪيئن مون ڪمپيوٽنگ اولمپياڊ ۾ 3 مان 4 گولڊ ميڊل کٽيا

ڇا توهان کي خبر آهي ته جڏهن توهان سمهندا آهيو، توهان جو دماغ ان ڏينهن گڏ ڪيل معلومات کي خراب ڪري ٿو؟ هُو بُڪ شيلف تي ڪتابن کي الف بي ترتيب ۾ رکيل نظر اچي ٿو. لازمي طور تي، توهان جو دماغ مختلف مسئلن جي باري ۾ سوچيندو آهي جيڪو توهان منهن ڪري رهيا آهيو.

اهو مهارت سان استعمال ڪري سگهجي ٿو. بستري تي وڃڻ کان اڳ، هڪ ڏکيو مسئلو پڙهو ۽ ياد رکو ته ان کي حل ڪرڻ لاء ڇا آهي. هن مرحلي تي، توهان کي پاڻ کي حل ڳولڻ جي ضرورت نه آهي. بستر ڏانهن وڃو. توھان جو دماغ ھن مسئلي تي عمل ڪرڻ شروع ڪندو. جڏهن توهان جاڳندا، توهان کي حيرت ٿي ويندي ته توهان اهو حل ڳولي ورتو جڏهن توهان سمهي رهيا آهيو.

پاڻ ڪوشش ڪريو. اهو جادو وانگر آهي.

مون هڪ وڊيو بلاگ ٺاهيو

ڪيئن مون ڪمپيوٽنگ اولمپياڊ ۾ 3 مان 4 گولڊ ميڊل کٽيا

هي مختصر پيراگراف راندين جي پروگرامنگ سان لاڳاپيل ناهي. جيڪڏهن توهان پنهنجي ويهن سالن ۾ آهيو ۽ حيران ٿي رهيا آهيو ته آئون دنيا کي ڪيئن ڏسان ٿو، توهان شايد چيڪ ڪرڻ چاهيندا يوٽيوب تي منهنجو وڊيو بلاگ. مان ان ۾ دنيا، زندگي ۽ ڪمپيوٽر سائنس جي باري ۾ ڳالهائيندو آهيان.

هوشيار ڪم ڪريو

هي آهي ڪاميابي جو راز. توهان کي مقصدن جي ضرورت آهي.

اسان ماڻهو آهيون ۽ اسان ان کي پسند ڪندا آهيون دير ڪرڻ. اسان هميشه اهو بند ڪرڻ چاهيون ٿا جيڪو هن وقت ڪرڻ جي ضرورت آهي. Netflix ڏسڻ هميشه متحرڪ پروگرامنگ جي مسئلن سان معاملو ڪرڻ کان وڌيڪ مزيدار آهي. توھان ھي ڄاڻو ٿا ۽ توھان کي ان کي درست ڪرڻ جي ضرورت آھي.

دير کي ڪيئن شڪست ڏيو

پنهنجو پاڻ کي مقصد مقرر ڪريو. توهان هميشه دلچسپ مسئلا ڳوليندا آهيو جن مان توهان ڪجهه نئين سکي سگهو ٿا (مٿي ذڪر ڪيل وسيلن کي چيڪ ڪريو). پر انهن مسئلن کي حل ڪرڻ جي ضرورت آهي، صرف پڙهڻ جي باري ۾ نه.

تنهنڪري هتي آهي ڪيئن مون دير سان ختم ڪيو. مون هڪ پيپر ڪئلينڊر شروع ڪيو ۽ هر روز ڀريو مسئلن سان جيڪو آئون حل ڪرڻ چاهيان ٿو. مون هميشه ٻه ڏينهن اڳ مسئلا ڀريو. تنهن ڪري مون کي خبر هئي ته ايندڙ ڏينهن ۾ منهنجو وقت ڪيئن منظم ڪجي.

ڪيئن مون ڪمپيوٽنگ اولمپياڊ ۾ 3 مان 4 گولڊ ميڊل کٽيا

تنهنڪري مون کي هميشه حوصلا افزائي هئي. مون کي ڪجهه مسئلا حل ڪرڻ جي ضرورت هئي ۽ ڪئلينڊر تي ايندڙ ڏينهن ڀرڻ لاءِ نوان ڳولڻ گهرجن. حل ٿيل مسئلن کي پار ڪرڻ عظيم محسوس ٿيندو آهي. مون کي خبر آهي ته توهان کي اهو پڻ پسند آهي.

پنهنجو پيپر ڪئلينڊر حاصل ڪريو. پنهنجي فون تي ٻي ڪم جي فهرست نه ٺاهيو جنهن کي توهان سڀاڻي وساري ڇڏيندؤ.

مؤثر طريقي سان ڊيبگ ڪيئن ڪجي

ڇا توهان هڪ پروفيشنل ٿيڻ چاهيو ٿا؟ جيڪڏھن ھائو، پوء توھان کي ضرورت آھي "ان کي پنھنجي دماغ ۾ ڊيب ڪريو."
هي تمام گهڻي موثر ڊيبگنگ ٽيڪنڪ آهي جنهن کي مان ڄاڻان ٿو ڇاڪاڻ ته ان کي ڪنهن به ڊيبگر جي ضرورت ناهي. توهان جو دماغ هڪ ئي وقت ڪيترن ئي ڪوڊ شاخن جي جانچ ڪري ٿو ۽ توهان جي مقابلي ۾ ڪوڊ جو تمام گهڻو وسيع جائزو ڏئي ٿو کلاسي ڊيبگر.

توهان پنهنجو پاڻ کي هڪ گرانڊ ماسٽر سان مقابلو ڪري سگهو ٿا جيڪو شطرنج کيڏي ٿو ۽ سوچي ٿو 3 اڳتي هلي.

مان هن ٽيڪنڪ کي صرف منهنجي دفاع جي شروعاتي لائن طور استعمال ڪريان ٿو. پوء مان هڪ حقيقي ڊيبگر استعمال ڪريان ٿو.

سکڻ لاءِ ته توهان جي سر ۾ ڊيبگ ڪيئن ڪجي، توهان کي مشق ڪرڻ جي ضرورت آهي. جڏهن توهان ڪنهن مسئلي جي حل جي تصديق ڪريو ٿا ۽ "غلط جواب" حاصل ڪريو، سڌو ڊيبگر بٽڻ ڏانهن نه وڃو. ڪوڊ ٻيهر پڙهو ۽ سوچيو: ”هن لڪير ۾ ڇا ٿي رهيو آهي؟“، ”جيڪڏهن“ هتي پروگرام کي ڪيئن متاثر ڪري ٿو؟“، ”جڏهن اسان لوپ مان نڪرون ٿا، تڏهن اِيٽريٽر جي قيمت ڇا آهي؟

هن طريقي سان توهان پنهنجي لاء سوچيو. وقت سان گڏ، توهان سکندا ڪوڊ لکڻ ۽ ان کي اڏام تي ڊيبگ.

ليکڪ بابت

ڪيئن مون ڪمپيوٽنگ اولمپياڊ ۾ 3 مان 4 گولڊ ميڊل کٽيا
Andrei Margeloiu هڪ شوقين پروگرامر آهي جنهن ۾ دلچسپي سان ڪاروبار، شروعات، ۽ ٻاهران. توهان هن سان رابطو ڪري سگهو ٿا LinkedIn تي.

ترجمو: Diana Sheremyeva

جو ذريعو: www.habr.com

تبصرو شامل ڪريو