Kif irbaħt 3 minn 4 midalji tad-deheb fl-Olympiad tal-Computing

Kif irbaħt 3 minn 4 midalji tad-deheb fl-Olympiad tal-Computing

Kont qed nipprepara għall-Google HashCode World Championship Finals 2017. Din hija l-akbar kompetizzjoni bi problemi algoritmiċi organizzata minn Google.

Bdejt nitgħallem C++ mill-bidu fid-disa' grad. Ma kont naf xejn dwar l-ipprogrammar, l-algoritmi jew l-istrutturi tad-dejta. F'xi punt ktibt l-ewwel linja ta 'kodiċi tiegħi. Seba' xhur wara, il-kompetizzjoni tal-ipprogrammar tfaċċat fl-orizzont. Ridt nara kemm ħadem tajjeb l-istil tiegħi tal-ipprogrammar tat-tagħlim. Kienet l-opportunità perfetta.

Wara jumejn ta’ kompetizzjoni, waslu r-riżultati: irbaħt il-midalja tad-deheb.

Bqajt ixxukkjat. Kont qabel il-kompetituri b'5 snin ta' esperjenza. Kont naf li kont ħdimt ħafna, iżda din il-kisba qabżet l-aspettattivi kollha tiegħi. Irrealizzajt li l-ipprogrammar tal-isports kien is-suġġett tiegħi u ħajt fih rasu.

Naf x'wassalni għas-suċċess u nixtieq naqsamha magħkom.

Kif irbaħt 3 minn 4 midalji tad-deheb fl-Olympiad tal-Computing

L-artiklu ġie tradott bl-appoġġ ta 'EDISON Software, li jieħu ħsieb is-saħħa tal-programmaturi u l-kolazzjon tagħhomU tiżviluppa softwer apposta.

Liema lingwa ta 'programmar tagħżel

  • C++ - Jirrakkomanda ħafna! Huwa mgħaġġel ħafna. L-implimentazzjoni tal-algoritmi tieħu ftit ħin minħabba STL. C++ huwa aċċettat fil-kompetizzjonijiet kollha. I kiteb l-ewwel linja tiegħi ta 'kodiċi f'C++.
  • C - Tgħallem C++ minħabba l-STL. Jekk taf is-C, tista 'wkoll tipprogramma f'C++.
  • Java hija lingwa ta 'programmar bil-mod. Għandu klassi Big Integer, iżda mhux se jgħinek ħafna. Jekk kompetizzjoni għandha limitu ta’ żmien, bil-Java żgur li taqbeż. Java mhux aċċettat fil-kompetizzjonijiet kollha.

Fejn tista' tipprattika

jien nirrekomandalek Sphere Online Imħallef (SPOJ). Huwa riżors effettiv f'termini ta 'kwantità u kwalità. L-edituri u s-soluzzjonijiet huma disponibbli onlajn jekk titwaħħal fil-proċess li ssolvi l-problemi. Minbarra dan is-sit nirrakkomanda Kit ta' Għodda tal-SPOJ и klassifikatur tal-problema għal SPOJ.pl.

L-ewwel, trid ttejjeb l-għarfien tiegħek tal-affarijiet bażiċi

Ladarba tidra s-sintassi tal-lingwa, hemm xi problemi li trid tegħleb. Ibda bi problemi sempliċi li jeħtieġu prattika. F'dan l-istadju, il-ħaġa prinċipali hija li tiddetermina l-istil tal-ipprogrammar tiegħek. Forsi tixtieq tikteb kodiċi b'ħafna spazju abjad, forsi le. Forsi tpoġġi l-parentesi fuq l-istess linja bħall-"jekk", jew forsi tpoġġihom fuq linji separati.

Trid issib l-istil tal-ipprogrammar tiegħek għax huwa l-istil TIEGĦEK.

