Чӣ тавр ман аз 3 медали тилло дар олимпиадаи компютерӣ 4-тоашро гирифтам

Чӣ тавр ман аз 3 медали тилло дар олимпиадаи компютерӣ 4-тоашро гирифтам

Ман ба Google HashCode Championship World Finals 2017 омодагӣ медидам. Ин бузургтарин мусобиқаи алгоритмӣ мебошад, ки аз ҷониби Google ташкил карда мешавад.

Ман аз синфи нӯҳум ба омӯзиши C++ аз сифр шурӯъ кардам. Ман дар бораи барномасозӣ, алгоритмҳо ё сохторҳои додаҳо чизе намедонистам. Дар баъзе лаҳзаҳо ман сатри якуми коди худро навиштам. Пас аз ҳафт моҳ, рақобати барномасозӣ дар уфуқ пайдо шуд. Ман мехостам бубинам, ки тарзи омӯзиши барномасозии ман то чӣ андоза хуб кор мекунад. Ин як имконияти комил буд.

Баъди ду рузи мусобика натичахо ба даст омаданд: медали тилло гирифтам.

Ман ҳайрон шудам. Ман аз рақибон бо таҷрибаи 5-сола пеш будам. Ман медонистам, ки ман сахт меҳнат кардам, аммо ин дастовард аз ҳама интизориҳои ман зиёдтар буд. Ман фаҳмидам, ки барномасозии варзишӣ мавзӯи ман аст ва саранҷом ба он даромадам.

Ман медонам, ки чӣ маро ба муваффақият овард ва ман мехоҳам онро бо шумо мубодила кунам.

Чӣ тавр ман аз 3 медали тилло дар олимпиадаи компютерӣ 4-тоашро гирифтам

Мақола бо дастгирии EDISON Software тарҷума шудааст, ки дар бораи саломатии про-граммачиён ва хуроки но-шонаи онхо гамхорй мекунад, инчунин нармафзори фармоишӣ таҳия мекунад.

Кадом забони барномасозиро интихоб кардан лозим аст

  • C++ - Хеле тавсия! Вай хеле зуд аст. Татбиқи алгоритмҳо аз сабаби STL вақти камро мегирад. C++ дар ҳама озмунҳо қабул карда мешавад. Ман сатри якуми коди худро дар C++ навиштам.
  • C - Аз сабаби STL C++-ро омӯзед. Агар шумо C донед, шумо метавонед дар C++ низ барномарезӣ кунед.
  • Java забони барномасозии суст аст. Он дорои синфи Big Integer, аммо он ба шумо чандон кӯмак намекунад. Агар рақобат маҳдудияти вақт дошта бошад, бо Java шумо бешубҳа аз он зиёдтар хоҳед буд. Java дар ҳама озмунҳо қабул карда намешавад.

Дар куҷо машқ кардан мумкин аст

Ман тавсия медиҳам Сфера судяи онлайн (SPOJ). Вай аз чихати микдор ва сифат захираи самарабахш аст. Муҳаррирҳо ва роҳҳои ҳалли он онлайн дастрасанд, агар шумо дар раванди ҳалли мушкилот монеа шавед. Илова ба ин сайт ман тавсия медиҳам Маҷмӯаи асбобҳои SPOJ и таснифи мушкилот барои SPOJ.pl.

Аввалан, шумо бояд дониши худро дар бораи асосҳо такмил диҳед

Вақте ки шумо ба синтаксиси забон одат мекунед, баъзе мушкилотро бартараф кардан лозим аст. Бо мушкилоти оддӣ, ки амалияро талаб мекунанд, оғоз кунед. Дар ин марҳила, чизи асосӣ муайян кардани услуби барномасозии шумост. Шояд шумо навиштани кодро бо фазои зиёди холӣ дӯст доред, шояд не. Шумо метавонед қавсҳоро дар як сатр бо "агар" ҷойгир кунед ё шумо онҳоро дар сатрҳои алоҳида ҷойгир кунед.

