Rob BOWDEN: Hi. Mimi nina Rob, na natumaini yako mchezo kwa ajili ya mchezo wa miaka 15. Sasa, kuna kazi nne unahitaji kutekeleza katika mpango huu - init, kuteka, hoja, na alishinda. Kwa hiyo, hebu tuangalie init. Hapa, tunaona jambo la kwanza tuko kwenda kufanya ni kutangaza variable aitwaye counter. Ni kwenda kuanzishwa mara d d minus 1. Kumbuka kwamba d ni mwelekeo wa bodi yetu. Jinsi init ni kwenda kufanya kazi ni itakuja iterate juu ya bodi nzima na sisi ni kwenda kuanza upande wa kushoto juu. Na hebu sema tu sisi na 4 na 4 bodi. Hivyo juu kushoto tuko kwenda kusema ni 15. Na kisha sisi ni kwenda tu kuhesabu kupitia bodi, akisema 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, na kadhalika. Hivyo upande wa juu kushoto, tunatarajia kuwa mara d d minus 1, ambayo katika 4 na 4 kesi ni kwenda kuwa 16 minus 1, ambayo ni usahihi 15. Na sasa hapa ambapo sisi ni kwenda iterate juu ya bodi nzima. Na sisi ni kwenda kuweka kila nafasi katika bodi ya thamani ya sasa ya kukabiliana na yetu, na kisha kukabiliana na ni kwenda kwa kuongezwa, ili ijayo nafasi sisi kufikia ni kwenda na kukabiliana na kuwa moja chini ya nafasi uliopita. Hivyo sisi awali alikuwa 15 na kuongezwa counter. Hivyo basi sisi ni kwenda kuwapa 14 nafasi ya pili, decrement counter, na tunakwenda kwa ajili 13, na kadhalika. Hatimaye, sisi haja ya kushughulikia kona kesi ambapo, kama bodi ina hata mwelekeo, basi tu kufanya 15, 14, 13, 12, njia yote chini ya 3, 2, 1, ni ataondoka kwetu na unsolvable bodi. Na tuna wabadilishane 1 na 2. Hivyo, kama d mod 2 ni sawa na 0, kwamba jinsi sisi ni kwenda kuangalia ili kuona kama hata. Kama d mod 2 ni sawa na 0, basi katika mstari d minus 1, ambayo ni mstari chini, na nafasi d bala 2, au safu d minus 2, tunakwenda kuweka kwamba 2, na safu d minus 3 tuko kwenda kuweka 1. Hivyo hiyo kupunguza tu ambapo 1 na 2 sasa ni. Hatimaye, sisi ni kwenda kuweka sana chini haki sawa kwa tupu, ambapo tupu imekuwa hash inavyoelezwa juu kama 0. Kwa hiyo, kwamba hakuwa madhubuti muhimu, tangu hii kwa kitanzi ni kwenda na kuweka sahihi chini 0, tangu kukabiliana na itakuwa kawaida kufikia 0. Lakini hiyo hutegemea sisi kujua kwamba tupu ilikuwa heshi kupata 0. Kama mimi kwenda katika mpango huu na baadaye kubadili tupu juu hadi 100, ni lazima bado kazi. Hivyo hii ni maamuzi tu kuhakikisha kwamba haki ya chini ni kweli sawa na yetu tupu thamani. Hatimaye, tuna vigezo mbili kimataifa, hivyo tupu i na tupu j, na tunaona wale alitangaza katika juu. Na sisi ni kwenda kutumia wale kimataifa mbili vigezo kuweka wimbo wa nafasi ya tupu, hivyo kwamba sisi si haja ya kuangalia kupitia nzima bodi ya kupata tupu kila moja wakati sisi kujaribu kufanya hoja. Hivyo nafasi ya tupu daima ni kwenda kuanza kulia chini. Hivyo haki ya chini ni kutolewa kwa fahirisi d minus 1, d minus 1. Kwa hiyo, hiyo ni init. Sasa sisi kuendelea na kuteka. Hivyo, kuteka ni kwenda kuwa sawa ambapo tunakwenda iterate juu ya bodi nzima. Na sisi tu wanataka magazeti thamani kwamba katika kila nafasi ya bodi. Hivyo hapa, sisi ni uchapishaji thamani kwamba katika kila nafasi ya bodi. Na taarifa kwamba sisi ni kufanya -. Na anayewambia printf tu kwamba bila kujali kama ni tarakimu moja au tarakimu mbili idadi, sisi bado unataka kwa kuchukua nguzo mbili katika magazeti nje, ili kwamba kama tuna mbili tarakimu na moja idadi tarakimu katika bodi hiyo, yetu bodi bado kuangalia nzuri na za mraba. Hivyo tunataka kufanya hivyo kwa kila thamani katika bodi, ila kwa tupu. Hivyo, kama nafasi katika bodi ni sawa na tupu, kisha sisi hasa unataka magazeti nje tu kusisitiza kuwakilisha tupu, badala ya chochote thamani ya tupu kweli ni. Hatimaye, tunataka magazeti nje line mpya. Taarifa kwamba hii bado ni ndani ya nje kwa ajili ya kitanzi, lakini nje ndani kwa ajili ya kitanzi. Tangu nje hii kwa kitanzi ni iterating juu ya safu wote, na hivyo printf hii ni kwenda tu magazeti line mpya, hivyo sisi kuendelea na magazeti nje ya mstari unaofuata. Na kwamba ni kwa sare. Kwa hiyo, sasa basi hoja juu ya hoja. Sasa, sisi kupita hoja, tile kwamba user ni aliingia katika mchezo - wao kuingia tile wanataka hoja - na wewe ni wanatakiwa kurudi bool, hivyo ama kweli au uongo, kulingana na kama kwamba hoja ilikuwa kweli halali - kama tile ambayo inaweza kuwa kuhamia katika nafasi tupu. Hivyo hapa, sisi kutangaza variable mitaa, tile_1 na tile_j, ambayo ni kwenda kuwa sawa na blank_i na blank_j, ila ni kwenda kuweka wimbo wa nafasi ya tile. Sasa hapa, sisi ni kwenda kutumia blank_i na blank_j na kusema haki wote, hivyo hapa ni tupu kwenye ubao. Sasa, ni tile juu ya tupu? Ni tile upande wa kushoto wa tupu? Ni tile na haki ya tupu? Ni tile chini tupu? Hivyo, kama tile ni katika yeyote kati ya wale nafasi, basi tunajua kuwa tile inaweza kuhamia katika doa tupu na tupu inaweza kuhamia ambapo tile sasa ni. Hivyo hapa, tunasema kama bodi katika nafasi ya blank_i minus 1 blank_j. Hivyo hii ni kusema ni tile juu ya tupu ya sasa? Na kama ni hivyo, sisi ni kwenda kukumbuka kwamba ni msimamo wa tile. tile ni katika nafasi ya blank_i minus 1 na blank_j. sasa kwanza, sisi pia kuwa na kuangalia hii haki hapa, hivyo blank_i ni zaidi ya 0. Kwa nini tunataka kufanya hivyo? Naam, kama tupu ni katika mstari wa juu wa bodi, kisha sisi hawataki kuangalia juu ya tupu kwa tile tangu hakuna juu juu mstari wa bodi. Hii ni jinsi gani inaweza kuishia kupata kitu kama kosa segmentation au mpango wako ili tu kazi katika njia zisizotarajiwa. Kwa hiyo, hili ni kuhakikisha kwamba sisi si kuangalia katika maeneo ambayo si halali. Sasa tunakwenda kufanya kitu kimoja kwa wote mchanganyiko nyingine iwezekanavyo. Hivyo hapa, sisi ni kuangalia chini tupu kuona kama kwamba ni tile. Na sisi pia kuhakikisha sisi ni si juu ya mstari chini, au mwingine sisi lazima kuangalia kwa tile. Hapa, sisi ni kwenda kuangalia upande wa kushoto wa tupu kuona kama ni tile. Na sisi lazima si kuangalia kwa upande wa kushoto kama tuko katika safu leftmost. Na hapa sisi ni kwenda kuangalia kwa haki ya tupu, na sisi lazima si kuangalia kwa haki kama sisi ni katika safu rightmost. Hivyo, kama hakuna mambo hayo ni kweli, hiyo ina maana tile hakuwa karibu tupu na sisi anaweza kurudi uongo. hoja ilikuwa si halali. Lakini, kama moja ya wale walikuwa kweli, basi hatua hii, tunajua kwamba tile_i na tile_j ni sawa na nafasi ya tile. Na hivyo, tunaweza update bodi katika nafasi tile_i na tile_j. Tunajua thamani mpya itakuwa tupu na kwamba nafasi blank_i blank_j, ambayo ilikuwa ya awali tupu - tunajua tile ni kwenda kuhamia huko. Taarifa sisi si kweli kuwa kwa kufanya wabadilishane halisi hapa, kwa sababu tunajua maadili ambayo haja ya kuwa na kuingizwa katika nafasi hizo. Hatuna haja ya muda variable kote. Hatimaye, tunahitaji kukumbuka kwamba sisi kuwa na vigezo wetu wa kimataifa kwamba ni kuweka wimbo wa nafasi ya tupu. Hivyo tunataka update nafasi ya tupu kuwa ambapo tile awali ilikuwa. Hatimaye, sisi kurudi kweli tangu hoja ilikuwa na mafanikio. Sisi mafanikio kubadilishana tupu na tile. Yote ya haki, hivyo mwisho sisi haja ya kuangalia won. Hivyo, alishinda vile vile anarudi bool ambapo kweli ni kwenda zinaonyesha kuwa user ameshinda mchezo. Na uongo ni kuonyesha kwamba mchezo bado ni kwenda. user si alishinda. Kwa hiyo, hili ni kwenda kuwa pretty much kinyume cha init, ambapo init, kumbuka, sisi initialize bodi hadi 15, 14, 13, 12, kadhalika. Wakati mshindi, tunataka kuangalia kama bodi ni 1, 2, 3, 4, 5, na kadhalika. Kwa hiyo, tunakwenda initialize wetu kukabiliana na 1 tangu kwamba ni nini juu upande wa kushoto wa bodi lazima. Na kisha tunakwenda kwa kitanzi juu ya bodi nzima. Hebu kupuuza hali hii kwa ajili ya pili. Na hali hii ni kwenda tu kuangalia ni bodi katika nafasi hii sawa na makosa ya sasa? Kama ni hivyo, nyongeza kuhesabu ili nafasi ya pili sisi kuangalia ni moja ya juu kuliko nafasi sisi ni katika hivi sasa. Hivyo ndivyo sisi kupata juu upande wa kushoto lazima 1. Nyongeza kuhesabu 2. Angalia katika nafasi ijayo. Je, hii ni 2? Kama ni hivyo, nyongeza kuhesabu hadi 3. Nafasi ya pili, ni hii 3? Kama ni hivyo, nyongeza kuhesabu 4, na kadhalika. Kwa hiyo, kama kuna nafasi yoyote juu ya bodi hiyo haina sawa kuhesabu yetu, kisha tunataka kurudi uongo tangu kwamba ina maana kuna baadhi tile kwamba ni si katika msimamo sahihi. Hivyo hapa, ni nini hali hii kufanya? Vizuri, kumbuka kwamba tupu ni wanatakiwa kwenda juu ya haki ya chini. Na thamani tupu ya nguvu si lazima sawa thamani ya kukabiliana na kwamba ni kwenda kufikiwa chini ya haki. Hivyo sisi hasa wanataka kuangalia kama i sawa na sawa na d minus 1 na j usawa sawa na d minus 1 - ambayo ni kusema kama sisi ni kuangalia haki ya chini ya bodi - kisha sisi tu unataka kuendelea. Tunataka ruka hii hasa iteration ya kwa kitanzi. Na hivyo, kama sisi kusimamia na kupata njia hii Furushi kwa kitanzi, hiyo ina maana kwamba kulikuwa hakuna tile kwamba alikuwa katika sahihi msimamo. Na sisi kuvunja nje ya kitanzi na kuja hapa, ambapo tunaweza kurudi kweli. Tiles wote walikuwa katika nafasi sahihi na hiyo ina maana mtumiaji alishinda mchezo. Na hiyo ni yake. Jina langu ni Rob Bowden, na hii ilikuwa 15.