څنګه ما د کمپیوټینګ اولمپیاډ کې له 3 څخه 4 د سرو زرو مډالونه وګټل

څنګه ما د کمپیوټینګ اولمپیاډ کې له 3 څخه 4 د سرو زرو مډالونه وګټل

زه د Google HashCode World Championship Finals 2017 لپاره چمتووالی وم. دا د ګوګل لخوا تنظیم شوي د الګوریتمیک ستونزو سره ترټولو لوی سیالي ده.

ما په نهم ټولګي کې له پیل څخه C++ زده کړه پیل کړه. زه د پروګرام کولو، الګوریتم یا ډاټا جوړښتونو په اړه هیڅ نه پوهیدم. په یو وخت کې ما د کوډ لومړۍ کرښه لیکلې. اوه میاشتې وروسته، د پروګرام کولو سیالي په افق کې راڅرګنده شوه. ما غوښتل وګورم چې زما د زده کړې برنامې سټایل څومره ښه کار کړی. دا یو مناسب فرصت و.

له دوو ورځو سياليو وروسته پايلې ته ورسېدل: ما د سرو زرو مډال وګاټه.

زه حیران وم. زه د 5 کلونو تجربې سره د سیالیو څخه مخکې وم. زه پوهیدم چې ما سخت کار کړی، مګر دا لاسته راوړنه زما د ټولو تمو څخه ډیره وه. زه پوهیدم چې د سپورت برنامه کول زما موضوع وه او په سر کې یې کبوت.

زه پوهیږم چې څه شی ما د بریالیتوب لامل شوی او زه غواړم دا له تاسو سره شریک کړم.

څنګه ما د کمپیوټینګ اولمپیاډ کې له 3 څخه 4 د سرو زرو مډالونه وګټل

مقاله د EDISON سافټویر په ملاتړ ژباړل شوې ، کوم چې د پروګرام کونکو روغتیا او د دوی ناري ته پاملرنه کوياو همدارنګه دودیز سافټویر رامینځته کوي.

د پروګرام کولو کومه ژبه غوره کړئ

  • C++ - ډیره سپارښتنه! هغه ډیر ګړندی دی. د الګوریتم پلي کول د STL له امله لږ وخت نیسي. C++ په ټولو سیالیو کې منل کیږي. ما په C++ کې زما د کوډ لومړۍ کرښه لیکلې.
  • C - د STL له امله C++ زده کړئ. که تاسو C پیژنئ، تاسو کولی شئ په C++ کې هم پروګرام وکړئ.
  • جاوا یو ورو پروګرامینګ ژبه ده. دا د انټیجر لوی ټولګی لري، مګر دا به تاسو سره ډیره مرسته ونکړي. که سیالي د وخت محدودیت ولري ، د جاوا سره تاسو به خامخا له هغې څخه تجاوز وکړئ. جاوا په ټولو سیالیو کې نه منل کیږي.

تاسو چیرته تمرین کولی شئ

زه درته خوښوم د ساحې آنلاین قاضي (SPOJ). دا د کمیت او کیفیت له پلوه مؤثره سرچینه ده. ایډیټرونه او حلونه آنلاین شتون لري که تاسو د ستونزو حل کولو پروسې کې پاتې شئ. د دې سایټ سربیره زه وړاندیز کوم د SPOJ Toolkit и د SPOJ.pl لپاره د ستونزې طبقه بندي.

لومړی، تاسو اړتیا لرئ د اساساتو په اړه خپله پوهه ښه کړئ

یوځل چې تاسو د ژبې ترکیب سره عادت شئ ، نو د بریا لپاره ځینې ستونزې شتون لري. د ساده ستونزو سره پیل کړئ چې تمرین ته اړتیا لري. پدې مرحله کې، اصلي شی ستاسو د پروګرام کولو سټایل ټاکل دي. شاید تاسو د ډیری سپینې ځای سره کوډ لیکل خوښ کړئ، شاید تاسو نه وي. تاسو ممکن قوسونه په ورته کرښه کې د "که" په څیر واچوئ، یا تاسو ممکن په جلا کرښو کې واچوئ.

تاسو باید خپل د پروګرام کولو سټایل ومومئ ځکه چې دا ستاسو سټایل دی.

