Sut enillais 3 allan o 4 medal aur yn yr Olympiad Cyfrifiadura

Sut enillais 3 allan o 4 medal aur yn yr Olympiad Cyfrifiadura

Roeddwn i'n paratoi ar gyfer Rowndiau Terfynol Pencampwriaeth y Byd Google HashCode 2017. Dyma'r gystadleuaeth fwyaf gyda phroblemau algorithmig a drefnwyd gan Google.

Dechreuais ddysgu C++ o'r dechrau yn y nawfed gradd. Doeddwn i'n gwybod dim am raglennu, algorithmau na strwythurau data. Ar ryw adeg ysgrifennais fy llinell gyntaf o god. Saith mis yn ddiweddarach, roedd y gystadleuaeth raglennu ar y gorwel. Roeddwn i eisiau gweld pa mor dda roedd fy steil o ddysgu rhaglennu yn gweithio. Roedd yn gyfle perffaith.

Ar ôl dau ddiwrnod o gystadlu, daeth y canlyniadau: enillais y fedal aur.

Cefais sioc. Roeddwn ar y blaen i gystadleuwyr gyda 5 mlynedd o brofiad. Roeddwn i'n gwybod fy mod wedi gweithio'n galed, ond roedd y cyflawniad hwn yn rhagori ar fy holl ddisgwyliadau. Sylweddolais mai rhaglennu chwaraeon oedd fy mhwnc ac fe wnes i fynd i'r afael â'r peth.

Rwy'n gwybod beth sydd wedi fy arwain at lwyddiant ac rwyf am ei rannu gyda chi.

Sut enillais 3 allan o 4 medal aur yn yr Olympiad Cyfrifiadura

Cyfieithwyd yr erthygl gyda chefnogaeth Meddalwedd EDISON, sydd yn gofalu am iechyd rhaglenwyr a'u brecwastAc yn datblygu meddalwedd arferiad.

Pa iaith raglennu i'w dewis

  • C++ - Argymell yn fawr! Mae'n gyflym iawn. Nid yw gweithredu algorithmau yn cymryd llawer o amser oherwydd STL. Derbynnir C++ ym mhob cystadleuaeth. Ysgrifennais fy llinell gyntaf o god yn C ++.
  • C - Dysgwch C++ oherwydd y STL. Os ydych chi'n gwybod C, gallwch chi hefyd raglennu yn C ++.
  • Mae Java yn iaith raglennu araf. Mae ganddo ddosbarth Cyfanrif Mawr, ond ni fydd yn eich helpu llawer. Os oes gan gystadleuaeth derfyn amser, gyda Java byddwch yn sicr yn mynd y tu hwnt iddo. Ni dderbynnir Java ym mhob cystadleuaeth.

Ble gallwch chi ymarfer

Rwy'n argymell Barnwr Sphere Online (SPOJ). Mae'n adnodd effeithiol o ran maint ac ansawdd. Mae golygyddion ac atebion ar gael ar-lein os byddwch chi'n mynd yn sownd wrth ddatrys problemau. Yn ogystal â'r wefan hon rwy'n argymell Pecyn Cymorth SPOJ и dosbarthwr problem ar gyfer SPOJ.pl.

Yn gyntaf, mae angen i chi hogi eich gwybodaeth am y pethau sylfaenol

Unwaith y byddwch chi'n dod i arfer â chystrawen yr iaith, mae rhai problemau i'w goresgyn. Dechreuwch â phroblemau syml sy'n gofyn am ymarfer. Ar y cam hwn, y prif beth yw pennu eich arddull rhaglennu. Efallai eich bod chi'n hoffi ysgrifennu cod gyda llawer o ofod gwyn, efallai nad ydych chi. Efallai eich bod yn rhoi'r cromfachau ar yr un llinell â'r “os”, neu efallai eich bod yn eu rhoi ar linellau ar wahân.

Mae'n rhaid i chi ddod o hyd i'ch steil rhaglennu oherwydd ei fod yn arddull EICH.