Meta tfittexha, ftakar żewġ prinċipji bażiċi:

  • Il-kodiċi tiegħek għandu jkun faċli biex jiġi implimentat. Għandek tħossok komdu timplimenta s-soluzzjoni li toħroġ biha. Għaliex? Għax waqt kompetizzjoni, l-aħħar ħaġa li trid hija li tintilef fil-kodiċi tiegħek. Dejjem huwa aħjar li tqatta 'minuti 5 żejda taħseb dwar kif tissimplifika l-implimentazzjoni tal-kodiċi milli tqatta' minuti 10 tipprova tissibha.
  • Il-kodiċi tiegħek għandu jkun faċli biex jinqara. Meta l-kodiċi huwa faċli biex jinqara, huwa faċli biex tiddibaggja. Ejja niffaċċjawha—bugs jiġru l-ħin kollu. Taf dik is-sensazzjoni meta fadal 10 minuti u ma tistax issib l-iżball kkritikat? Naturalment inti tagħmel. Biex tevita din is-sitwazzjoni, ikteb kodiċi leġibbli. Ladarba tibda tiddibaggjaha, il-kodiċi jidher naturali u faċli biex tinftiehem.

Hawn eżempju tiegħi stil ta 'programmazzjoni.

Kif Ittejjeb il-Ħiliet ta' Żvilupp Tiegħek

Prattika, prattika u aktar prattika. Nirrakkomanda li taħdem permezz tal-ewwel 250 problema l-aktar solvubbli fuq SPOJ. Issolvihom fl-ordni. Jqatta 'mill-inqas siegħa taħseb dwar is-soluzzjoni għal kull wieħed minnhom.

Tgħidx: "Din il-problema hija wisq diffiċli għalija, nipprova nsolvi dik li jmiss." Hekk jaħsbu t-telliefa.

Ħu biċċa karta u lapes. Aħseb dwarha. Forsi tista’ ssib soluzzjoni, forsi le. Bħala minimu, inti tiżviluppa ħsieb algoritmiku. Jekk ma tistax toħroġ b'soluzzjoni fi żmien siegħa, fittex soluzzjoni lesta fuq il-forum jew fl-artikoli.

X'se tikseb b'dan l-approċċ? Tgħallem timplimenta malajr l-ideat tiegħek billi tuża l-kodiċi. U studja l-problemi u l-algoritmi klassiċi.

It-tieni nett, trid tikkontrolla l-algoritmi u l-istrutturi tad-dejta

Segwi approċċ ġerarkiku. Bdejt tiġri mingħajr ma taf timxi? Nru. Tista 'tibni skajskrejper mingħajr pedament sod? Mhux mill-ġdid.

Ma tistax tinjora l-passi tul it-triq tat-tagħlim. Jekk tinjorahom, titħalla b'lakuni fl-għarfien. Maż-żmien dawn se jmorru għall-agħar.

Ibda b'algoritmi fundamentali u strutturi tad-dejta

Huwa diffiċli li tibda. Forsi għax ma tafx x'għandek tistudja l-ewwel. Għalhekk Ħloqt kors bil-vidjo "Algoritmi u Strutturi tad-Dejta". Meta ħoloq dan il-kors, bbażajt fuq kif nixtieq li tiġi mgħallma. Ir-reazzjoni kienet inkredibbli! Aktar minn 3000 student minn aktar minn 100 pajjiż iffirmaw għall-kors fl-ewwel xahar.

Jekk taħdem biex issolvi problemi faċli, qatt mhu se ttejjeb.

L-aktar mod effettiv biex tifhem dak li ma tafx huwa li tesperjenzah fil-prattika. Hekk tgħallimt. Tgħallimt ħafna tekniki ġodda li qatt ma kont smajt bihom qabel billi għażilt biċċa xogħol ta’ sfida.

Kull tielet problema li taħdem fuqha għandha tgħallem xi ħaġa ġdida. Oqgħod aktar attent meta tagħżel il-problemi. Agħżel problemi aktar diffiċli!

Ladarba tlesti dawn il-250 problema mill-SPOJ, ikollok fehim bażiku tas-suġġetti ewlenin tal-ipprogrammar tal-isports. B'fehim profond tal-loġika wara algoritmi bażiċi, algoritmi ta 'livell għoli se jidhru inqas kumplessi. B'dan il-mod inti tista 'tagħmel l-aħjar mill-għarfien tiegħek.

