Pehea wau i lanakila ai i 3 mai loko mai o 4 mau mekala gula ma ka ʻOlumepika Computing

Pehea wau i lanakila ai i 3 mai loko mai o 4 mau mekala gula ma ka ʻOlumepika Computing

Ke hoʻomākaukau nei au no ka Google HashCode World Championship Finals 2017. ʻO kēia ka hoʻokūkū nui loa me nā pilikia algorithmic i hoʻonohonoho ʻia e Google.

Ua hoʻomaka wau e aʻo i ka C++ mai ka wā ʻōpio i ka papa ʻeiwa. ʻAʻohe oʻu ʻike e pili ana i ka hoʻolālā, algorithms a i ʻole nā ​​hoʻonohonoho ʻikepili. I kekahi manawa kākau wau i kaʻu laina mua o ke code. ʻEhiku mahina ma hope mai, ua kū mai ka hoʻokūkū hoʻolālā. Ua makemake au e ʻike i ka maikaʻi o kaʻu ʻano o ke aʻo ʻana i ka papahana. ʻO ia ka manawa kūpono loa.

Ma hope o ʻelua lā o ka hoʻokūkū, hiki mai nā hopena: Ua lanakila au i ka mekala gula.

Pīhoihoi au. ʻO wau ma mua o nā mea hoʻokūkū me 5 mau makahiki o ka ʻike. Ua ʻike au ua hana nui au, akā ua ʻoi aku kēia lanakila ma mua o koʻu mau manaʻo. Ua ʻike au ʻo ka hoʻolālā haʻuki kaʻu kumuhana a komo i loko o ke poʻo.

ʻIke wau i ka mea i alakaʻi iaʻu i ka holomua a makemake wau e kaʻana like me ʻoe.

Pehea wau i lanakila ai i 3 mai loko mai o 4 mau mekala gula ma ka ʻOlumepika Computing

Ua unuhi ʻia ka ʻatikala me ke kākoʻo o EDISON Software, ʻo ia mālama i ke olakino o nā mea polokalamu polokalamu a me kā lākou ʻaina kakahiaka, a me hoʻomohala i nā polokalamu maʻamau.

ʻO ka ʻōlelo papahana e koho ai

  • C++ - Manaʻo nui! He wikiwiki loa ia. ʻO ka hoʻokō ʻana i nā algorithms liʻiliʻi ka manawa ma muli o STL. ʻAe ʻia ʻo C++ ma nā hoʻokūkū āpau. Ua kākau wau i kaʻu laina mua o ke code ma C ++.
  • C - E aʻo iā C++ no ka STL. Inā ʻike ʻoe iā C, hiki iā ʻoe ke papahana ma C++.
  • He ʻōlelo hoʻolālā lohi ʻo Java. Loaʻa iā ia kahi papa Integer Nui, akā ʻaʻole ia e kōkua nui iā ʻoe. Inā he palena manawa ka hoʻokūkū, me Java e ʻoi aku ʻoe ma mua o ia. ʻAʻole ʻae ʻia ʻo Java ma nā hoʻokūkū āpau.

Ma hea ʻoe e hoʻomaʻamaʻa ai

Paipai au Lunakanawai Sphere Online (SPOJ). He kumu waiwai kūpono ia ma ke ʻano o ka nui a me ka maikaʻi. Loaʻa nā mea hoʻoponopono a me nā hoʻonā ma ka pūnaewele inā paʻa ʻoe i ke kaʻina hana o ka hoʻoponopono ʻana i nā pilikia. Ma waho aʻe o kēia pūnaewele ke paipai nei au Mea hana SPOJ и mea hoʻonohonoho pilikia no SPOJ.pl.

ʻO ka mea mua, pono ʻoe e hoʻonui i kou ʻike i nā kumu

Ke maʻa ʻoe i ka syntax o ka ʻōlelo, aia kekahi mau pilikia e lanakila ai. E hoʻomaka me nā pilikia maʻalahi e pono ai ka hoʻomaʻamaʻa. I kēia pae, ʻo ka mea nui e hoʻoholo i kāu ʻano papahana. Makemake paha ʻoe e kākau i ke code me ka nui o ke keʻokeʻo, ʻaʻole paha ʻoe. Hiki paha iā ʻoe ke kau i nā pale ma ka laina like me ka "inā", a i ʻole ke kau ʻana iā lākou ma nā laina ʻokoʻa.