Шумо бояд услуби барномасозии худро пайдо кунед, зеро он услуби ШУМО аст.

Вақте ки шумо онро ҷустуҷӯ мекунед, ду принсипи асосиро дар хотир доред:

  • Рамзи шумо бояд татбиқи осон бошад. Шумо бояд дар татбиқи қарори пешниҳодкардаатон худро бароҳат ҳис кунед. Чаро? Зеро дар вақти рақобат, охирин чизе, ки шумо мехоҳед, гум шудан дар рамзи худ аст. Ҳамеша беҳтар аст, ки 5 дақиқаи иловагӣ сарф кунед, то дар бораи чӣ гуна содда кардани татбиқи код фикр кунед, аз сарфи 10 дақиқа барои фаҳмидани он.
  • Рамзи шумо бояд хондан осон бошад. Вақте ки код хондан осон аст, ислоҳ кардан осон аст. Биёед бо он рӯ ба рӯ шавем, ки хатогиҳо ҳамеша рӯй медиҳанд. Шумо ин эҳсосро медонед, вақте ки шумо 10 дақиқа мондаед ва шумо хатои лаънатиро ёфта наметавонед? Албатта шумо мекунед. Барои роҳ надодан ба ин вазъият, рамзи хонишро нависед. Пас аз он, ки шумо ислоҳи онро оғоз мекунед, код табиӣ ва фаҳмиши осон ба назар мерасад.

Ана як мисоли ман услуби барномасозӣ.

Чӣ тавр такмил додани малакаҳои рушди худ

Амал, машқ ва амалияи бештар. Ман тавсия медиҳам, ки шумо тавассути аввалин 250 мушкилоти ҳалшаванда кор кунед SPOJ. Онҳоро бо тартиб ҳал кунед. Дар бораи ҳалли ҳар яки онҳо ҳадди аққал як соат фикр кунед.

Нагӯед: "Ин масъала барои ман хеле душвор аст, ман кӯшиш мекунам, ки ояндаашро ҳал кунам". Ин аст, ки зиёнкорон чунин фикр мекунанд.

Як пораи коғаз ва қалам гиред. Дар бораи он фикр кунед. Шояд шумо роҳи ҳалли худро пайдо кунед, шояд не. Дар ҳадди ақал, шумо тафаккури алгоритмиро инкишоф медиҳед. Агар шумо дар давоми як соат ҳалли худро наёбед, дар форум ё мақолаҳо ҳалли тайёрро ҷустуҷӯ кунед.

Шумо бо ин равиш ба чӣ ноил мешавед? Бо истифода аз код зуд амалӣ кардани ғояҳои худро омӯзед. Ва масъалаҳо ва алгоритмҳои классикиро омӯзед.

Дуюм, шумо бояд алгоритмҳо ва сохторҳои додаҳоро азхуд кунед

Ба равиши иерархикӣ пайравӣ кунед. Оё шумо бе донистани роҳ рафтан ба давидан шурӯъ кардед? Не. Оё шумо метавонед як бинои осмонбӯсро бидуни таҳкурсии мустаҳкам созед? Боз не.

Шумо наметавонед қадамҳоро дар роҳи омӯзиш сарфи назар кунед. Агар шумо ба онҳо беэътиноӣ кунед, шумо бо холигии дониш боқӣ мемонед. Бо мурури замон онҳо танҳо бадтар мешаванд.

Бо алгоритмҳои бунёдӣ ва сохторҳои додаҳо оғоз кунед

Оғоз кардан душвор аст. Шояд аз он сабаб аст, ки шумо намедонед, ки аввал чиро омӯзед. Барои ҳамон Ман як курси видеоии "Алгоритмҳо ва сохторҳои додаҳо" таъсис додам.. Ҳангоми таъсис додани ин курс, ман онро ба он асос ёфтам, ки чӣ гуна мехостам таълим диҳанд. Реаксия бениҳоят аҷиб буд! Дар як моҳи аввал беш аз 3000 донишҷӯ аз беш аз 100 кишвари ҷаҳон барои ин курс номнавис шуданд.