Wrth chwilio amdano, cofiwch ddwy egwyddor sylfaenol:

  • Dylai eich cod fod yn hawdd ei weithredu. Dylech deimlo'n gyfforddus yn gweithredu'r datrysiad rydych chi'n ei gynnig. Pam? Oherwydd yn ystod cystadleuaeth, y peth olaf rydych chi ei eisiau yw mynd ar goll yn eich cod. Mae bob amser yn well treulio 5 munud ychwanegol yn meddwl am sut i symleiddio gweithrediad y cod na threulio 10 munud yn ceisio ei ddarganfod.
  • Dylai eich cod fod yn hawdd ei ddarllen. Pan fydd cod yn hawdd i'w ddarllen, mae'n hawdd dadfygio. Gadewch i ni ei wynebu - mae bygiau'n digwydd drwy'r amser. Rydych chi'n gwybod y teimlad hwnnw pan fydd gennych 10 munud ar ôl ac na allwch ddod o hyd i'r camgymeriad damn? Wrth gwrs rydych chi'n ei wneud. Er mwyn osgoi'r sefyllfa hon, ysgrifennwch god darllenadwy. Unwaith y byddwch chi'n dechrau ei ddadfygio, bydd y cod yn ymddangos yn naturiol ac yn hawdd ei ddeall.

Dyma enghraifft o fy un i arddull rhaglennu.

Sut i Wella Eich Sgiliau Datblygu

Ymarfer, ymarfer a mwy o ymarfer. Rwy'n argymell eich bod yn gweithio drwy'r 250 o broblemau mwyaf solvable cyntaf ar SPOJ. Datryswch nhw mewn trefn. Treuliwch o leiaf awr yn meddwl am yr ateb i bob un ohonynt.

Peidiwch â dweud: "Mae'r broblem hon yn rhy anodd i mi, byddaf yn ceisio datrys yr un nesaf." Dyma sut mae collwyr yn meddwl.

Cymerwch ddarn o bapur a phensil. Meddyliwch am y peth. Efallai y gallwch chi ddod o hyd i ateb, efallai ddim. O leiaf, byddwch yn datblygu meddwl algorithmig. Os na allwch ddod o hyd i ateb o fewn awr, edrychwch am ateb parod ar y fforwm neu mewn erthyglau.

Beth fyddwch chi'n ei gyflawni gyda'r dull hwn? Dysgwch sut i roi eich syniadau ar waith yn gyflym gan ddefnyddio cod. Ac astudiwch broblemau ac algorithmau clasurol.

Yn ail, rhaid i chi feistroli algorithmau a strwythurau data

Dilynwch ddull hierarchaidd. Wnest ti ddechrau rhedeg heb wybod sut i gerdded? Nac ydw. Allwch chi adeiladu skyscraper heb sylfaen gadarn? Nid eto.

Ni allwch anwybyddu'r camau ar hyd y llwybr dysgu. Os byddwch yn eu hanwybyddu, byddwch yn cael eich gadael â bylchau gwybodaeth. Dros amser byddant ond yn gwaethygu.

Dechreuwch gydag algorithmau sylfaenol a strwythurau data

Mae'n anodd dechrau. Efallai oherwydd nad ydych chi'n gwybod beth i'w astudio gyntaf. Dyna pam Creais gwrs fideo “Algorithmau a Strwythurau Data”. Wrth greu’r cwrs hwn, fe wnes i ei seilio ar sut yr hoffwn gael fy nysgu. Roedd yr ymateb yn anhygoel! Cofrestrodd mwy na 3000 o fyfyrwyr o dros 100 o wledydd ar gyfer y cwrs yn ystod y mis cyntaf.

Os ydych chi'n gweithio ar ddatrys problemau hawdd, ni fyddwch byth yn gwella.

Y ffordd fwyaf effeithiol o ddeall yr hyn nad ydych chi'n ei wybod yw ei brofi'n ymarferol. Dyna sut y dysgais i. Dysgais lawer o dechnegau newydd nad oeddwn erioed wedi clywed amdanynt o'r blaen trwy ddewis tasg heriol.

Dylai pob trydydd problem rydych chi'n gweithio arni ddysgu rhywbeth newydd i chi. Byddwch yn fwy gofalus wrth ddewis problemau. Dewiswch broblemau mwy anodd!

Unwaith y byddwch wedi cwblhau'r 250 o broblemau hyn gan SPOJ, bydd gennych ddealltwriaeth sylfaenol o bynciau craidd rhaglennu chwaraeon. Gyda dealltwriaeth ddofn o'r rhesymeg y tu ôl i algorithmau sylfaenol, bydd algorithmau lefel uchel yn ymddangos yn llai cymhleth. Fel hyn gallwch chi wneud y gorau o'ch gwybodaeth.

Cloddiwch yn ddyfnach i bob un o'r prif themâu