Pono ʻoe e ʻimi i kāu ʻano papahana no ka mea ʻo KOU kaila ia.

Ke ʻimi ʻoe iā ia, e hoʻomanaʻo i ʻelua mau kumu kumu:

  • Pono e maʻalahi kāu code e hoʻokō. Pono ʻoe e ʻoluʻolu i ka hoʻokō ʻana i ka hopena āu i manaʻo ai. No ke aha mai? No ka mea i ka wā hoʻokūkū, ʻo ka mea hope āu e makemake ai e nalowale i kāu code. ʻOi aku ka maikaʻi o ka hoʻolilo ʻana i 5 mau minuke e noʻonoʻo e pili ana i ka maʻalahi o ka hoʻokō ʻana i ke code ma mua o ka hoʻolilo ʻana i 10 mau minuke e hoʻāʻo e noʻonoʻo.
  • Pono e heluhelu maʻalahi kāu code. Ke maʻalahi ka heluhelu ʻana i ke code, maʻalahi ka debug. E hoʻokuʻu aku kākou i nā manawa a pau. ʻIke ʻoe i kēlā manaʻo ke koe he 10 mau minuke a ʻaʻole hiki iā ʻoe ke ʻike i ka hewa hewa? ʻOiaʻiʻo ke hana nei ʻoe. No ka pale ʻana i kēia kūlana, e kākau i ka legible code. Ke hoʻomaka ʻoe i ka debugging iā ia, e ʻike maoli ke code a maʻalahi hoʻi e hoʻomaopopo.

Eia kekahi laʻana o kaʻu ʻano papahana.

Pehea e hoʻomaikaʻi ai i kāu mau mākau hoʻomohala

Hoʻomaʻamaʻa, hoʻomaʻamaʻa a hoʻomaʻamaʻa hou aku. Manaʻo wau e hana ʻoe i nā pilikia 250 mua loa i hiki ke hoʻoponopono ʻia SPOJ. E hoʻoholo iā lākou ma ke ʻano. E hoʻolilo i hoʻokahi hola e noʻonoʻo ai i ka hopena o kēlā me kēia.

Mai ʻōlelo: "He paʻakikī loa kēia pilikia iaʻu, e hoʻāʻo wau e hoʻoponopono i ka mea aʻe." Penei ka manao o ka poe eo.

E lawe i kahi ʻāpana pepa a me kahi penikala. E noʻonoʻo. Hiki paha iā ʻoe ke loaʻa kahi hopena, ʻaʻole paha. Ma ka liʻiliʻi, e hoʻomohala ʻoe i ka noʻonoʻo algorithmic. Inā ʻaʻole hiki iā ʻoe ke loaʻa kahi hopena i loko o hoʻokahi hola, e ʻimi i kahi hoʻonā mākaukau ma ka ʻaha kūkā a i ʻole nā ​​ʻatikala.

He aha kāu e hoʻokō ai me kēia ala? E aʻo e hoʻokō koke i kāu mau manaʻo me ka hoʻohana ʻana i ke code. A e aʻo i nā pilikia maʻamau a me nā algorithms.

ʻO ka lua, pono ʻoe e haku i nā algorithm a me nā hoʻolālā data

E hahai i kahi hoʻolālā hierarchical. Ua hoʻomaka ʻoe e holo me ka ʻike ʻole i ka hele wāwae? ʻAʻole. Hiki iā ʻoe ke kūkulu i kahi skyscraper me ke kumu ʻole? ʻAʻole hou.

ʻAʻole hiki iā ʻoe ke haʻalele i nā ʻanuʻu ma ke ala aʻo. Inā ʻaʻole ʻoe e haʻalele iā lākou, e waiho ʻia ʻoe me nā hakahaka ʻike. I ka wā lōʻihi, e ʻino wale lākou.