Агар шумо дар ҳалли мушкилоти осон кор кунед, шумо ҳеҷ гоҳ беҳтар намешавед.

Роҳи аз ҳама самараноки фаҳмидани он чизе, ки шумо намедонед, ин таҷрибаи амалӣ аст. Ҳамин тавр ман омӯхтам. Ман бо интихоби вазифаи душвор бисёр усулҳои навро омӯхтам, ки қаблан дар бораи онҳо нашунида будам.

Ҳар як масъалаи сеюми шумо бояд ба шумо чизи навро таълим диҳад. Ҳангоми интихоби мушкилот бештар бодиққат бошед. Масъалаҳои душвортарро интихоб кунед!

Вақте ки шумо ин 250 мушкилотро аз SPOJ анҷом медиҳед, шумо дар бораи мавзӯъҳои асосии барномасозии варзиш фаҳмиши асосӣ хоҳед дошт. Бо дарки амиқи мантиқи паси алгоритмҳои асосӣ, алгоритмҳои сатҳи баланд мураккабтар ба назар мерасанд. Бо ин роҳ шумо метавонед дониши худро бештар истифода баред.

Ба ҳар як мавзӯи асосӣ амиқтар кобед

Дар ин ҷо як манбаи арзишманд бо маълумоти зиёд. Дар он ҷо шумо 10 алгоритми беҳтарин ва сохторҳои маълумотро барои ҳар як мавзӯъ хоҳед ёфт. Пас аз 250 мушкилот аз SPOJ, шумо аз ин рӯйхат бисёр чизҳоро хоҳед донист. Аммо шумо инчунин ба чизҳои зиёде дучор хоҳед шуд, ки қаблан дар бораи он нашунидаед. Пас ба омӯзиши ин мавзӯъҳо бо тартиби афзоиш оғоз кунед.

Агар пас аз омӯхтани чизи нав дониши худро мустаҳкам накунед, ҳама чизро зуд фаромӯш мекунед.
Ман тавсия медиҳам, ки пас аз омӯхтани алгоритми нав онро дар амал истифода баред. Онро тавассути 2-3 вазифа кор кунед. Теги алгоритмро дар SPOJ ҷустуҷӯ кунед. Дар он ҷо шумо мушкилотеро хоҳед ёфт, ки барои ҳалли ин алгоритм ниёз доранд. Аввал ин масъалаҳоро ҳал кунед.

Барномасозии динамикӣ фаҳмед, зеро он шуморо ба пирӯзӣ мебарад
Аз таҷрибаи ман, ҳар як мусобиқа ҳадди аққал як мушкилот дорад барномасозии динамикӣ. Бисёр одамон ҳангоми шунидани ибораи "барномасозии динамикӣ" дарди сар мегиранд, зеро онҳо онро тамоман намефаҳманд.

Ва ин хуб аст. Зеро агар шумо барномасозии динамикиро фаҳмед, пас шумо пирӯз хоҳед шуд.

Ба ман барномасозии динамикӣ маъқул аст, ин мавзӯи дӯстдоштаи ман аст. Сирри барномасозии динамикӣ дар он аст, ки интихоби оптималии глобалӣ, на танҳо интихоби маҳаллӣ. Шумо бояд мушкилотро ба зермушкилоти соддатар тақсим кунед. Ҳар яке аз ин зермасъалаҳоро танҳо як маротиба ҳал кунед. Сипас ҳалли худро эҷод кунед, ки зермушкилоти ҳалшударо муттаҳид мекунад. Алгоритми пурқувват - муқобили барномасозии динамикӣ. Он дар ҳар як қадам интихоби оптималии маҳаллиро талаб мекунад. Ва интихоби оптималии маҳаллӣ метавонад ба ҳалли бади ҷаҳонӣ оварда расонад.

