ROB BOWDEN: Hi. Mwen se Rob, e mwen espere ou jwèt pou jwèt nan 15. Koulye a, genyen kat fonksyon ou bezwen aplike nan pwogram sa a - ini, trase, deplase, epi te genyen. Se konsa,, se pou yo gade nan ini. Isit la, nou wè nan premye bagay nou ap pral fè se deklare yon varyab rele vann san preskripsyon. Li pral fè initialisé nan fwa d d mwens 1. Sonje ke d se dimansyon nan nan tablo nou an. Ki jan ini se ale nan travay se li k ap pase repňte sou tablo a tout antye e nou pral kòmanse sou bò gòch nan tèt. Li kite yo jis di nou gen yon tablo 4 pa 4. Se konsa, tèt la kite nou ap pral di se 15. Lè sa a, nou ap jis ale nan konte pase nan ren ankadreman yo, li di 15, 14, 13, 12, 11, 10, 9, 8, 7, , 6, 5, 4, ak sou sa. Se konsa, bò gòch nan tèt, nou espere yo dwe fwa d d mwens 1, ki nan 4 a pa 4 ka a pwal 16 mwens 1, ki se kòrèkteman 15. Epi, koulye a isit la nan kote nou ap ale nan repňte sou tablo a tout antye. Apre sa, nou pral mete chak pozisyon nan tablo a nan valè aktyèl la nan vann san preskripsyon nou yo, epi Lè sa a, vann san preskripsyon ki pral dekrwasans, se konsa ke pwochen an pozisyon nou rive nan ki pral gen vann san preskripsyon fè yon sèl pi piti pase pozisyon nan anvan yo. Se konsa, nou okòmansman te gen 15 ak dekrwasans vann san preskripsyon. Se konsa, Lè sa a, nou pral bay 14 a nan pwochen pozisyon, dekrwasans vann san preskripsyon, epi nou ap ale nan plase 13, ak sou sa. Finalman, nou bezwen okipe ke kwen ka kote, si tablo a te gen yon menm dimansyon, lè sa a jis ap fè 15, 14, 13, 12, tout wout la desann a 3, 2, 1, se ale nan kite nou ak yon komite ensolubl. Epi nou gen swap 1 an ak 2 a. Se konsa, si d mod 2 egal 0, sa a, se ki jan nou ap ale nan tcheke yo wè si li nan menm. Si d mod 2 egal 0, Lè sa a, nan ranje d mwens 1, ki se ranje anba a, ak 2 pozisyon d mwens, oswa kolòn d mwens 2, nou pral mete ke a 2, ak kolòn d mwens 3 nou ap ale nan mete nan 1. Se konsa, sa se sèlman ranvèse kote 1 an ak 2 kounye a yo ye. Finalman, nou ap ale nan mete anpil nan anba dwa egal a vid, kote vid ki te hash yo defini nan tèt la kòm 0. Se konsa, sa ki te pa entèdi sa nesesè, depi sa a pou bouk ki pral gen mete bò dwat la anba a 0, depi vann san preskripsyon pral natirèlman rive nan 0. Men, ki depann sou nou konnen ke vid te ache yo jwenn yon 0. Si m 'antre nan pwogram sa a epi pita chanje vid nan tèt la nan 100, li dwe ap travay toujou. Se konsa, sa a se jis fè si ke nan dwa anba a se aktyèlman egal a nou vid valè. Finalman, nou gen de varyab mondyal, Se konsa, vid mwen ak vid j, epi nou wè sa yo te deklare nan tèt la. Apre sa, nou pral sèvi ak moun ki de mondyal varyab nan kenbe tras nan la pozisyon nan vid la, se konsa ke nou pa fè sa bezwen gade nan tout nan Komisyon Konsèy jwenn vid nan chak yon sèl fwa nou eseye fè yon mouvman. Se konsa, pozisyon nan vid la toujou se ale nan kòmanse nan bò dwat la anba. Se konsa, bò dwat la anba yo bay nan endis d mwens 1, d mwens 1. Se konsa, sa a, se ini. Koulye a, nou deplase sou trase. Se konsa, trase a pwal menm jan an kote nou ap ale nan repňte sou tablo a tout antye. E nou jis vle ekri ak lèt ​​detache valè a sa a, se nan chak pozisyon nan tablo a. Se konsa, isit la, nou ap enprime valè a ki nan nan chak pozisyon nan tablo a. Apre sa, remake ke n ap fè -. Epi sa a, jis di printf ki kèlkeswa si li nan yon chif youn oswa de chif nimewo, nou toujou vle li nan Leve kanpe, pran de kolòn nan ekri ak lèt ​​detache a soti, se konsa ke si nou gen de chif ak yon nimewo chif nan tablo a menm, nou tablo ap toujou gade bèl ak kare. Se konsa, nou vle fè sa pou chak valè nan tablo a yo, eksepte pou vid la. Se konsa, si pozisyon an nan tablo a egal vid, lè sa a nou espesyalman nan vle enprime soti jis yon souliye ki reprezante vid la, olye pou yo tou sa valè a an nan vid aktyèlman se. Finalman, nou vle ekri an lèt detache soti yon liy nouvo. Remake sa a se toujou anndan deyò a pou bouk, men deyò enteryè a pou bouk. Depi deyò sa a pou bouk ki iteration sou tout ranje, epi konsa printf sa a se ale nan jis ekri ak lèt ​​detache yon liy nouvo, se konsa nou deplase sou enprime soti pwochen ranje a. Epi sa a, li pou trase. Se konsa, kounye a kite a deplase sou pou avanse pou pi. Koulye a, nou pase deplase, mozayik a ki la se itilizatè te antre nan nan jwèt la - yo antre nan mozayik la yo vle pou avanse pou pi - ak w ap sipoze retounen yon bouleen, se konsa swa vre oubyen fo, tou depann de si wi ou non ke deplase te aktyèlman ki valab - si wi ou non ke mozayik kapab deplase nan espas ki la vid. Se konsa, isit la, nou deklare yon varyab lokal yo, tile_1 ak tile_j, ki fè yo ale nan dwe menm jan ak blank_i ak blank_j, eksepte li a ale nan kenbe tras nan la pozisyon nan mozayik la. Koulye a isit la, nou ap ale nan sèvi ak blank_i ak blank_j lè y'a fè tout dwa, se konsa isit la nan vid la sou tablo a. Koulye a, se mozayik nan pi wo a vid la? Èske mozayik nan nan kite nan lavil la? Èske mozayik nan a dwat a vid la? Èske mozayik ki anba la a vid la? Se konsa, si mozayik a se nan nenpòt nan moun sa pozisyon, Lè sa a, nou konnen ke mozayik la ka brannen l 'nan plas la vid ak ka vid la dwe demenaje ale rete nan kote a mozayik kounye a se. Se konsa, isit la, nou di si tablo nan pozisyon blank_i mwens 1 blank_j. Se konsa, sa a se li di se mozayik la pi wo a vid la ye kounye a? Men, si se konsa, nou pral sonje ki se pozisyon nan mozayik la. Mozayik a se nan yon pozisyon blank_i mwens 1 ak blank_j. kounye a an premye, nou menm tou nou gen chèk sa-a dwa isit la, se konsa blank_i se pi gran pase 0. Poukisa nou vle fè sa? Bon, si vid a se nan tèt ranje a nan tablo a, lè sa a nou pa vle gade pi wo a vid la pou mozayik nan depi pa gen anyen pi wo a tèt la ranje nan tablo a. Sa a se fason ou ta ka fini ap resevwa yon bagay tankou yon fay segmentation oswa pwogram ou an ta ka jis travay nan fason inatandi. Se konsa, sa a se fè si ke nou pa fè sa gade nan tout tanp zidòl ki pa ki valid. Koulye a, nou ap ale nan fè menm bagay la pou tout lòt konbinezon posib. Se konsa, isit la, nou ap chèche pi ba a vid la yo wè si sa a, se mozayik la. Epi nou gen asire tou ke nou ap pa sou ranje anba a, oswa lòt bagay nou pa ta dwe gade pou mozayik la. Isit la, nou ap ale nan gade sou bò goch la nan vid la yo wè si li nan mozayik la. Apre sa, nou pa ta dwe gade sou bò goch la si nou ap nan kolòn nan leftmost. Ak isit la nou pral gade nan la dwat Bondye ki gen vid la, epi nou pa ta dwe gade a dwat a si nou ap nan kolòn nan rightmost. Se konsa, si Pa gen yonn nan bagay sa yo yo te vre, sa vle di mozayik a pa t 'adjasan vid la ak nou ka retounen fo. Deplase a pa t 'ki valid. Men, si youn nan moun ki te vre, Lè sa a, nan pwen sa a, nou konnen ke tile_i ak tile_j ki egal a la pozisyon nan mozayik la. Se konsa, nou ka mete tablo a nan pozisyon tile_i ak tile_j. Nou konnen valè a nouvo yo pral vid la e ke blank_i nan pozisyon blank_j, ki te orijinal la vid - nou konnen mozayik nan se ale nan avanse pou pi a. Avi nou pa gen aktyèlman fè yon reyèl swap isit la, depi nou konnen an valè ki bezwen yo pral figire nan pozisyon sa yo. Nou pa bezwen yon ti tan varyab alantou. Finalman, nou bezwen sonje ke nou gen varyab mondyal nou an ke yo kenbe tras nan pozisyon an nan vid la. Se konsa, nou vle mete pozisyon nan vid la yo dwe kote mozayik nan orijinal te ye a. Finalman, nou tounen vre depi deplase nan te gen siksè. Nou avèk siksè swap la vid ak mozayik la. Tout dwa, se konsa pase nou bezwen tcheke te genyen. Se konsa, te genyen Menm jan an tou retounen yon bouleen kote vre ki pral endike ke nan te itilizatè te genyen jwèt la. Ak fo se ki endike ke jwèt la se toujou prale. Itilizatè a pa te genyen. Se konsa, sa a se pral fè bèl anpil opoze a nan ini, kote ini, sonje, nou inisyalize tablo a a 15, 14, 13, 12, sou sa. Lè nou konsidere ke te genyen, nou vle tcheke si la Komisyon Konsèy se 1, 2, 3, 4, 5, ak sou sa. Se konsa, nou ap ale nan inisyalize nou vann san preskripsyon nan 1 depi se sa ki tèt la bò gòch nan tablo a ta dwe. Lè sa a, nou pral bouk sou tablo a tout antye. Se pou yo inyore kondisyon sa a pou yon dezyèm fwa. Apre sa, kondisyon sa a se jis ale nan chèk se tablo a nan pozisyon sa a egal a konte yo ye kounye a? Si se konsa, enkreman konte a pou ke nan pwochen pozisyon nou gade nan se youn ki pi wo pase pozisyon nan nou nan kounye a. Se konsa, sa a, se ki jan nou jwenn nan gòch anwo yo ta dwe 1. Enkreman konte a 2. Gade nan pozisyon nan pwochen an. Èske sa se 2? Si se konsa, enkreman konte a 3. Next pozisyon, sa a se 3? Si se konsa, enkreman konte a a 4, yo ak sou sa. Se konsa, si gen okenn pozisyon sou la tablo ki pa egal a konte nou an, Lè sa a, nou vle retounen fo depi lè sa vle di gen nan kèk mozayik se sa ki pa nan pozisyon ki kòrèk la. Se konsa, isit la, sa ki kondisyon sa a ap fè? Oke, sonje ke vid la se sipoze ale sou bò dwat la anba. Ak valè vid la ta ka pa nesesèman egal a valè a nan la vann san preskripsyon ki se yo pral rive nan nan bò dwat la anba. Se konsa, nou espesyalman vle tcheke si mwen egal egal d mwens 1 ak j egal egal d mwens 1 - ki se li di si nou ap chèche a bò dwat la anba Komisyon Konsèy la - Lè sa a, nou jis vle kontinye. Nou vle sote sa a an patikilye iterasyon nan pou bouk la. Se konsa, si nou jere jwenn nan sa a pare solèy pou bouk, ki vle di ke pa te gen okenn mozayik sa ki te nan pozisyon nan kòrèk. Lèfini, nou kraze soti nan bouk la epi pou yo rive isit la, kote nou ka retounen vre. Tout mozayik yo te nan pozisyon yo kòrèk ak sa vle di itilizatè a gen te genyen jwèt la. Epi sa a, li. Non mwen se Rob Bowden, ak sa a te 15.