ROB BOWDEN: Hi. Rwy'n Rob, ac yr wyf yn gobeithio eich gêm ar gyfer gêm o 15. Erbyn hyn, mae pedair swyddogaeth eu hangen arnoch i weithredu yn y rhaglen hon - init, tynnu, yn symud, ac enillodd. Felly, gadewch i ni edrych ar init. Yma, rydym yn gweld y peth cyntaf rydym yn mynd i wneud yw datgan newidyn a elwir yn cownter. Mae'n mynd i gael ei ymgychwyn i amser d d minws 1. Cofiwch fod ch yw'r dimensiwn ein bwrdd. Sut init yn mynd i'r gwaith yn ei fod yn mynd i ailadrodd dros y bwrdd cyfan ac rydym yn mynd i ddechrau ar y chwith uchaf. A gadewch i 'jyst dweud ein cael 4 o 4 bwrdd. Felly mae'r top chwith rydym yn mynd i ddweud yw 15. Ac yna rydym yn jyst yn mynd i gyfrif drwy'r byrddau, gan ddweud 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, ac yn y blaen. Felly, y chwith uchaf, rydym yn disgwyl i fod yn amser d d minws 1, sydd yn y 4 o 4 achos yn mynd i fod yn 16 llai 1, sydd yn gywir 15. Ac yn awr dyma lle'r ydym yn mynd i ailadrodd dros y bwrdd cyfan. Ac rydym yn mynd i osod pob swydd yn y bwrdd i werth presennol ein cownter, ac yna cownter yn mynd i lleihau a, fel bod y nesaf sefyllfa rydym yn cyrraedd yn mynd i gael cownter fod yn un yn llai na y sefyllfa flaenorol. Felly, rydym yn y lle cyntaf oedd 15 ac lleihau a cownter. Felly, yna rydym yn mynd i neilltuo 14 i'r sefyllfa nesaf, cownter lleihau a, ac rydym yn mynd i neilltuo 13, ac yn y blaen. Yn olaf, mae angen i ni drin y gornel achos lle, os bydd y bwrdd yn cael hyd yn oed yn dimensiwn, yna dim ond yn gwneud 15, 14, 13, 12, yr holl ffordd i lawr i 3, 2, 1, yn mynd i adael i ni bwrdd unsolvable. Ac mae'n rhaid i gyfnewid y 1 a 2. Felly, os d mod 2 yn dychwelyd 0, dyna sut yr ydym yn mynd i wirio i weld os mae hyd yn oed. Os yw d mod 2 yn dychwelyd 0, yna yn rhes d minws 1, sef y rhes gwaelod, a sefyllfa d minws 2, neu golofn d llai 2, rydym yn mynd i sefydlu hynny i 2, ac colofn d minws 3 rydym yn mynd i osod i 1. Felly, sydd newydd bacio lle 1 a 2 ar hyn o bryd. Yn olaf, rydym yn mynd i osod yr union gwaelod hawl cyfartal i wag, lle y gwag wedi cael ei ddiffinio hash ar y brig fel 0. Felly, nid oedd hynny'n hollol angenrheidiol, gan fod hyn am ddolen yn mynd i gael gosod y gwaelod ar y dde i 0, gan fod Bydd cownter yn naturiol yn cyrraedd 0. Ond mae hynny'n dibynnu ar i ni wybod y wag yn hashed i ddod o hyd i 0. Os byddaf yn mynd yn y rhaglen hon ac yn ddiweddarach newid wag ar y brig i 100, mae'n Dylai dal i weithio. Felly, mae hyn yn unig yw sicrhau bod y gwaelod ar y dde mewn gwirionedd cyfartal i'n gwerth yn wag. Yn olaf, mae gennym ddau newidyn byd-eang, fel fi a j yn wag yn wag, ac rydym yn gweld rhai a datgan ar y brig. Ac rydym yn mynd i ddefnyddio y ddau fyd-eang newidynnau i gadw golwg ar y lleoliad y wag, fel nad ydym yn ei wneud Mae angen i edrych drwy'r holl bwrdd i ddod o hyd i'r wag i bob un tro y byddwn yn ceisio gwneud symud. Felly, lleoliad y wag bob amser yn mynd i ddechrau ar y dde gwaelod. Felly, yr hawl gwaelod yn cael ei roi gan mynegeion d minws 1, d minws 1. Felly, dyna init. Nawr rydym yn symud ymlaen i dynnu. Felly, raffl yn mynd i fod yn debyg lle rydym yn mynd i ailadrodd dros y bwrdd cyfan. Ac rydym dim ond eisiau i argraffu'r gwerth dyna ym mhob lleoliad y bwrdd. Felly dyma, rydym yn argraffu'r gwerth sy'n ym mhob lleoliad y bwrdd. Ac yn sylwi ein bod yn ei wneud -. A dyna i 'jyst dweud printf sy'n waeth beth os yw'n un digid neu dau ddigid, rydym yn dal eisiau iddo gymryd hyd at ddwy golofn yn y print allan, felly os gennym ddau digid ac un rhifau digid yn yr un bwrdd, mae ein Bydd y bwrdd yn dal i edrych yn neis ac yn sgwâr. Felly, rydym yn awyddus i wneud hynny ar gyfer pob gwerth yn y bwrdd, ac eithrio ar gyfer y yn wag. Felly, os yw'r swydd yn y bwrdd yn hafal i y wag, yna rydym yn benodol eisiau i argraffu dim ond tanlinellu i gynrychioli'r wag, yn hytrach na beth bynnag yw gwerth y wag mewn gwirionedd. Yn olaf, rydym eisiau argraffu allan linell newydd. Hysbysiad bod hyn yn dal y tu mewn yr allanol ar gyfer ddolen, ond y tu allan y mewnol ar gyfer ddolen. Ers allanol hon ar gyfer ddolen yn bwysleisio'r dros yr holl rhesi, ac felly printf mae hyn yn mynd i ychydig argraffu llinell newydd, felly rydym yn symud ymlaen i argraffu'r rhes nesaf. A dyna ni am gêm gyfartal. Felly, nawr gadewch i symud ymlaen i symud. Nawr, rydym yn pasio yn symud, y deilsen bod y defnyddiwr yn cael ei gofnodi yn y gêm - maent yn mynd i mewn i'r teils y maent am ei symud - ac rydych yn fod i ddychwelyd bool, felly naill ai yn wir neu gau, yn dibynnu ar a oedd y symud oedd mewn gwirionedd yn ddilys - a oes modd teils fod yn symud i mewn i'r gofod yn wag. Felly dyma, rydym yn datgan newidyn lleol, tile_1 a tile_j, sydd yn mynd i yn debyg i'r blank_i a blank_j, ac eithrio ei fod yn mynd i gadw golwg ar y lleoliad y teils. Nawr dyma, rydym yn mynd i ddefnyddio blank_i a blank_j a dweud iawn, felly dyma y gwag ar y bwrdd. Nawr, yw'r teils uwchben y wag? A yw'r teils i'r chwith y wag? A yw'r teils ar y dde o'r wag? A yw'r teils o dan y wag? Felly, os bydd y teils yn unrhyw un o'r rhai swyddi, yna rydym yn gwybod bod y teils gellir eu symud i mewn i'r fan a'r lle gwag a gall y wag yn cael ei symud i'r lle y teils ar hyn o bryd. Felly dyma, rydym yn dweud os y bwrdd ger y safle blank_i minws 1 blank_j. Felly, mae hyn yn ei ddweud yw y deilsen yn uwch na'r wag ar hyn o bryd? Ac os felly, rydym yn mynd i gofio dyna yw safbwynt y teils. Mae'r teils yn ei le blank_i minws 1 a blank_j. awr gyntaf, mae gennym hefyd y gwiriad hwn i'r dde yma, felly blank_i yn fwy na 0. Pam ydym ni eisiau ei wneud hynny? Wel, os yw'r wag yn y rhes uchaf y bwrdd, yna nid ydym am i edrych yn uwch na'r wag ar gyfer y teils ers nid oes unrhyw beth yn uwch na'r top res y bwrdd. Mae hyn yn sut y byddwch yn y pen draw yn cael rhywbeth fel wall neu efallai y bydd eich rhaglen yn unig yn gweithio mewn ffyrdd annisgwyl. Felly, mae hyn yn gwneud yn siŵr nad ydym yn ei wneud edrych mewn mannau nad ydynt yn ddilys. Nawr rydym yn mynd i wneud yr un peth ar gyfer holl gyfuniadau posibl eraill. Felly dyma, rydym yn edrych o dan y wag i weld os dyna'r teils. Ac mae'n rhaid i ni hefyd wneud yn siŵr ein bod yn nid ar y rhes gwaelod, neu fel arall ni Ni ddylai chwilio am y teils. Yma, rydym yn mynd i edrych ar y chwith gwag i weld os mai dyma'r teils. Ac ni ddylem edrych i'r chwith os ydym yn y golofn leftmost. A dyma ni yn mynd i edrych i'r hawl y yn wag, ac ni ddylem edrych i'r dde os ydym yn yn y golofn rightmost. Felly, os nad oes un o'r pethau hynny yn wir, mae hynny'n golygu nad oedd y teils yn gyfagos i'r wag, ac rydym yn gallu dychwelyd ffug. Nid oedd y symudiad yn ddilys. Ond, os bydd un o'r rhai a oedd yn wir, yna yn pwynt hwn, rydym yn gwybod bod tile_i a tile_j yn hafal i'r lleoliad y teils. Ac felly, gallwn ddiweddaru'r bwrdd yn swyddi tile_i a tile_j. Rydym yn gwybod y bydd y gwerth newydd yn y wag a bod y sefyllfa blank_i blank_j, a oedd yn y gwreiddiol wag - rydym yn gwybod y teils yn mynd i symud yno. Yn sylwi nad oes gennym i wneud mewn gwirionedd yn cyfnewid go iawn yma, gan ein bod yn gwybod y gwerthoedd y mae angen eu mewnosod i'r swyddi hyn. Nid oes angen dros dro a amrywiol o gwmpas. Yn olaf, mae angen i ni gofio ein bod yn wedi ein newidynnau byd-eang sy'n cael eu cadw golwg ar y sefyllfa yr wag. Felly, rydym am i ddiweddaru'r sefyllfa gwag i fod yn lle y deilsen yn wreiddiol. Yn olaf, byddwn yn dychwelyd yn wir ers symud yn llwyddiannus. Rydym yn cyfnewid yn llwyddiannus wag gyda'r teils. Mae pob hawl, rydym mor ddiwethaf angen gwirio enillodd. Felly, enillodd yr un modd yn dychwelyd bool lle yn wir yn mynd i ddangos bod y defnyddiwr wedi ennill y gêm. Ac ffug sy'n dangos bod y gêm yn dal i fynd. Nid yw'r defnyddiwr wedi ennill. Felly, mae hyn yn mynd i fod yn 'n bert lawer y gwrthwyneb i init, lle mae init, cofiwch, rydym yn ymgychwyn y bwrdd i 15, 14, 13, 12, yn y blaen. Tra ennill, rydym am i wirio a yw'r bwrdd yn 1, 2, 3, 4, 5, ac yn y blaen. Felly, rydym yn mynd i ymgychwyn ein cownter i 1 ers dyna beth y brig Dylai chwith y bwrdd fod. Ac yna rydym yn mynd i ddolen dros y bwrdd cyfan. Gadewch i ni anwybyddu cyflwr hwn am eiliad. Ac yr amod hwn yn unig yn mynd i siec yw'r bwrdd yn y sefyllfa hon hafal i'r cyfrif presennol? Os felly, gynyddran y cyfrif fel bod y sefyllfa nesaf rydym yn edrych arno yw un yn uwch na'r sefyllfa yr ydym ar hyn o bryd. Felly dyna sut yr ydym yn cael y Dylai chwith uchaf fod yn 1. Cynyddiad y cyfrif i 2. Edrychwch ar y sefyllfa nesaf. A yw hyn yn 2? Os felly, cynyddiad y cyfrif i 3. Sefyllfa nesaf, a yw hyn 3? Os felly, gynyddran y cyfrif i 4, ac yn y blaen. Felly, os oes unrhyw safle ar y bwrdd sydd heb fod yn gyfartal ein cyfrif, yna rydym yn awyddus i ddychwelyd ffug ers yr yn golygu bod rhywfaint o teils sy'n nid yn y safle cywir. Felly dyma, beth y cyflwr hwn yn ei wneud? Wel, cofiwch fod y wag yn i fod i fynd ar y dde ar y gwaelod. Ac nid gwerth y wag yn gallai o reidrwydd yn gyfartal i werth y wrthweithio bod yn mynd i gael ei gyrraedd ar y dde gwaelod. Felly, rydym am yn benodol i wirio os fi hafal hafal d minws 1 a j gydradd yn hafal i d minws 1 - sy'n dweud os ydym yn edrych ar ochr dde gwaelod y bwrdd - yna rydym yn unig am barhau. Rydym am i hepgor y penodol iteriad y am ddolen. Ac felly, os ydym yn llwyddo i gael drwy'r nythu ar gyfer dolen, mae hynny'n golygu bod nid oedd unrhyw teils a oedd yn y sefyllfa anghywir. Ac rydym yn torri allan o'r cylch ac yn dod yma, lle y gallwn ddychwelyd wir. Roedd yr holl teils yn y safleoedd cywir ac mae hynny'n golygu y defnyddiwr wedi ennill y gêm. A dyna ni. Fy enw i yw Rob Bowden, ac roedd hyn yn 15.