Ҳангоми омӯхтани мафҳумҳои нав, тафтиш кунед Дарсӣ TopCoder. Онҳо хеле муфассал ва фаҳмо мебошанд. Ба шарофати онҳо ман фаҳмидам дарахтони индексатсияшудаи бинарӣ.

Сахт мехнат кунед

Оё шумо ягон бор дар бораи варзишгароне шунидаед, ки бидуни машқҳои солҳои олимпӣ ғолиб меоянд? Ман не.

Ҳамасола омодагӣ ба олимпиадаи компютерӣ аз моҳи сентябр оғоз шуда, моҳи апрел ба анҷом мерасид.

Дар ин 8 моҳ ҳар рӯз 5 соат машқ мекардам.

Ва ҳа, ман ин 5 соатро танҳо барои ҳалли масъалаҳои алгоритмӣ сарф кардам. Рузхоеро, ки 8 ва хатто 10 соат машк мекардам, дар хотир дорам. Чаро? Зеро ба ман писанд омад. Ҳар рӯз вақте ки ман аз мактаб ба хона бармегаштам, рост ба хонаи хоб мерафтам, назди компютер нишастам ва ба таҳлили як масъалаи нав шурӯъ мекардам. Ё ман як алгоритми наверо меомӯзам, ки барои ҳалли ин масъала бояд донам.

Агар шумо хоҳед, ки ғолиб шавед, шумо бояд ҳамин корро кунед. Мушкилотро интихоб кунед ва ба он пайваст шавед. Ҳангоми ба супермаркет рафтан ё ҳангоми рондан дар ин бора фикр кунед.

Чӣ тавр ман аз 3 медали тилло дар олимпиадаи компютерӣ 4-тоашро гирифтам

Оё шумо медонед, ки ҳангоми хоб мағзи шумо маълумоти дар он рӯз ҷамъшударо дефрагментация мекунад? Ба назар мерасад, ки ӯ дар рафи китоб китобҳоро аз рӯи тартиби алифбо ҷамъ мекунад. Аслан, мағзи шумо дар бораи мушкилоти мухталифе, ки шумо дучор мешавед, фикр мекунад.

Инро мохирона истифода бурдан мумкин аст. Пеш аз хоб як масъалаи душворро хонед ва дар хотир доред, ки барои ҳалли он чӣ лозим аст. Дар ин марҳила ба шумо лозим нест, ки роҳи ҳалли худро ҷустуҷӯ кунед. Хоб рафтан. Майнаи шумо ба коркарди ин мушкилот шурӯъ мекунад. Вақте ки шумо бедор мешавед, шумо ҳайрон мешавед, ки дар вақти хоб буданатон роҳи ҳалли масъаларо пайдо кардаед.

Худатон кӯшиш кунед. Ин мисли ҷоду аст.

Ман блоги видеоӣ эҷод кардам

Чӣ тавр ман аз 3 медали тилло дар олимпиадаи компютерӣ 4-тоашро гирифтам

Ин параграфи кӯтоҳ ба барномасозии варзиш алоқаманд нест. Агар шумо дар синни бистсола бошед ва дар ҳайрат бошед, ки ман ҷаҳонро чӣ гуна мебинам, шумо метавонед онро тафтиш кунед блоги видеоии ман дар Youtube. Ман дар бораи ҷаҳон, ҳаёт ва илмҳои компютерӣ дар он сӯҳбат мекунам.

Ақл кор кунед

Сирри муваффақият дар ин аст. Ба шумо ҳадафҳо лозиманд.

Мо одамонем ва ба мо маъқул аст кашол додан. Мо ҳамеша мехоҳем он чизеро, ки ҳоло бояд анҷом дода шавад, ба таъхир андозем. Тамошои Netflix ҳамеша аз мубориза бо мушкилоти барномасозии динамикӣ ҷолибтар аст. Шумо инро медонед ва шумо бояд онро ислоҳ кунед.