Dyma adnodd gwerthfawr gyda llawer o wybodaeth. Yno fe welwch y 10 algorithm a strwythur data gorau ar gyfer pob pwnc. Ar ôl 250 o broblemau gan SPOJ, byddwch chi'n gwybod llawer o'r rhestr hon. Ond byddwch hefyd yn baglu ar lawer o bethau nad ydych erioed wedi clywed amdanynt o'r blaen. Felly dechreuwch astudio'r pynciau hyn mewn trefn esgynnol.

Os na fyddwch chi'n cryfhau'ch gwybodaeth ar ôl dysgu rhywbeth newydd, byddwch chi'n anghofio popeth yn gyflym.
Rwy'n argymell, ar ôl i chi ddysgu algorithm newydd, ei ddefnyddio'n ymarferol. Gweithiwch ef trwy 2-3 tasg. Chwiliwch am y tag algorithm yn SPOJ. Yno fe welwch broblemau sydd angen yr algorithm hwn i'w datrys. Ymdrin â'r materion hyn yn gyntaf.

Rhaglennu Meistr Dynamig Oherwydd Bydd Yn Eich Arwain at Fuddugoliaeth
O fy mhrofiad i, mae gan bob cystadleuaeth o leiaf un broblem rhaglennu deinamig. Mae llawer o bobl yn cael cur pen pan glywant yr ymadrodd “rhaglennu deinamig” oherwydd nad ydynt yn ei ddeall o gwbl.

Ac mae hyn yn dda. Oherwydd os ydych chi'n deall rhaglennu deinamig, yna byddwch chi'n ennill.

Rwy'n hoffi rhaglennu deinamig, dyma fy hoff bwnc. Cyfrinach rhaglennu deinamig yw gwneud y dewisiadau gorau yn fyd-eang, nid rhai lleol yn unig. Rhaid i chi rannu'r broblem yn is-broblemau symlach. Datryswch bob un o'r is-broblemau hyn unwaith yn unig. Yna creu datrysiad sy'n cyfuno'r is-broblemau sydd wedi'u datrys. Algorithm barus - y gwrthwyneb i raglennu deinamig. Mae'n gofyn am wneud y dewisiadau gorau posibl yn lleol ar bob cam. A gall dewis optimaidd lleol arwain at ateb byd-eang gwael.

Wrth ddysgu cysyniadau newydd, edrychwch tiwtorialau TopCoder. Maent yn fanwl iawn ac yn ddealladwy. Diolch iddyn nhw roeddwn i'n gallu deall coed mynegeio deuaidd.

Gweithio'n galed

Ydych chi erioed wedi clywed am athletwyr sy'n ennill y Gemau Olympaidd heb flynyddoedd o ymarfer? Fi ddim.

Bob blwyddyn, dechreuodd y paratoadau ar gyfer yr Olympiad Cyfrifiadurol ym mis Medi a daeth i ben ym mis Ebrill.

Bob dydd am yr 8 mis hyn roeddwn i'n ymarfer am 5 awr.

Ac ie, treuliais y 5 awr hyn yn datrys problemau algorithmig yn unig. Rwy'n cofio'r dyddiau pan oeddwn yn ymarfer am 8 a hyd yn oed 10 awr. Pam? Achos roeddwn i'n ei hoffi. Bob dydd pan ddychwelais adref o'r ysgol, es yn syth i'r ystafell wely, eistedd i lawr wrth y cyfrifiadur a dechrau dadansoddi problem newydd. Neu roeddwn i'n dysgu algorithm newydd yr oedd angen i mi ei wybod i ddatrys y broblem hon.

Os ydych chi eisiau ennill, mae'n rhaid i chi wneud yr un peth. Dewiswch broblem a chadwch ati. Meddyliwch amdano wrth gerdded i'r archfarchnad neu wrth yrru.

Sut enillais 3 allan o 4 medal aur yn yr Olympiad Cyfrifiadura

Oeddech chi'n gwybod, pan fyddwch chi'n cysgu, bod eich ymennydd yn dad-ddarnio'r wybodaeth a gasglwyd y diwrnod hwnnw? Ymddengys ei fod yn pentyrru llyfrau yn nhrefn yr wyddor ar silff lyfrau. Yn y bôn, mae eich ymennydd yn meddwl am y problemau amrywiol rydych chi'n eu hwynebu.

Gellir defnyddio hwn yn fedrus. Cyn mynd i'r gwely, darllenwch broblem anodd a chofiwch beth sydd ei angen i'w datrys. Ar hyn o bryd, nid oes angen i chi chwilio am yr ateb ei hun. Cer i gwely. Bydd eich ymennydd yn dechrau prosesu'r broblem hon. Pan fyddwch chi'n deffro, byddwch chi'n synnu sylweddoli eich bod chi wedi dod o hyd i'r ateb tra'ch bod chi'n cysgu.