Ħaffer aktar fil-fond f'kull waħda mit-temi ewlenin

Hawn riżorsa siewja b'ħafna informazzjoni. Hemmhekk issib l-aqwa 10 algoritmi u strutturi tad-dejta għal kull suġġett. Wara 250 problema minn SPOJ, tkun taf ħafna minn din il-lista. Imma int se tfixkel ukoll fuq ħafna affarijiet li qatt ma smajt bihom qabel. Allura ibda tistudja dawn is-suġġetti f'ordni axxendenti.

Jekk ma ssaħħaħx l-għarfien tiegħek wara li tgħallem xi ħaġa ġdida, malajr tinsa kollox.
Nirrakkomanda li wara li titgħallem algoritmu ġdid, użah fil-prattika. Aħdemha permezz ta '2-3 kompiti. Fittex it-tikketta tal-algoritmu fl-SPOJ. Hemm issib problemi li jeħtieġu dan l-algoritmu biex isolvu. L-ewwel tindirizza dawn il-kwistjonijiet.

Master Dynamic Programming Għax Iwassalk għall-Vitorja
Mill-esperjenza tiegħi, kull kompetizzjoni għandha mill-inqas problema waħda programmazzjoni dinamika. Ħafna nies ikollhom uġigħ ta’ ras meta jisimgħu l-frażi “programmazzjoni dinamika” għax ma jifhmuha xejn.

U dan huwa tajjeb. Għax jekk tifhem l-ipprogrammar dinamiku, allura tirbaħ.

Inħobb l-ipprogrammar dinamiku, huwa s-suġġett favorit tiegħi. Is-sigriet tal-ipprogrammar dinamiku huwa li tagħmel għażliet ottimali globalment, mhux biss dawk lokali. Int trid tkisser il-problema f'sub-problemi aktar sempliċi. Issolvi kull waħda minn dawn is-subproblemi darba biss. Imbagħad oħloq soluzzjoni li tgħaqqad is-sottoproblemi solvuti. Algoritmu greedy - l-oppost tal-ipprogrammar dinamiku. Jeħtieġ li jsiru għażliet lokalment ottimali f'kull pass. U għażla ottima lokalment tista' twassal għal soluzzjoni globali ħażina.

Waqt li titgħallem kunċetti ġodda, iċċekkja Tutorials ta' TopCoder. Huma dettaljati ħafna u jinftiehmu. Grazzi għalihom stajt nifhem siġar indiċjati binarji.

Aħdem iebes

Qatt smajt b'atleti li jirbħu l-Olimpjadi mingħajr snin ta' prattika? Jien le.

Kull sena, it-tħejjijiet għall-Olimpjadi tal-Kompjuter bdew f’Settembru u spiċċaw f’April.

Kuljum għal dawn it-8 xhur ipprattikajt għal 5 sigħat.

U iva, qattajt dawn is-sigħat 5 insolvi biss problemi algoritmiċi. Niftakar il-ġranet meta pprattikajt għal 8 u anke 10 sigħat. Għaliex? Għax għoġobni. Kuljum meta rġajt lura d-dar mill-iskola, mort dritt fil-kamra tas-sodda, poġġejt fuq il-kompjuter u bdejt nanalizza problema ġdida. Jew kont qed nitgħallem algoritmu ġdid li kelli nkun naf biex issolvi din il-problema.

Jekk trid tirbaħ, trid tagħmel l-istess. Agħżel problema u żomm magħha. Aħseb dwarha waqt li timxi lejn is-supermarket jew waqt is-sewqan.

Kif irbaħt 3 minn 4 midalji tad-deheb fl-Olympiad tal-Computing

Kont taf li meta torqod, moħħok jiddeframmenta l-informazzjoni miġbura dakinhar? Jidher li qed ipoġġi kotba f’ordni alfabetiku fuq ixkaffa tal-kotba. Essenzjalment, moħħok jaħseb dwar il-problemi varji li qed tiffaċċja.