Чӣ тавр ба таъхир кардан

Ба худ мақсадҳо гузоред. Шумо ҳамеша мушкилоти ҷолиберо хоҳед ёфт, ки аз онҳо шумо метавонед чизи навро омӯзед (манбаҳои дар боло зикршударо санҷед). Аммо ин мушкилотро на танҳо хондан, балки ҳал кардан лозим аст.

Инак, ман прогулро чй тавр бартараф кардам. Ман як тақвими коғазӣ оғоз кардам ва ҳар рӯзро бо мушкилоте, ки мехостам ҳал кунам, пур мекардам. Ман ҳамеша масъалаҳоро ду рӯз пештар пур мекардам. Ҳамин тавр, ман медонистам, ки чӣ гуна вақтамро дар рӯзҳои минбаъда идора кунам.

Чӣ тавр ман аз 3 медали тилло дар олимпиадаи компютерӣ 4-тоашро гирифтам

Аз ин рӯ, ман ҳамеша ҳавасманд будам. Ба ман лозим омад, ки баъзе мушкилотро ҳал кунам ва мушкилоти нав пайдо кунам, то рӯзҳои ояндаро дар тақвим пур кунам. Бартараф кардани мушкилоти ҳалшуда эҳсоси олиҷаноб аст. Ман медонам, ки ба шумо ҳам маъқул аст.

Тақвими коғазии шахсии худро гиред. Дар телефони худ рӯйхати дигар корҳоро эҷод накунед, ки фардо онро фаромӯш мекунед.

Чӣ тавр ба таври муассир ислоҳ кардан мумкин аст

Оё шумо мехоҳед мутахассис шавед? Агар ҳа, пас шумо бояд онро "дар зеҳни худ ислоҳ кунед".
Ин то ба ҳол самараноктарин техникаи ислоҳи ислоҳ аст, ки ман медонам, зеро он умуман ислоҳкунандаро талаб намекунад. Майнаи шумо якчанд шохаҳои рамзро дар як вақт меомӯзад ва ба шумо дар муқоиса бо код шарҳи васеътар медиҳад ислоҳкунандаи классикӣ.

Шумо метавонед худро ба гроссмейстере муқоиса кунед, ки шоҳмотбозӣ мекунад ва фикр мекунад, ки 3 ҳаракат пеш аст.

Ман ин техникаро танҳо ҳамчун хатти аввалини муҳофизати худ истифода мекунам. Пас ман як ислоҳкунандаи воқеиро истифода мебарам.

Барои он ки чӣ гуна ислоҳ кардан дар сари худ, шумо бояд машқ кунед. Вақте ки шумо роҳи ҳалли мушкилотро тасдиқ мекунед ва "ҷавоби нодуруст" мегиред, рост ба тугмаи ислоҳкунанда наравед. Рамзро аз нав хонед ва фикр кунед: "Дар ин сатр чӣ рӯй дода истодааст?", "Агар" дар ин ҷо ба барнома чӣ гуна таъсир мерасонад?", "Вақте ки мо аз давра баромадем, арзиши итератор чист?"

Бо ин роҳ шумо худатон фикр мекунед. Бо гузашти вақт, шумо навиштани код ва ислоҳи онро дар парвоз меомӯзед.

Дар бораи муаллиф

Чӣ тавр ман аз 3 медали тилло дар олимпиадаи компютерӣ 4-тоашро гирифтам
Андрей Маргелоиу як барномасози боистеъдод буда, ба соҳибкорӣ, стартапҳо ва берун аз он таваҷҷӯҳ дорад. Шумо метавонед бо ӯ тамос гиред дар LinkedIn.

Тарҷума: Диана Шеремева

Манбаъ: will.com

Илова Эзоҳ