Rhowch gynnig arni eich hun. Mae fel hud a lledrith.

Fe wnes i greu blog fideo

Sut enillais 3 allan o 4 medal aur yn yr Olympiad Cyfrifiadura

Nid yw'r paragraff byr hwn yn ymwneud â rhaglenni chwaraeon. Os ydych chi yn eich ugeiniau ac yn meddwl tybed sut rydw i'n gweld y byd, efallai yr hoffech chi wirio fy mlog fideo ar Youtube. Rwy'n siarad am y byd, bywyd a gwyddoniaeth gyfrifiadurol ynddo.

Gweithio'n smart

Dyma gyfrinach llwyddiant. Mae angen nodau arnoch chi.

Rydyn ni'n bobl ac rydyn ni'n ei hoffi прокраstinировать. Rydym bob amser eisiau gohirio beth sydd angen ei wneud ar hyn o bryd. Mae gwylio Netflix bob amser yn fwy pleserus na delio â phroblemau rhaglennu deinamig. Rydych chi'n gwybod hyn ac mae angen i chi ei drwsio.

Sut i guro oedi

Gosodwch nodau i chi'ch hun. Byddwch bob amser yn dod o hyd i broblemau diddorol y gallwch ddysgu rhywbeth newydd ohonynt (edrychwch ar yr adnoddau y soniais amdanynt uchod). Ond mae angen datrys y problemau hyn, nid darllen amdanynt yn unig.

Felly dyma sut yr wyf yn goresgyn oedi. Dechreuais galendr papur a llenwi bob dydd â phroblemau yr oeddwn am eu datrys. Roeddwn bob amser yn llenwi problemau ddau ddiwrnod ymlaen llaw. Felly roeddwn i'n gwybod sut i reoli fy amser yn y dyddiau canlynol.

Sut enillais 3 allan o 4 medal aur yn yr Olympiad Cyfrifiadura

Felly roeddwn bob amser yn llawn cymhelliant. Roedd angen i mi ddatrys rhai problemau a dod o hyd i rai newydd i lenwi'r dyddiau nesaf ar y calendr. Mae croesi problemau wedi'u datrys yn teimlo'n wych. Rwy'n gwybod eich bod chi'n ei hoffi hefyd.

Mynnwch eich calendr papur eich hun. Peidiwch â chreu rhestr i'w gwneud arall ar eich ffôn y byddwch chi'n anghofio amdani yfory.

Sut i ddadfygio'n effeithiol

Ydych chi eisiau dod yn weithiwr proffesiynol? Os oes, yna mae angen i chi ei “debug yn eich meddwl.”
Dyma'r dechneg dadfygio fwyaf effeithlon o bell ffordd rwy'n ei hadnabod oherwydd nid oes angen dadfygiwr o gwbl. Mae'ch ymennydd yn archwilio canghennau cod lluosog ar unwaith ac yn rhoi trosolwg llawer ehangach i chi o'r cod o'i gymharu â dadfygiwr clasurol.

Gallwch gymharu eich hun â nain sy'n chwarae gwyddbwyll ac yn meddwl bod 3 yn symud ymlaen.

Rwy'n defnyddio'r dechneg hon fel fy llinell amddiffyn gychwynnol yn unig. Yna rwy'n defnyddio dadfygiwr go iawn.

I ddysgu sut i ddadfygio yn eich pen, mae angen i chi ymarfer. Pan fyddwch yn dilysu ateb i broblem a chael "ateb anghywir", peidiwch â mynd yn syth at y botwm dadfygiwr. Ail-ddarllen y cod a meddwl: “Beth sy'n digwydd yn y llinell hon?”, “Sut mae'r “os” yma yn effeithio ar y rhaglen?”, “Pan fyddwn yn gadael y ddolen, beth yw gwerth yr iterator?”

Fel hyn rydych chi'n meddwl drosoch eich hun. Dros amser, byddwch chi'n dysgu ysgrifennu cod a'i ddadfygio ar y hedfan.

Am y Awdur

Sut enillais 3 allan o 4 medal aur yn yr Olympiad Cyfrifiadura
Mae Andrei Margeloiu yn rhaglennydd brwd sydd â diddordeb mewn entrepreneuriaeth, busnesau newydd a'r awyr agored. Gallwch gysylltu ag ef ar LinkedIn.

Cyfieithiad: Diana Sheremyeva

Ffynhonnell: hab.com

Ychwanegu sylw