E hoʻomaka me nā algorithms kumu a me nā hoʻolālā ʻikepili

He paʻakikī ke hoʻomaka. Ma muli paha o kou ʻike ʻole i ka mea e aʻo mua ai. ʻo ia ke kumu Ua hana au i papa wikiō "Algorithms and Data Structures". I ka hana ʻana i kēia papa, ua hoʻokumu wau i kaʻu makemake e aʻo ʻia. He mea kupanaha ka hopena! ʻOi aku ma mua o 3000 mau haumāna mai 100 mau ʻāina i kākau inoa no ka papa i ka mahina mua.

Inā ʻoe e hana i ka hoʻoponopono ʻana i nā pilikia maʻalahi, ʻaʻole ʻoe e hoʻomaikaʻi.

ʻO ke ala maikaʻi loa e hoʻomaopopo ai i ka mea āu i ʻike ʻole ai, ʻo ia ke ʻike ma ka hoʻomaʻamaʻa. Pēlā wau i aʻo ai. Ua aʻo au i nā ʻenehana hou aʻu i lohe mua ʻole ai ma ke koho ʻana i kahi hana paʻakikī.

ʻO kēlā me kēia pilikia kolu āu e hana ai e aʻo iā ʻoe i kahi mea hou. E akahele i ke koho ʻana i nā pilikia. E koho i nā pilikia paʻakikī!

Ke hoʻopau ʻoe i kēia mau pilikia 250 mai SPOJ, e loaʻa iā ʻoe kahi ʻike kumu o nā kumuhana kumu o ka papahana haʻuki. Me ka ʻike hohonu o ka loiloi ma hope o nā algorithms kumu, e ʻike ʻia nā algorithm kiʻekiʻe kiʻekiʻe. Ma kēia ala e hiki ai iā ʻoe ke hoʻonui i kāu ʻike.

E ʻeli hohonu i kēlā me kēia kumuhana nui

Eia kahi waiwai waiwai me ka nui o ka ike. Ma laila ʻoe e ʻike ai i nā algorithms 10 kiʻekiʻe a me nā hoʻolālā data no kēlā me kēia kumuhana. Ma hope o nā pilikia 250 mai SPOJ, e ʻike nui ʻoe mai kēia papa inoa. Akā, e hina ʻoe i nā mea he nui āu i lohe ʻole ai ma mua. No laila, e hoʻomaka i ke aʻo ʻana i kēia mau kumuhana ma ke ʻano piʻi.

Inā ʻaʻole ʻoe e hoʻoikaika i kou ʻike ma hope o ke aʻo ʻana i kahi mea hou, poina koke ʻoe i nā mea āpau.
Manaʻo wau ma hope o ke aʻo ʻana i kahi algorithm hou, e hoʻohana iā ia i ka hana. E hana ia ma o 2-3 mau hana. E ʻimi i ka tag algorithm ma SPOJ. Ma laila ʻoe e ʻike ai i nā pilikia e pono ai kēia algorithm e hoʻoponopono. E hoʻoponopono mua i kēia mau pilikia.

Master Dynamic Programming No ka mea e alakaʻi iā ʻoe i ka lanakila
Mai koʻu ʻike, loaʻa i kēlā me kēia hoʻokūkū hoʻokahi pilikia hoʻolālā hoʻoikaika kino. Nui ka poʻe e ʻeha ke poʻo ke lohe lākou i ka huaʻōlelo “dynamic programming” no ka mea ʻaʻole maopopo iā lākou.

A maikaʻi kēia. No ka mea inā maopopo ʻoe i ka hoʻonohonoho hoʻoikaika ʻana, a laila e lanakila ʻoe.

Makemake au i ka hoʻolālā dynamic, ʻo ia kaʻu kumuhana punahele. ʻO ka mea huna o ka hoʻolālā hoʻoikaika e hana i nā koho maikaʻi loa o ka honua, ʻaʻole nā ​​mea kūloko wale nō. Pono ʻoe e hoʻokaʻawale i ka pilikia i nā sub-pilikia maʻalahi. E hoʻoholo i kēlā me kēia pilikia i hoʻokahi wale nō. A laila e hana i kahi hoʻonā e hoʻohui i nā subproblems i hoʻoholo ʻia. ʻO ka algorithm lili - ke kū'ē i ka hoʻolālā dynamic. Pono ia e hana i nā koho maikaʻi loa ma kēlā me kēia pae. A ʻo kahi koho maikaʻi loa ma ka ʻāina hiki ke alakaʻi i kahi hopena honua maikaʻi ʻole.

