1 00:00:00,000 --> 00:00:13,070 2 00:00:13,070 --> 00:00:13,715 >> ROB BOWDEN: Hi. 3 00:00:13,715 --> 00:00:17,800 Rwy'n Rob, ac yr wyf yn gobeithio eich gêm ar gyfer gêm o 15. 4 00:00:17,800 --> 00:00:22,040 Erbyn hyn, mae pedair swyddogaeth eu hangen arnoch i weithredu yn y rhaglen hon - init, 5 00:00:22,040 --> 00:00:24,650 tynnu, yn symud, ac enillodd. 6 00:00:24,650 --> 00:00:27,230 Felly, gadewch i ni edrych ar init. 7 00:00:27,230 --> 00:00:32,930 >> Yma, rydym yn gweld y peth cyntaf rydym yn mynd i wneud yw datgan newidyn 8 00:00:32,930 --> 00:00:34,600 a elwir yn cownter. 9 00:00:34,600 --> 00:00:37,620 Mae'n mynd i gael ei ymgychwyn i amser d d minws 1. 10 00:00:37,620 --> 00:00:40,200 Cofiwch fod ch yw'r dimensiwn ein bwrdd. 11 00:00:40,200 --> 00:00:43,840 Sut init yn mynd i'r gwaith yn ei fod yn mynd i ailadrodd dros y bwrdd cyfan 12 00:00:43,840 --> 00:00:46,050 ac rydym yn mynd i ddechrau ar y chwith uchaf. 13 00:00:46,050 --> 00:00:48,570 >> A gadewch i 'jyst dweud ein cael 4 o 4 bwrdd. 14 00:00:48,570 --> 00:00:51,220 Felly mae'r top chwith rydym yn mynd i ddweud yw 15. 15 00:00:51,220 --> 00:00:53,960 Ac yna rydym yn jyst yn mynd i gyfrif drwy'r byrddau, gan ddweud 15, 14, 13, 16 00:00:53,960 --> 00:00:58,510 12, 11, 10, 9, 8, 7, 6, 5, 4, ac yn y blaen. 17 00:00:58,510 --> 00:01:03,780 Felly, y chwith uchaf, rydym yn disgwyl i fod yn amser d d minws 1, sydd yn y 4 o 4 18 00:01:03,780 --> 00:01:08,290 achos yn mynd i fod yn 16 llai 1, sydd yn gywir 15. 19 00:01:08,290 --> 00:01:10,885 >> Ac yn awr dyma lle'r ydym yn mynd i ailadrodd dros y bwrdd cyfan. 20 00:01:10,885 --> 00:01:14,720 Ac rydym yn mynd i osod pob swydd yn y bwrdd i werth presennol 21 00:01:14,720 --> 00:01:19,090 ein cownter, ac yna cownter yn mynd i lleihau a, fel bod y nesaf 22 00:01:19,090 --> 00:01:22,300 sefyllfa rydym yn cyrraedd yn mynd i gael cownter fod yn un yn llai na 23 00:01:22,300 --> 00:01:23,690 y sefyllfa flaenorol. 24 00:01:23,690 --> 00:01:26,970 Felly, rydym yn y lle cyntaf oedd 15 ac lleihau a cownter. 25 00:01:26,970 --> 00:01:30,065 Felly, yna rydym yn mynd i neilltuo 14 i'r sefyllfa nesaf, cownter lleihau a, 26 00:01:30,065 --> 00:01:33,710 ac rydym yn mynd i neilltuo 13, ac yn y blaen. 27 00:01:33,710 --> 00:01:37,620 >> Yn olaf, mae angen i ni drin y gornel achos lle, os bydd y bwrdd yn cael hyd yn oed yn 28 00:01:37,620 --> 00:01:44,450 dimensiwn, yna dim ond yn gwneud 15, 14, 13, 12, yr holl ffordd i lawr i 3, 2, 1, yn 29 00:01:44,450 --> 00:01:46,780 mynd i adael i ni bwrdd unsolvable. 30 00:01:46,780 --> 00:01:49,390 Ac mae'n rhaid i gyfnewid y 1 a 2. 31 00:01:49,390 --> 00:01:52,930 Felly, os d mod 2 yn dychwelyd 0, dyna sut yr ydym yn mynd i wirio 32 00:01:52,930 --> 00:01:54,410 i weld os mae hyd yn oed. 33 00:01:54,410 --> 00:01:59,810 Os yw d mod 2 yn dychwelyd 0, yna yn rhes d minws 1, sef y rhes gwaelod, a 34 00:01:59,810 --> 00:02:05,430 sefyllfa d minws 2, neu golofn d llai 2, rydym yn mynd i sefydlu hynny i 2, ac 35 00:02:05,430 --> 00:02:07,860 colofn d minws 3 rydym yn mynd i osod i 1. 36 00:02:07,860 --> 00:02:12,170 Felly, sydd newydd bacio lle 1 a 2 ar hyn o bryd. 37 00:02:12,170 --> 00:02:16,270 >> Yn olaf, rydym yn mynd i osod yr union gwaelod hawl cyfartal i wag, lle y 38 00:02:16,270 --> 00:02:20,700 gwag wedi cael ei ddiffinio hash ar y brig fel 0. 39 00:02:20,700 --> 00:02:26,785 Felly, nid oedd hynny'n hollol angenrheidiol, gan fod hyn am ddolen yn mynd i gael 40 00:02:26,785 --> 00:02:30,610 gosod y gwaelod ar y dde i 0, gan fod Bydd cownter yn naturiol yn cyrraedd 0. 41 00:02:30,610 --> 00:02:34,610 Ond mae hynny'n dibynnu ar i ni wybod y wag yn hashed i ddod o hyd i 0. 42 00:02:34,610 --> 00:02:38,280 Os byddaf yn mynd yn y rhaglen hon ac yn ddiweddarach newid wag ar y brig i 100, mae'n 43 00:02:38,280 --> 00:02:39,770 Dylai dal i weithio. 44 00:02:39,770 --> 00:02:43,180 >> Felly, mae hyn yn unig yw sicrhau bod y gwaelod ar y dde mewn gwirionedd cyfartal i'n 45 00:02:43,180 --> 00:02:44,870 gwerth yn wag. 46 00:02:44,870 --> 00:02:50,270 Yn olaf, mae gennym ddau newidyn byd-eang, fel fi a j yn wag yn wag, ac rydym yn gweld 47 00:02:50,270 --> 00:02:53,360 rhai a datgan ar y brig. 48 00:02:53,360 --> 00:02:56,270 Ac rydym yn mynd i ddefnyddio y ddau fyd-eang newidynnau i gadw golwg ar y 49 00:02:56,270 --> 00:02:59,040 lleoliad y wag, fel nad ydym yn ei wneud Mae angen i edrych drwy'r holl 50 00:02:59,040 --> 00:03:03,890 bwrdd i ddod o hyd i'r wag i bob un tro y byddwn yn ceisio gwneud symud. 51 00:03:03,890 --> 00:03:08,450 Felly, lleoliad y wag bob amser yn mynd i ddechrau ar y dde gwaelod. 52 00:03:08,450 --> 00:03:13,270 Felly, yr hawl gwaelod yn cael ei roi gan mynegeion d minws 1, d minws 1. 53 00:03:13,270 --> 00:03:14,880 Felly, dyna init. 54 00:03:14,880 --> 00:03:17,040 >> Nawr rydym yn symud ymlaen i dynnu. 55 00:03:17,040 --> 00:03:19,370 Felly, raffl yn mynd i fod yn debyg lle rydym yn mynd i ailadrodd 56 00:03:19,370 --> 00:03:20,970 dros y bwrdd cyfan. 57 00:03:20,970 --> 00:03:25,400 Ac rydym dim ond eisiau i argraffu'r gwerth dyna ym mhob lleoliad y bwrdd. 58 00:03:25,400 --> 00:03:29,580 Felly dyma, rydym yn argraffu'r gwerth sy'n ym mhob lleoliad y bwrdd. 59 00:03:29,580 --> 00:03:32,280 Ac yn sylwi ein bod yn ei wneud -. 60 00:03:32,280 --> 00:03:37,410 A dyna i 'jyst dweud printf sy'n waeth beth os yw'n un digid neu 61 00:03:37,410 --> 00:03:42,010 dau ddigid, rydym yn dal eisiau iddo gymryd hyd at ddwy golofn yn y print allan, 62 00:03:42,010 --> 00:03:46,290 felly os gennym ddau digid ac un rhifau digid yn yr un bwrdd, mae ein 63 00:03:46,290 --> 00:03:49,450 Bydd y bwrdd yn dal i edrych yn neis ac yn sgwâr. 64 00:03:49,450 --> 00:03:54,190 >> Felly, rydym yn awyddus i wneud hynny ar gyfer pob gwerth yn y bwrdd, ac eithrio ar gyfer y yn wag. 65 00:03:54,190 --> 00:03:58,260 Felly, os yw'r swydd yn y bwrdd yn hafal i y wag, yna rydym yn benodol 66 00:03:58,260 --> 00:04:01,730 eisiau i argraffu dim ond tanlinellu i gynrychioli'r wag, yn hytrach na 67 00:04:01,730 --> 00:04:05,150 beth bynnag yw gwerth y wag mewn gwirionedd. 68 00:04:05,150 --> 00:04:08,500 >> Yn olaf, rydym eisiau argraffu allan linell newydd. 69 00:04:08,500 --> 00:04:11,970 Hysbysiad bod hyn yn dal y tu mewn yr allanol ar gyfer ddolen, ond y tu allan 70 00:04:11,970 --> 00:04:13,200 y mewnol ar gyfer ddolen. 71 00:04:13,200 --> 00:04:17,930 Ers allanol hon ar gyfer ddolen yn bwysleisio'r dros yr holl rhesi, ac felly printf mae hyn yn 72 00:04:17,930 --> 00:04:22,130 mynd i ychydig argraffu llinell newydd, felly rydym yn symud ymlaen i argraffu'r rhes nesaf. 73 00:04:22,130 --> 00:04:23,910 A dyna ni am gêm gyfartal. 74 00:04:23,910 --> 00:04:27,770 >> Felly, nawr gadewch i symud ymlaen i symud. 75 00:04:27,770 --> 00:04:32,590 Nawr, rydym yn pasio yn symud, y deilsen bod y defnyddiwr yn cael ei gofnodi yn y gêm - maent yn 76 00:04:32,590 --> 00:04:36,360 mynd i mewn i'r teils y maent am ei symud - ac rydych yn fod i ddychwelyd bool, felly 77 00:04:36,360 --> 00:04:39,300 naill ai yn wir neu gau, yn dibynnu ar a oedd y symud oedd mewn gwirionedd yn 78 00:04:39,300 --> 00:04:43,360 ddilys - a oes modd teils fod yn symud i mewn i'r gofod yn wag. 79 00:04:43,360 --> 00:04:48,340 >> Felly dyma, rydym yn datgan newidyn lleol, tile_1 a tile_j, sydd yn mynd i 80 00:04:48,340 --> 00:04:52,150 yn debyg i'r blank_i a blank_j, ac eithrio ei fod yn mynd i gadw golwg ar y 81 00:04:52,150 --> 00:04:54,910 lleoliad y teils. 82 00:04:54,910 --> 00:05:00,370 Nawr dyma, rydym yn mynd i ddefnyddio blank_i a blank_j a dweud iawn, felly 83 00:05:00,370 --> 00:05:01,930 dyma y gwag ar y bwrdd. 84 00:05:01,930 --> 00:05:04,420 >> Nawr, yw'r teils uwchben y wag? 85 00:05:04,420 --> 00:05:06,210 A yw'r teils i'r chwith y wag? 86 00:05:06,210 --> 00:05:07,420 A yw'r teils ar y dde o'r wag? 87 00:05:07,420 --> 00:05:08,970 A yw'r teils o dan y wag? 88 00:05:08,970 --> 00:05:13,330 Felly, os bydd y teils yn unrhyw un o'r rhai swyddi, yna rydym yn gwybod bod y teils 89 00:05:13,330 --> 00:05:16,390 gellir eu symud i mewn i'r fan a'r lle gwag a gall y wag yn cael ei symud i'r lle y 90 00:05:16,390 --> 00:05:18,240 teils ar hyn o bryd. 91 00:05:18,240 --> 00:05:26,400 >> Felly dyma, rydym yn dweud os y bwrdd ger y safle blank_i minws 1 blank_j. 92 00:05:26,400 --> 00:05:31,120 Felly, mae hyn yn ei ddweud yw y deilsen yn uwch na'r wag ar hyn o bryd? 93 00:05:31,120 --> 00:05:34,350 Ac os felly, rydym yn mynd i gofio dyna yw safbwynt y teils. 94 00:05:34,350 --> 00:05:37,870 Mae'r teils yn ei le blank_i minws 1 a blank_j. 95 00:05:37,870 --> 00:05:40,660 awr gyntaf, mae gennym hefyd y gwiriad hwn i'r dde yma, felly blank_i yn 96 00:05:40,660 --> 00:05:41,760 fwy na 0. 97 00:05:41,760 --> 00:05:43,410 >> Pam ydym ni eisiau ei wneud hynny? 98 00:05:43,410 --> 00:05:47,290 Wel, os yw'r wag yn y rhes uchaf y bwrdd, yna nid ydym am i 99 00:05:47,290 --> 00:05:51,240 edrych yn uwch na'r wag ar gyfer y teils ers nid oes unrhyw beth yn uwch na'r top 100 00:05:51,240 --> 00:05:52,430 res y bwrdd. 101 00:05:52,430 --> 00:05:55,950 Mae hyn yn sut y byddwch yn y pen draw yn cael rhywbeth fel wall neu 102 00:05:55,950 --> 00:05:59,030 efallai y bydd eich rhaglen yn unig yn gweithio mewn ffyrdd annisgwyl. 103 00:05:59,030 --> 00:06:04,310 Felly, mae hyn yn gwneud yn siŵr nad ydym yn ei wneud edrych mewn mannau nad ydynt yn ddilys. 104 00:06:04,310 --> 00:06:08,470 >> Nawr rydym yn mynd i wneud yr un peth ar gyfer holl gyfuniadau posibl eraill. 105 00:06:08,470 --> 00:06:13,250 Felly dyma, rydym yn edrych o dan y wag i weld os dyna'r teils. 106 00:06:13,250 --> 00:06:16,950 Ac mae'n rhaid i ni hefyd wneud yn siŵr ein bod yn nid ar y rhes gwaelod, neu fel arall ni 107 00:06:16,950 --> 00:06:18,910 Ni ddylai chwilio am y teils. 108 00:06:18,910 --> 00:06:25,040 Yma, rydym yn mynd i edrych ar y chwith gwag i weld os mai dyma'r teils. 109 00:06:25,040 --> 00:06:27,860 Ac ni ddylem edrych i'r chwith os ydym yn y golofn leftmost. 110 00:06:27,860 --> 00:06:30,100 A dyma ni yn mynd i edrych i'r hawl y yn wag, ac ni ddylem 111 00:06:30,100 --> 00:06:33,340 edrych i'r dde os ydym yn yn y golofn rightmost. 112 00:06:33,340 --> 00:06:37,820 >> Felly, os nad oes un o'r pethau hynny yn wir, mae hynny'n golygu nad oedd y teils yn gyfagos 113 00:06:37,820 --> 00:06:39,640 i'r wag, ac rydym yn gallu dychwelyd ffug. 114 00:06:39,640 --> 00:06:41,230 Nid oedd y symudiad yn ddilys. 115 00:06:41,230 --> 00:06:47,010 Ond, os bydd un o'r rhai a oedd yn wir, yna yn pwynt hwn, rydym yn gwybod bod tile_i a 116 00:06:47,010 --> 00:06:50,540 tile_j yn hafal i'r lleoliad y teils. 117 00:06:50,540 --> 00:06:55,210 Ac felly, gallwn ddiweddaru'r bwrdd yn swyddi tile_i a tile_j. 118 00:06:55,210 --> 00:06:59,820 Rydym yn gwybod y bydd y gwerth newydd yn y wag a bod y sefyllfa blank_i 119 00:06:59,820 --> 00:07:02,950 blank_j, a oedd yn y gwreiddiol wag - rydym yn gwybod y teils yn mynd i 120 00:07:02,950 --> 00:07:04,030 symud yno. 121 00:07:04,030 --> 00:07:07,610 >> Yn sylwi nad oes gennym i wneud mewn gwirionedd yn cyfnewid go iawn yma, gan ein bod yn gwybod y 122 00:07:07,610 --> 00:07:09,850 gwerthoedd y mae angen eu mewnosod i'r swyddi hyn. 123 00:07:09,850 --> 00:07:13,780 Nid oes angen dros dro a amrywiol o gwmpas. 124 00:07:13,780 --> 00:07:16,920 >> Yn olaf, mae angen i ni gofio ein bod yn wedi ein newidynnau byd-eang sy'n cael eu 125 00:07:16,920 --> 00:07:18,980 cadw golwg ar y sefyllfa yr wag. 126 00:07:18,980 --> 00:07:22,780 Felly, rydym am i ddiweddaru'r sefyllfa gwag i fod yn lle y deilsen 127 00:07:22,780 --> 00:07:24,190 yn wreiddiol. 128 00:07:24,190 --> 00:07:27,680 Yn olaf, byddwn yn dychwelyd yn wir ers symud yn llwyddiannus. 129 00:07:27,680 --> 00:07:31,110 Rydym yn cyfnewid yn llwyddiannus wag gyda'r teils. 130 00:07:31,110 --> 00:07:34,890 >> Mae pob hawl, rydym mor ddiwethaf angen gwirio enillodd. 131 00:07:34,890 --> 00:07:39,900 Felly, enillodd yr un modd yn dychwelyd bool lle yn wir yn mynd i ddangos bod y 132 00:07:39,900 --> 00:07:41,460 defnyddiwr wedi ennill y gêm. 133 00:07:41,460 --> 00:07:43,780 Ac ffug sy'n dangos bod y gêm yn dal i fynd. 134 00:07:43,780 --> 00:07:46,340 Nid yw'r defnyddiwr wedi ennill. 135 00:07:46,340 --> 00:07:52,100 Felly, mae hyn yn mynd i fod yn 'n bert lawer y gwrthwyneb i init, lle mae init, 136 00:07:52,100 --> 00:07:56,920 cofiwch, rydym yn ymgychwyn y bwrdd i 15, 14, 13, 12, yn y blaen. 137 00:07:56,920 --> 00:08:03,000 Tra ennill, rydym am i wirio a yw'r bwrdd yn 1, 2, 3, 4, 5, ac yn y blaen. 138 00:08:03,000 --> 00:08:06,600 >> Felly, rydym yn mynd i ymgychwyn ein cownter i 1 ers dyna beth y brig 139 00:08:06,600 --> 00:08:08,400 Dylai chwith y bwrdd fod. 140 00:08:08,400 --> 00:08:10,860 Ac yna rydym yn mynd i ddolen dros y bwrdd cyfan. 141 00:08:10,860 --> 00:08:13,690 Gadewch i ni anwybyddu cyflwr hwn am eiliad. 142 00:08:13,690 --> 00:08:18,410 Ac yr amod hwn yn unig yn mynd i siec yw'r bwrdd yn y sefyllfa hon 143 00:08:18,410 --> 00:08:20,790 hafal i'r cyfrif presennol? 144 00:08:20,790 --> 00:08:27,040 Os felly, gynyddran y cyfrif fel bod y sefyllfa nesaf rydym yn edrych arno yw un yn uwch 145 00:08:27,040 --> 00:08:29,690 na'r sefyllfa yr ydym ar hyn o bryd. 146 00:08:29,690 --> 00:08:32,700 >> Felly dyna sut yr ydym yn cael y Dylai chwith uchaf fod yn 1. 147 00:08:32,700 --> 00:08:33,950 Cynyddiad y cyfrif i 2. 148 00:08:33,950 --> 00:08:35,010 Edrychwch ar y sefyllfa nesaf. 149 00:08:35,010 --> 00:08:35,690 A yw hyn yn 2? 150 00:08:35,690 --> 00:08:37,659 Os felly, cynyddiad y cyfrif i 3. 151 00:08:37,659 --> 00:08:39,179 Sefyllfa nesaf, a yw hyn 3? 152 00:08:39,179 --> 00:08:42,440 Os felly, gynyddran y cyfrif i 4, ac yn y blaen. 153 00:08:42,440 --> 00:08:49,190 Felly, os oes unrhyw safle ar y bwrdd sydd heb fod yn gyfartal ein cyfrif, 154 00:08:49,190 --> 00:08:52,640 yna rydym yn awyddus i ddychwelyd ffug ers yr yn golygu bod rhywfaint o teils sy'n 155 00:08:52,640 --> 00:08:55,490 nid yn y safle cywir. 156 00:08:55,490 --> 00:08:58,810 >> Felly dyma, beth y cyflwr hwn yn ei wneud? 157 00:08:58,810 --> 00:09:02,170 Wel, cofiwch fod y wag yn i fod i fynd ar y dde ar y gwaelod. 158 00:09:02,170 --> 00:09:06,180 Ac nid gwerth y wag yn gallai o reidrwydd yn gyfartal i werth y 159 00:09:06,180 --> 00:09:11,080 wrthweithio bod yn mynd i gael ei gyrraedd ar y dde gwaelod. 160 00:09:11,080 --> 00:09:15,760 Felly, rydym am yn benodol i wirio os fi hafal hafal d minws 1 a j gydradd 161 00:09:15,760 --> 00:09:19,470 yn hafal i d minws 1 - sy'n dweud os ydym yn edrych ar ochr dde gwaelod 162 00:09:19,470 --> 00:09:22,050 y bwrdd - yna rydym yn unig am barhau. 163 00:09:22,050 --> 00:09:26,200 Rydym am i hepgor y penodol iteriad y am ddolen. 164 00:09:26,200 --> 00:09:31,250 >> Ac felly, os ydym yn llwyddo i gael drwy'r nythu ar gyfer dolen, mae hynny'n golygu bod 165 00:09:31,250 --> 00:09:34,690 nid oedd unrhyw teils a oedd yn y sefyllfa anghywir. 166 00:09:34,690 --> 00:09:38,900 Ac rydym yn torri allan o'r cylch ac yn dod yma, lle y gallwn ddychwelyd wir. 167 00:09:38,900 --> 00:09:41,800 Roedd yr holl teils yn y safleoedd cywir ac mae hynny'n golygu y defnyddiwr wedi 168 00:09:41,800 --> 00:09:43,230 ennill y gêm. 169 00:09:43,230 --> 00:09:44,460 A dyna ni. 170 00:09:44,460 --> 00:09:46,550 Fy enw i yw Rob Bowden, ac roedd hyn yn 15. 171 00:09:46,550 --> 00:09:52,726