کله چې تاسو ورته ګورئ، دوه اساسي اصول په یاد ولرئ:

  • ستاسو کوډ باید د پلي کولو لپاره اسانه وي. تاسو باید د هغه حل په پلي کولو کې د هوساینې احساس وکړئ چې تاسو ورسره مخ یاست. ولې؟ ځکه چې د سیالۍ په جریان کې ، وروستی شی چې تاسو یې غواړئ ستاسو په کوډ کې ورک شئ. دا تل غوره ده چې د کوډ پلي کولو ساده کولو څرنګوالي په اړه فکر کولو لپاره اضافي 5 دقیقې مصرف کړئ د دې په موندلو کې د 10 دقیقو مصرف کولو په پرتله.
  • ستاسو کوډ باید د لوستلو لپاره اسانه وي. کله چې کوډ لوستل اسانه وي ، نو دا د بګ کولو لپاره اسانه ده. راځئ چې ورسره مخ شو - کیګونه هر وخت پیښیږي. تاسو دا احساس پیژنئ کله چې تاسو 10 دقیقې پاتې یاست او تاسو نشئ کولی غلطه ومومئ؟ البته تاسو یې کوئ. د دې وضعیت څخه مخنیوي لپاره، د منلو وړ کوډ ولیکئ. یوځل چې تاسو د دې ډیبګ کول پیل کړئ ، کوډ به طبیعي او د پوهیدو لپاره اسانه ښکاري.

دلته زما یو مثال دی د پروګرام کولو سټایل.

ستاسو د پراختیا مهارتونو ته وده ورکولو څرنګوالی

تمرین، تمرین او نور تمرین. زه وړاندیز کوم چې تاسو د لومړي 250 خورا حل وړ ستونزو له لارې کار وکړئ SPOJ. په ترتیب سره یې حل کړئ. لږترلږه یو ساعت د دوی د حل په اړه فکر وکړئ.

مه وایه: "دا ستونزه زما لپاره ډیره ستونزمنه ده، زه به هڅه وکړم چې راتلونکی حل کړم." دا ډول بایلونکي فکر کوي.

د کاغذ یوه ټوټه او پنسل واخلئ. د دې په اړه فکر وکړه. شاید تاسو د حل لاره ومومئ، شاید نه. لږترلږه، تاسو به د الګوریتمیک فکر ته وده ورکړئ. که تاسو نشئ کولی په یو ساعت کې د حل سره راشئ، په فورم یا مقالو کې د چمتو شوي حل په لټه کې شئ.

تاسو به د دې طریقې سره څه ترلاسه کړئ؟ د کوډ په کارولو سره خپل نظریات په چټکۍ سره پلي کول زده کړئ. او کلاسیکي ستونزې او الګوریتمونه مطالعه کړئ.

دوهم، تاسو باید د الګوریتمونو او ډاټا جوړښتونو ماسټر کړئ

یو ترتیبي طریقه تعقیب کړئ. ایا تاسو پرته له دې چې پوه شئ چې څنګه چلول پیل کړي؟ نه. ایا تاسو کولی شئ پرته له قوي بنسټ څخه اسکائی سکریپر جوړ کړئ؟ بیا نه.

تاسو نشئ کولی د زده کړې لارې په اوږدو کې ګامونه له پامه وغورځوئ. که تاسو دوی له پامه غورځوئ، تاسو به د پوهې تشې سره پاتې شئ. د وخت په تیریدو سره دوی به یوازې خراب شي.

د بنسټیزو الګوریتمونو او ډاټا جوړښتونو سره پیل کړئ

دا ستونزمنه ده چې پیل شي. شاید ځکه چې تاسو نه پوهیږئ چې لومړی څه زده کړئ. د همدې لپاره ما د ویډیو کورس "الګوریتم او ډیټا جوړښتونه" جوړ کړل. کله چې دا کورس جوړ کړم، ما دا په دې اساس جوړ کړ چې څنګه زه غواړم درس ورکړم. غبرګون د نه منلو وړ و! د 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 د سرو زرو مډالونه وګټل
اندری مارجیلویو یو لیواله پروګرامر دی چې د تشبثاتو، پیل کولو، او بهر کې علاقه لري. تاسو کولی شئ له هغه سره اړیکه ونیسئ په LinkedIn کې.

ژباړه: ډیانا شیرمیوا

سرچینه: www.habr.com

Add a comment