ʻOiai e aʻo ana i nā manaʻo hou, e nānā Nā kumu aʻo TopCoder. He kikoʻī loa lākou a hiki ke hoʻomaopopo ʻia. Mahalo iā lākou ua hiki iaʻu ke hoʻomaopopo nā lāʻau kuhikuhi binary.

E hana ikaika

Ua lohe paha ʻoe i nā mea pāʻani i lanakila i ka ʻOlumepika me ka ʻole o ka hoʻomaʻamaʻa makahiki? ʻAʻole wau.

I kēlā me kēia makahiki, hoʻomaka ka hoʻomākaukau ʻana no ka ʻOlumepika Computer i Kepakemapa a pau i ʻApelila.

I kēlā me kēia lā no kēia mau mahina 8, hoʻomaʻamaʻa au no 5 mau hola.

A ʻae, ua hoʻohana wau i kēia mau hola 5 e hoʻoponopono wale i nā pilikia algorithmic. Hoʻomanaʻo wau i nā lā aʻu i hoʻomaʻamaʻa ai no 8 a me 10 mau hola. No ke aha mai? No ka mea, ua makemake au. I kēlā me kēia lā i koʻu hoʻi ʻana i ka home mai ke kula, hele pololei wau i ka lumi moe, noho i lalo ma ke kamepiula a hoʻomaka wau e kālailai i kahi pilikia hou. A i ʻole ke aʻo nei au i kahi algorithm hou e pono iaʻu e ʻike e hoʻoponopono i kēia pilikia.

Inā makemake ʻoe e lanakila, pono ʻoe e hana like. E koho i kahi pilikia a pili i ia. E noʻonoʻo i ka hele ʻana i ka hale kūʻai nui a i ʻole ke kaʻa ʻana.

Pehea wau i lanakila ai i 3 mai loko mai o 4 mau mekala gula ma ka ʻOlumepika Computing

Ua ʻike anei ʻoe i kou hiamoe ʻana, hoʻokaʻawale kou lolo i ka ʻike i hōʻiliʻili ʻia i kēlā lā? Me he mea lā e hoʻopaʻa ana ʻo ia i nā puke ma ke ʻano pīʻāpā ma luna o kahi waihona puke. ʻO ka mea nui, noʻonoʻo kou lolo i nā pilikia like ʻole āu e kū nei.

Hiki ke hoʻohana me ke akamai. Ma mua o ka moe ʻana, heluhelu i kahi pilikia paʻakikī a hoʻomanaʻo i ka mea e pono ai e hoʻoponopono. I kēia pae, ʻaʻole pono ʻoe e ʻimi i ka hoʻonā ponoʻī. Hoʻi i ka hiamoe. E hoʻomaka ana kou lolo e hoʻoponopono i kēia pilikia. Ke ala ʻoe, e kahaha ʻoe i ka ʻike ʻana ua loaʻa iā ʻoe ka hopena i kou hiamoe ʻana.

E ho'āʻo iā ʻoe iho. Me he kilokilo lā.

Ua hana au i blog wikiō

Pehea wau i lanakila ai i 3 mai loko mai o 4 mau mekala gula ma ka ʻOlumepika Computing

ʻAʻole pili kēia paukū pōkole i ka papahana haʻuki. Inā ʻoe i nā makahiki iwakālua a e noʻonoʻo nei pehea wau e ʻike ai i ka honua, makemake paha ʻoe e nānā kaʻu blog wikiō ma Youtube. Ke kamaʻilio nei au e pili ana i ka honua, ke ola a me ka ʻepekema kamepiula i loko.

Hana akamai

ʻO kēia ka mea huna o ka holomua. Pono ʻoe i nā pahuhopu.

