>> ROB BOWDEN: Hæ.
Ég er Rob og ég vona þín leikur fyrir leik 15.
Nú, það eru fjórir aðgerðir sem þú þarft að innleiða í þessari áætlun - init,
teikna, færa, og vann.
Svo skulum við líta á init.
>> Hér sjáum við það fyrsta sem við erum að fara að gera er að lýsa yfir breytu
heitir gegn.
Það er að fara að frumstilla til d sinnum D mínus 1.
Mundu að d er vídd í stjórn okkar.
Hvernig init er að fara að vinna er það er að fara að iterate yfir umræðuborðinu
og við erum að fara að byrja efst til vinstri.
>> Og við skulum bara segja að við hafa 4 af 4 borð.
Svo efst til vinstri við erum að fara að segja er 15.
Og þá erum við bara að fara að telja gegnum stjórnum, segja 15, 14, 13,
12, 11, 10, 9, 8, 7, 6, 5, 4, og svo framvegis.
Þannig að efsta vinstri, búast við að vera d sinnum D mínus 1, sem á 4 með því 4
Málið er að fara að vera 16 mínus 1, sem er rétt 15.
>> Og nú er hér þar sem við erum að fara að iterate yfir umræðuborðinu.
Og við erum að fara að setja hverja stöðu í borð til núvirði
gegn okkar, og þá gegn er að fara til þess að telja, svo að næsta
stöðu við náum er að fara að hafa gegn að vera einn minna en
fyrri stöðu.
Þannig að við þurftum í upphafi 15 og lækka gegn.
Svo þá erum við að fara að úthluta 14 við Næsta staða, lækka gegn,
og við erum að fara að úthlutað 13, og svo framvegis.
>> Að lokum, þurfum við að takast á horninu ræða þar, ef stjórnin hefur enn
vídd, þá bara að gera 15, 14, 13, 12, alla leið niður í 3, 2, 1, er
að fara að yfirgefa okkur er unsolvable borð.
Og við verðum að skipta um 1 og 2.
Svo ef d unga fólkið 2 jafngildir 0, það er hvernig við ætlum að athuga
til að sjá hvort það er jafnvel.
Ef d unga fólkið 2 jafngildir 0, þá í röð d mínus 1, sem er neðri röðinni, og
Afstaða D mínus 2, eða Dálkur D mínus 2, við erum að fara að setja það í 2, og
Dálkur D mínus 3 við erum að fara að setja í 1.
Svo það er bara snúið þar 1 og 2 eru eins og er.
>> Að lokum, við erum að fara að setja mjög neðst til hægri jafn autt, þar
autt hefur verið tæti skilgreint efst jafnt og 0.
Svo, það var ekki brýna nauðsyn, þar sem þetta fyrir lykkja er að fara að hafa
setja neðst til hægri til 0, síðan gegn vilja náttúrulega ná 0.
En það treystir á okkur vita að autt var kjötkássa til að finna a 0.
Ef ég fer inn í þessa áætlun og síðar breyta auðan efst á 100, það
ætti enn að vinna.
>> Þannig að þetta er bara að ganga úr skugga um að neðst til hægri er í raun jafn okkar
autt gildi.
Að lokum, höfum við tvær alheims breytur, svo autt ég og eyða J, og við sjáum
þá lýsti efst.
Og við erum að fara að nota þá tveimur alþjóðlegum breytur til að halda utan um
staða auða, svo að við gerum ekki þurfa að horfa í gegnum allt
borð að finna auða hvert einasta tíma við að reyna að hreyfa sig.
Þannig að staða á óunna efninu alltaf er fara að byrja neðst til hægri.
Svo the botn réttur er gefið með tölur, 1 d-mínus 1, d mínus.
Svo, það er init.
>> Nú erum við að fara á að draga.
Svo draga er að fara að vera svipuð þar sem við erum að fara að iterate
yfir umræðuborðinu.
Og við viljum bara að prenta verðmæti sem er í hverja stöðu borð.
Svo hér erum við prentun á gildi sem í hverja stöðu borð.
Og taka eftir því að við erum að gera -.
Og það er bara að segja printf sem Óháð því hvort það er einn tölustafur eða
tveggja stafa tölu, viljum við samt að taka upp tvo dálka í prenta út,
þannig að ef við höfum tveggja stafa og einn stafa númer í sama borð, okkar
Stjórnin mun enn líta ágætur og ferningur.
>> Þannig að við viljum gera það fyrir hvert gildi að stjórn, nema fyrir auða.
Svo er, ef stöðu á borð jafngildir auða, þá erum við sérstaklega
vilt prenta út bara undirstrika til að tákna autt, í stað þess að
hvað gildi sem auður í raun er.
>> Að lokum viljum við að prenta út nýja línu.
Takið eftir að þetta er enn inni ytri fyrir lykkju, en utan
innri for lykkju.
Þar sem þetta ytri fyrir lykkja er iterating yfir allar færslur, og svo er þetta printf
að fara að prenta bara nýja línu, þannig að við fara að prenta út næsta róður.
Og það er það fyrir jafntefli.
>> Svo, nú skulum fara að færa.
Nú, fara við færa, flísar að notandi er færð í leiknum - þeir
slá inn flísar sem þeir vilja til að færa - og þú ert ímyndaður til að skila bool, svo
annaðhvort satt eða ósatt, eftir hvort sem ferðinni var í raun
Gildir - hvort sem flísar geta verið flutti inn í auða pláss.
>> Svo hér, lýsa við staðbundna breytu, tile_1 og tile_j, sem eru að fara að
vera svipuð blank_i og blank_j, nema það er að fara að halda utan um
staða flísar.
Nú hér erum við að fara að nota blank_i og blank_j og segja allt í lagi, svo
hér er autt á borðinu.
>> Nú er flísar ofan auða?
Er flísar til vinstri á auða?
Er flísar til hægri á auða?
Er flísar neðan auða?
Svo er, ef flísar er í hverri sem er af þeim stöður, þá vitum vér, að flísar
er hægt að færa inn í auða stað og eyðuna má færa til þar sem
flísar er nú.
>> Svo hér, segjum við ef stjórn á stöðu blank_i mínus 1 blank_j.
Þannig að þetta er að segja er flísar ofan við núverandi autt?
Og ef svo er, erum við að fara að muna sem er staðsetning á flísar.
Flísar er í stöðu blank_i mínus 1 og blank_j.
nú fyrst, höfum við einnig þessa ávísun hérna, svo blank_i er
stærra en 0.
>> Hvers vegna viljum við gera það?
Jæja, ef autt er í efstu röð stjórnar, þá viljum við ekki að
líta ofan auða fyrir flísar síðan það er ekkert fyrir ofan við efsta
röð af borðinu.
Þetta er hvernig þú might endir upp getting eitthvað eins og skiptingu kenna eða
program gæti bara vinna í óvænta vegu.
Svo þetta er að tryggja að við gerum ekki líta á stöðum sem eru ekki gild.
>> Nú við erum að fara að gera það sama fyrir allar aðrar mögulegar samsetningar.
Svo hér erum við að leita hér að neðan auða til að sjá hvort það er flísar.
Og við verðum einnig að tryggja að við erum ekki á neðri röðinni, eða annað sem við
ætti ekki að líta á flísar.
Hér erum við að fara að horfa til vinstri auða til að sjá hvort það er flísar.
Og við ættum ekki að líta til vinstri ef við erum í dálknum lengst til vinstri.
Og hér erum við að fara að horfa til rétt af öskjunni, og við ættum ekki
líta til hægri ef við erum í rightmost dálki.
>> Svo, ef enginn af þessum hlutum væri satt, sem þýðir að flísar voru ekki samliggjandi
til autt og við getum return false.
Ferðinni var ekki gild.
En, ef einn af þeim væri satt, þá á þetta lið, við vitum að tile_i og
tile_j eru jafn staða flísar.
Og svo getum við uppfæra úr stjórninni á stöður tile_i og tile_j.
Við vitum að ný gildi verður autt og að staða blank_i
blank_j, sem var upprunalega autt - við vitum flísar er að fara að
flytja þangað.
>> Taka við í raun ekki að gera alvöru skipti hér, þar sem við vitum að
gildum sem þurfa að vera sett í þessum stöðum.
Við þurfa ekki tímabundna breytu í kring.
>> Að lokum, þurfum við að muna að við hafa alheims breytur sem eiga
halda utan um stöðu af öskjunni.
Þannig að við viljum að uppfæra stöðu eyðuna til að vera þar sem flísar
upphaflega var.
Að lokum, aftur við satt þar ferðinni var vel.
Við skipti tekist að autt með flísum.
>> Allt í lagi, svo síðasta sem við þarf að athuga vann.
Svo vann álíka skilar bool þar satt er að fara að gefa til kynna að
notandi hefur unnið leikinn.
Og falskur er bendir til þess að leikurinn er enn í gangi.
Notandinn hefur ekki unnið.
Svo, þetta er að fara að vera ansi mikið andstæða init, þar init,
Mundu, við frumstillt borð til 15, 14, 13, 12, svo á.
En vann, viljum við að athuga hvort borð er 1, 2, 3, 4, 5, og svo framvegis.
>> Svo erum við að fara að frumstilla okkar gegn 1 þar sem það er það sem efst
vinstri stjórnar ættu að vera.
Og þá erum við að fara að lykkja yfir umræðuborðinu.
Skulum hunsa þetta ástand fyrir a second.
Og þetta ástand er bara að fara að stöðva er um borð í þessari stöðu
jafnt og núverandi talningu?
Ef svo er, hækka talningu þannig að Næsta staða sem við skoðum er eitt hærri
en þeirri stöðu sem við erum á núna.
>> Svo er það hvernig við fáum efst til vinstri ætti að vera 1.
Vöxtur talningu í 2.
Horfðu á næstu stöðu.
Er þetta 2?
Ef svo er, hækka á talningu til 3.
Næsta staða, er þetta 3?
Ef svo er, hækka á talningu til 4, og svo framvegis.
Svo ef það er einhver staða á borð sem er ekki jafnt telja okkar,
þá viljum við return false þar sem þýðir að það er einhver flísar sem er
ekki í réttri stöðu.
>> Svo hér, hvað er þetta ástand að gera?
Jæja, muna að blank átti að fara á the botn réttur.
Og gæti gildi í auða er ekki endilega jöfn gildi á
gegn það er að fara að vera náð neðst til hægri.
Þannig að við viljum sérstaklega til að athuga hvort ég jafngildir jafngildir D mínus 1 og j jafn
jafngildir d mínus 1 - sem er að segja ef við eru að horfa á the botn réttur af
stjórnin - þá erum við bara langar að halda áfram.
Við viljum sleppa þessu tiltekna endurtekning á for lykkju.
>> Og svo, ef við stjórna til fá í gegnum þetta hreiður fyrir lykkju, sem þýðir að
það var engin flísar sem var í að röng staðsetning.
Og við brjótast út úr lykkja og koma hér, þar sem við getum aftur satt.
Allar flísar voru í rétta stöðu og það þýðir að notandinn hefur
vann leikinn.
Og það er það.
Mitt nafn er Rob Bowden, og þetta var 15.