Dan jista 'jintuża b'sengħa. Qabel tmur torqod, aqra problema diffiċli u ftakar x’hemm bżonn biex issolviha. F'dan l-istadju, m'għandekx bżonn tfittex is-soluzzjoni nnifisha. Mur fis-sodda. Moħħek se jibda jipproċessa din il-problema. Meta tqum, tkun sorpriż li tirrealizza li sibt is-soluzzjoni waqt li kont rieqda.

Ipprova lilek innifsek. Huwa bħall-maġija.

Ħloqt video blog

Kif irbaħt 3 minn 4 midalji tad-deheb fl-Olympiad tal-Computing

Dan il-paragrafu qasir mhuwiex relatat mal-programmazzjoni sportiva. Jekk int fl-għoxrin sena u tistaqsi kif nara d-dinja, forsi trid tiċċekkja video blog tiegħi fuq Youtube. Nitkellem dwar id-dinja, il-ħajja u x-xjenza tal-kompjuter fiha.

Xogħol intelliġenti

Dan huwa s-sigriet tas-suċċess. Għandek bżonn miri.

Aħna nies u nħobbu procrastinate. Dejjem irridu npoġġu dak li jrid isir issa. Li tara Netflix huwa dejjem aktar pjaċevoli milli tittratta problemi ta 'programmazzjoni dinamika. Taf dan u trid tirranġaha.

Kif tegħleb il-procrastination

Issettja lilek innifsek miri. Dejjem issib problemi interessanti li minnhom tista' titgħallem xi ħaġa ġdida (iċċekkja r-riżorsi li semmejt hawn fuq). Iżda dawn il-problemi jridu jiġu solvuti, mhux biss jinqraw dwarhom.

Allura hawn kif għeleb il-procrastination. Bdejt kalendarju tal-karti u imlejt kuljum bi problemi li ridt insolvi. Dejjem imlejt il-problemi jumejn qabel. Għalhekk kont naf kif nimmaniġġja l-ħin tiegħi fil-jiem ta’ wara.

Kif irbaħt 3 minn 4 midalji tad-deheb fl-Olympiad tal-Computing

Għalhekk kont dejjem motivat. Kelli bżonn insolvi xi problemi u nsib oħrajn ġodda biex timla l-jiem ta’ wara fuq il-kalendarju. Il-qsim ta' problemi solvuti jħossu tajjeb ħafna. Naf li togħġobkom ukoll.

Ikseb il-kalendarju tal-karti tiegħek. Toħloqx lista ta' affarijiet oħra fuq it-telefon tiegħek li għada tinsa.

Kif tiddibaggja b'mod effettiv

Trid issir professjonali? Jekk iva, allura trid "tiddibaggjaha f'moħħok."
Din hija bil-bosta t-teknika ta 'debugging l-aktar effiċjenti li naf għax ma teħtieġx debugger għal kollox. Moħħek jeżamina diversi fergħat tal-kodiċi f'daqqa u jagħtik ħarsa ġenerali ħafna usa' tal-kodiċi meta mqabbel ma' debugger klassiku.

Tista' tqabbel lilek innifsek ma' grandmastru li jilgħab iċ-ċess u jaħseb li 3 jimxu 'l quddiem.

Jien nuża din it-teknika biss bħala l-linja inizjali tad-difiża tiegħi. Imbagħad nuża debugger reali.

Biex titgħallem kif tiddibaggja f'rasek, trid tipprattika. Meta tivvalida soluzzjoni għal problema u tikseb "tweġiba ħażina", tmurx dritt għall-buttuna tad-debugger. Erġa' aqra l-kodiċi u aħseb: "X'qed jiġri f'din il-linja?", "Kif "jekk" hawn taffettwa l-programm?", "Meta noħorġu mil-linja, x'inhu l-valur tal-iteratur?"

Dan il-mod taħseb għalik innifsek. Maż-żmien, titgħallem tikteb kodiċi u tiddibaggjah fuq il-fly.

Dwar l-awtur

Kif irbaħt 3 minn 4 midalji tad-deheb fl-Olympiad tal-Computing
Andrei Margeloiu huwa programmatur akkanit b'interess fl-intraprenditorija, startups, u barra. Tista' tikkuntattjah fuq LinkedIn.

Traduzzjoni: Diana Sheremyeva

Sors: www.habr.com

Żid kumment