He poʻe mākou a makemake mākou hoʻopaneʻe. Makemake mau mākou e waiho i nā mea e pono ai ke hana i kēia manawa. ʻOi aku ka leʻaleʻa o ka nānā ʻana iā Netflix ma mua o ka hoʻopili ʻana i nā pilikia hoʻonohonoho hoʻoikaika. ʻIke ʻoe i kēia a pono ʻoe e hoʻoponopono.

Pehea e lanakila ai i ka hoopanee

E hoʻonoho iā ʻoe iho i mau pahuhopu. E ʻike mau ʻoe i nā pilikia hoihoi kahi āu e aʻo ai i kahi mea hou (e nānā i nā kumuwaiwai aʻu i ʻōlelo ai ma luna). Akā, pono e hoʻoponopono ʻia kēia mau pilikia, ʻaʻole heluhelu wale.

No laila, eia kaʻu i lanakila ai i ka hoʻopaneʻe. Ua hoʻomaka wau i kahi kalena pepa a hoʻopiha i kēlā me kēia lā me nā pilikia aʻu i makemake ai e hoʻoponopono. Hoʻopiha mau wau i nā pilikia ʻelua lā ma mua. No laila ua ʻike wau pehea e hoʻokele ai i koʻu manawa i nā lā aʻe.

Pehea wau i lanakila ai i 3 mai loko mai o 4 mau mekala gula ma ka ʻOlumepika Computing

No laila ua hoʻoikaika mau wau. Pono wau e hoʻoponopono i kekahi mau pilikia a loaʻa i nā mea hou e hoʻopiha ai i nā lā aʻe ma ka kalena. He mea maikaʻi loa ka hele ʻana i nā pilikia i hoʻoholo ʻia. ʻIke wau makemake ʻoe ia mea.

E kiʻi i kāu kalena pepa ponoʻī. Mai hana i kahi papa inoa hana ʻē aʻe ma kāu kelepona e poina iā ʻoe i ka lā ʻapōpō.

Pehea e hoʻopau pono ai

Makemake ʻoe e lilo i ʻoihana? Inā ʻae, pono ʻoe e "debug iā ia i kou noʻonoʻo."
ʻO kēia ka ʻenehana debugging maikaʻi loa aʻu i ʻike ai no ka mea ʻaʻole pono ia i kahi debugger. Nānā kou lolo i nā lālā code he nui i ka manawa hoʻokahi a hāʻawi iā ʻoe i kahi ʻike ākea ākea o ke code i hoʻohālikelike ʻia mea hoʻopio maʻamau.

Hiki iā ʻoe ke hoʻohālikelike iā ʻoe iho me kahi haku nui e pāʻani ana i ka chess a manaʻo ʻo 3 neʻe i mua.

Ke hoʻohana nei au i kēia ʻenehana i kaʻu laina pale mua. A laila hoʻohana wau i kahi debugger maoli.

No ke aʻo ʻana pehea e debug i kou poʻo, pono ʻoe e hoʻomaʻamaʻa. Ke hōʻoia ʻoe i kahi hoʻonā i kahi pilikia a loaʻa kahi "pane hewa", mai hele pololei i ka pihi debugger. Heluhelu hou i ke code a noʻonoʻo: "He aha ka mea e hana nei ma kēia laina?", "Pehea e pili ai ka "inā" ma aneʻi i ka papahana?", "Ke haʻalele mākou i ka loop, he aha ka waiwai o ka mea hoʻololi?"

Ma kēia ʻano ʻoe e noʻonoʻo ai iā ʻoe iho. Ma ka manawa lōʻihi, e aʻo ʻoe e kākau i ke code a debug iā ia ma ka lele.

No ka mea kākau

Pehea wau i lanakila ai i 3 mai loko mai o 4 mau mekala gula ma ka ʻOlumepika Computing
ʻO Andrei Margeloiu he mea hoʻolaha papahana me ka hoihoi i ka ʻoihana, hoʻomaka, a me waho. Hiki iā ʻoe ke hoʻopili iā ia ma LinkedIn.

Unuhi: Diana Sheremyeva

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka