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 Mən Rob Ben və mən ümid edirəm sizin 15 oyun. 4 00:00:17,800 --> 00:00:22,040 İndi sizə lazım dörd funksiyaları var Bu proqram həyata keçirmək - init, 5 00:00:22,040 --> 00:00:24,650 , çəkmək hərəkət və qazandı. 6 00:00:24,650 --> 00:00:27,230 Belə ki, init baxaq. 7 00:00:27,230 --> 00:00:32,930 >> Burada, biz istəyirik ilk şey görmək edəcəyimiz bir dəyişən elan edir 8 00:00:32,930 --> 00:00:34,600 counter çağırıb. 9 00:00:34,600 --> 00:00:37,620 Bu başlatılmış olacaq d dəfə d mənfi 1. 10 00:00:37,620 --> 00:00:40,200 D ölçüsü olduğunu unutmayın Bizim board. 11 00:00:40,200 --> 00:00:43,840 Necə init iş gedir gedir edir bütün board üzərində təkrarlamaq 12 00:00:43,840 --> 00:00:46,050 və biz başlamaq olacaq sol üst. 13 00:00:46,050 --> 00:00:48,570 >> Və deyək biz 4 4 board var. 14 00:00:48,570 --> 00:00:51,220 Belə ki, üst biz istəyirik sol deməyəcək 15-dir. 15 00:00:51,220 --> 00:00:53,960 Və sonra biz yalnız saymaq olacaq lövhələri vasitəsilə, 15, 14, 13 söyləyərək 16 00:00:53,960 --> 00:00:58,510 12, 11, 10, 9, 8, 7, 6, 5, 4, və s. 17 00:00:58,510 --> 00:01:03,780 Belə ki, sol üst, biz d dəfə ola gözləyirik d minus 1, 4 4 olan 18 00:01:03,780 --> 00:01:08,290 halda 16 minus olacaq 1, düzgün 15 edir. 19 00:01:08,290 --> 00:01:10,885 >> Biz niyyətində olduğunuz və indi burada bütün board üzərində təkrarlamaq. 20 00:01:10,885 --> 00:01:14,720 Və biz hər mövqe müəyyən olacaq cari dəyəri board 21 00:01:14,720 --> 00:01:19,090 bizim counter, və sonra counter gedir azalma, ki, növbəti 22 00:01:19,090 --> 00:01:22,300 biz çatmaq mövqeyi gedir counter çox az olacaq 23 00:01:22,300 --> 00:01:23,690 əvvəlki mövqe. 24 00:01:23,690 --> 00:01:26,970 Belə ki, biz əvvəlcə 15 idi və counter azalma. 25 00:01:26,970 --> 00:01:30,065 Beləliklə biz üçün 14 təyin etmək olacaq Növbəti mövqeyi, azalma counter, 26 00:01:30,065 --> 00:01:33,710 və biz təyin olacaq 13, və s. 27 00:01:33,710 --> 00:01:37,620 >> Nəhayət, biz ki, künc idarə etmək lazımdır halda, burada board daha var 28 00:01:37,620 --> 00:01:44,450 ölçüsü, sonra yalnız 15, 14, 13 bunu 12, bütün yol aşağı 3, 2, 1, 29 00:01:44,450 --> 00:01:46,780 ilə bizi tərk gedir bir həll board. 30 00:01:46,780 --> 00:01:49,390 Və biz 1 və 2 dəyişdirmək lazımdır. 31 00:01:49,390 --> 00:01:52,930 D mod 2 0 bərabərdir Belə ki, ki, biz yoxlamaq olacaq necə 32 00:01:52,930 --> 00:01:54,410 hətta əgər görmək üçün. 33 00:01:54,410 --> 00:01:59,810 D mod 2 0, sonra sıra d minus bərabər əgər 1, alt sıra və 34 00:01:59,810 --> 00:02:05,430 mövqeyi d minus 2, və ya sütun d minus 2, biz 2-müəyyən gedir, və edirik 35 00:02:05,430 --> 00:02:07,860 sütun d minus 3 biz istəyirik 1 qurmaq niyyətindədir. 36 00:02:07,860 --> 00:02:12,170 Belə ki, yalnız geri yerdə 1 və 2 yerləşirsiniz. 37 00:02:12,170 --> 00:02:16,270 >> Nəhayət, biz çox müəyyən olacaq alt sağ boş bərabər, harada 38 00:02:16,270 --> 00:02:20,700 boş hash müəyyən edilmişdir 0 kimi üst. 39 00:02:20,700 --> 00:02:26,785 Belə ki, ciddi lazım deyil loop üçün bu üçün gedir ildən 40 00:02:26,785 --> 00:02:30,610 0 sağ alt, çünki müəyyən counter təbii 0 çatacaq. 41 00:02:30,610 --> 00:02:34,610 Amma bilmədən bizə güvənir boş bir 0 tapmaq üçün hashed edilib. 42 00:02:34,610 --> 00:02:38,280 Mən bu proqram daxil və əgər , 100 üst boş dəyişdirmək 43 00:02:38,280 --> 00:02:39,770 hələ işləmək lazımdır. 44 00:02:39,770 --> 00:02:43,180 >> Belə ki, bu, yalnız əmin edilməsi edir sağ alt həqiqətən bərabərdir bizim 45 00:02:43,180 --> 00:02:44,870 boş dəyər. 46 00:02:44,870 --> 00:02:50,270 Nəhayət, biz iki qlobal dəyişənlər var belə i və boş j boş, və biz görmək 47 00:02:50,270 --> 00:02:53,360 üst o elan etdi. 48 00:02:53,360 --> 00:02:56,270 Və biz bu iki qlobal istifadə etmək olacaq Bu takip dəyişənlər 49 00:02:56,270 --> 00:02:59,040 boş mövqeyi, biz nə qədər ki, bütün, vasitəsilə baxmaq lazımdır 50 00:02:59,040 --> 00:03:03,890 boş hər bir tapmaq üçün board biz bir hərəkət etmək üçün cəhd zaman. 51 00:03:03,890 --> 00:03:08,450 Belə ki, boş mövqeyi həmişə sağ alt başlamaq niyyətindədir. 52 00:03:08,450 --> 00:03:13,270 Belə ki, sağ alt tərəfindən verilir indeksləri d minus 1, d minus 1. 53 00:03:13,270 --> 00:03:14,880 Belə ki, init var. 54 00:03:14,880 --> 00:03:17,040 >> İndi biz çəkmək üçün hərəkət. 55 00:03:17,040 --> 00:03:19,370 Belə ki, heç-heçə oxşar olacaq biz təkrarlamaq niyyətində olduğunuz 56 00:03:19,370 --> 00:03:20,970 bütün board üzərində. 57 00:03:20,970 --> 00:03:25,400 Və biz yalnız dəyəri çap etmək istəyirəm ki board hər mövqe. 58 00:03:25,400 --> 00:03:29,580 Belə ki, burada, biz ki, dəyəri çap edirik İdarə Heyətinin hər bir vəziyyətdə. 59 00:03:29,580 --> 00:03:32,280 Və biz bunu edirik ki, qeyd -. 60 00:03:32,280 --> 00:03:37,410 Və yalnız printf izah edir ki, asılı olmayaraq bir rəqəmli və ya var əgər 61 00:03:37,410 --> 00:03:42,010 iki rəqəmli nömrəsi, biz hələ istəyirik , çap həyata iki sütun qədər 62 00:03:42,010 --> 00:03:46,290 belə ki, biz iki rəqəmli və bir varsa eyni board rəqəmli ədəd, bizim 63 00:03:46,290 --> 00:03:49,450 board hələ gözəl və kvadrat görünür. 64 00:03:49,450 --> 00:03:54,190 >> Yəni, biz hər dəyər üçün bunu istəyirəm board, boş istisna olmaqla. 65 00:03:54,190 --> 00:03:58,260 Belə ki, əgər board mövqeyi bərabərdir boş, sonra biz xüsusi 66 00:03:58,260 --> 00:04:01,730 yalnız vurğulayır çap etmək istəyirəm Bu boş təmsil, əvəzinə 67 00:04:01,730 --> 00:04:05,150 nın nə dəyəri boş əslində. 68 00:04:05,150 --> 00:04:08,500 >> Nəhayət, biz çap etmək istəyirəm yeni xətt həyata. 69 00:04:08,500 --> 00:04:11,970 Bu hələ içəridə edək ki, kənarda loop üçün xarici, lakin 70 00:04:11,970 --> 00:04:13,200 loop üçün daxili. 71 00:04:13,200 --> 00:04:17,930 Loop üçün bu xarici iterating olduğundan bütün satır üzərində, və bu printf edir 72 00:04:17,930 --> 00:04:22,130 yalnız bir yeni çap, belə ki, biz növbəti sıra çap keçin. 73 00:04:22,130 --> 00:04:23,910 Və heç-heçə üçün var. 74 00:04:23,910 --> 00:04:27,770 >> Belə ki, indi hərəkət etmək hərəkət edək. 75 00:04:27,770 --> 00:04:32,590 İndi biz, kafel hərəkət keçir ki, İstifadəçi oyun daxil edilir - onlar 76 00:04:32,590 --> 00:04:36,360 onlar hərəkət etmək istəyirəm kafel daxil edin - və Bir bool qayıtmaq idi, belə edirik 77 00:04:36,360 --> 00:04:39,300 doğru və ya yalan, asılı olaraq ki, hərəkət həqiqətən olub 78 00:04:39,300 --> 00:04:43,360 etibarlı - ki, kafel ola bilər olub boş məkana köçürülüb. 79 00:04:43,360 --> 00:04:48,340 >> Odur ki, biz yerli dəyişən elan, tile_1 və niyyətində olan tile_j, 80 00:04:48,340 --> 00:04:52,150 blank_i və blank_j oxşar ola, Bu takip olacaq istisna olmaqla 81 00:04:52,150 --> 00:04:54,910 kafel mövqeyi. 82 00:04:54,910 --> 00:05:00,370 İndi burada, biz blank_i istifadə etmək olacaq və blank_j və, belə ki, bütün sağ demək 83 00:05:00,370 --> 00:05:01,930 burada board boş var. 84 00:05:01,930 --> 00:05:04,420 >> İndi boş yuxarıda kafel edir? 85 00:05:04,420 --> 00:05:06,210 Boş sol kafel edir? 86 00:05:06,210 --> 00:05:07,420 Boş sağ üçün kafel edir? 87 00:05:07,420 --> 00:05:08,970 Boş aşağıdakı kafel edir? 88 00:05:08,970 --> 00:05:13,330 Belə ki, kafel o heç əgər vəzifələri, biz bilirik ki, kafel 89 00:05:13,330 --> 00:05:16,390 boş spot daxil köçürülüb edilə bilər boş köçürülüb bilərsiniz 90 00:05:16,390 --> 00:05:18,240 kafel hazırda. 91 00:05:18,240 --> 00:05:26,400 >> Odur ki, biz demək əgər mövqe board blank_i minus 1 blank_j. 92 00:05:26,400 --> 00:05:31,120 Belə ki, bu deyərək kafel edir Cari boş yuxarıda? 93 00:05:31,120 --> 00:05:34,350 Və əgər, biz yadda olacaq ki kafel mövqeyidir. 94 00:05:34,350 --> 00:05:37,870 Kafel mövqeyi blank_i edir minus 1 və blank_j. 95 00:05:37,870 --> 00:05:40,660 indi ilk, biz də bu çek burada, belə blank_i edir 96 00:05:40,660 --> 00:05:41,760 0 daha çox. 97 00:05:41,760 --> 00:05:43,410 >> Niyə biz bunu istəyirsiniz? 98 00:05:43,410 --> 00:05:47,290 Yaxşı, boş üst sırada əgər heyəti, sonra biz istəmirik 99 00:05:47,290 --> 00:05:51,240 ildən kafel üçün boş yuxarıda baxmaq üst yuxarıda heç bir şey yoxdur 100 00:05:51,240 --> 00:05:52,430 heyəti satır. 101 00:05:52,430 --> 00:05:55,950 Bu əldə son bilər necə bir seqmentasiya günah və ya kimi bir şey 102 00:05:55,950 --> 00:05:59,030 Proqram yalnız iş ola bilər gözlənilməz yollarla. 103 00:05:59,030 --> 00:06:04,310 Belə ki, bu biz bunu əmin edir etibarlı deyil ki, yerlərdə baxmaq. 104 00:06:04,310 --> 00:06:08,470 >> İndi biz eyni şey olacaq bütün digər mümkün birləşməsi. 105 00:06:08,470 --> 00:06:13,250 Odur ki, biz boş aşağıda arıyorsanız ki, kafel var görmek üçün. 106 00:06:13,250 --> 00:06:16,950 Və biz də əmin biz istəyirik etmək deyil, alt sırada, və ya başqa biz 107 00:06:16,950 --> 00:06:18,910 kafel üçün baxmaq lazım deyil. 108 00:06:18,910 --> 00:06:25,040 Burada biz sol baxmaq olacaq Bu kafel, əgər boş görmək. 109 00:06:25,040 --> 00:06:27,860 Və biz sola baxmaq lazım deyil biz leftmost sütun əgər. 110 00:06:27,860 --> 00:06:30,100 Və burada biz baxmaq olacaq sağ boş, və biz olmalıdır 111 00:06:30,100 --> 00:06:33,340 biz əgər sağ baxmaq rightmost sütun. 112 00:06:33,340 --> 00:06:37,820 >> Belə ki, o şeyi heç doğru olsaydı, ki, kafel bitişik deyil deməkdir 113 00:06:37,820 --> 00:06:39,640 boş və biz yalan ola bilər. 114 00:06:39,640 --> 00:06:41,230 Hərəkət qüvvədə idi. 115 00:06:41,230 --> 00:06:47,010 Amma, o biri doğru olsaydı, sonra Bu baxımdan, biz tile_i bilirik və 116 00:06:47,010 --> 00:06:50,540 tile_j də bərabər kafel mövqeyi. 117 00:06:50,540 --> 00:06:55,210 Və belə ki, biz board təkmilləşdirə bilər vəzifələrin tile_i və tile_j. 118 00:06:55,210 --> 00:06:59,820 Biz yeni dəyər boş olacaq bilirik və mövqeyi blank_i 119 00:06:59,820 --> 00:07:02,950 blank_j, orijinal idi boş - biz kafel gedir bilirəm 120 00:07:02,950 --> 00:07:04,030 orada hərəkət. 121 00:07:04,030 --> 00:07:07,610 >> Biz, həqiqətən, nə yoxdur fark bir burada real svop, biz bilirik ildən 122 00:07:07,610 --> 00:07:09,850 daxil etmək lazımdır ki, dəyərlər həmin vəzifələrdə daxil. 123 00:07:09,850 --> 00:07:13,780 Biz müvəqqəti ehtiyac yoxdur ətrafında dəyişən. 124 00:07:13,780 --> 00:07:16,920 >> Nəhayət, biz ki, biz xatırlamaq lazımdır ki, bizim qlobal dəyişənlər var 125 00:07:16,920 --> 00:07:18,980 mövqeyi takip saxlanılması boş. 126 00:07:18,980 --> 00:07:22,780 Beləliklə, biz mövqeyini yeniləmək istəyirəm burada kafel olmaq boş 127 00:07:22,780 --> 00:07:24,190 idi. 128 00:07:24,190 --> 00:07:27,680 Nəhayət, biz ildən doğru qayıtmaq hərəkət müvəffəqiyyətli oldu. 129 00:07:27,680 --> 00:07:31,110 Biz uğurla dəyişdirmək kafel boş. 130 00:07:31,110 --> 00:07:34,890 >> Bütün hüquqlar, belə ki, ötən biz qazandınız yoxlamaq lazımdır. 131 00:07:34,890 --> 00:07:39,900 Belə ki, qalib eyni bir bool qaytarır doğru göstərir gedir ki, 132 00:07:39,900 --> 00:07:41,460 istifadəçi oyun qazandı. 133 00:07:41,460 --> 00:07:43,780 Və yalan ifadə olunur ki, oyun hələ də davam edir. 134 00:07:43,780 --> 00:07:46,340 Istifadəçi qazandı. 135 00:07:46,340 --> 00:07:52,100 Belə ki, bu olduqca çox olacaq init qarşı, harada init, 136 00:07:52,100 --> 00:07:56,920 biz board başlamaq, xatırlayıram belə 15, 14, 13, 12, üçün. 137 00:07:56,920 --> 00:08:03,000 Qalib Halbuki, biz yoxlamaq istəyirsinizsə board belə 1, 2, 3, 4, 5, və. 138 00:08:03,000 --> 00:08:06,600 >> Belə ki, biz başlamaq olacaq bizim ki, nə top var-ci ildən 1 counter 139 00:08:06,600 --> 00:08:08,400 board sol olmalıdır. 140 00:08:08,400 --> 00:08:10,860 Və sonra biz loop olacaq bütün board üzərində. 141 00:08:10,860 --> 00:08:13,690 Bu vəziyyəti görməməzlikdən edək ikinci. 142 00:08:13,690 --> 00:08:18,410 Və bu vəziyyət yalnız gedir check bu mövqeyi board edir 143 00:08:18,410 --> 00:08:20,790 Cari sayar bərabərdir? 144 00:08:20,790 --> 00:08:27,040 Əgər belədirsə, sayı arttırmayı ki baxdığımız növbəti mövqeyi bir daha yüksəkdir 145 00:08:27,040 --> 00:08:29,690 biz indi var mövqeyi daha. 146 00:08:29,690 --> 00:08:32,700 >> Belə ki, biz almaq necə var sol üst 1 olmalıdır. 147 00:08:32,700 --> 00:08:33,950 2 count arttırmayı. 148 00:08:33,950 --> 00:08:35,010 Növbəti mövqeyi baxın. 149 00:08:35,010 --> 00:08:35,690 Bu 2? 150 00:08:35,690 --> 00:08:37,659 Əgər, 3 count arttırmayı. 151 00:08:37,659 --> 00:08:39,179 Next mövqeyi, bu 3? 152 00:08:39,179 --> 00:08:42,440 Əgər belədirsə, sayı arttırmayı 4, və s. 153 00:08:42,440 --> 00:08:49,190 Belə ki, hər hansı bir mövqe varsa Bizim count bərabər deyil ki, board, 154 00:08:49,190 --> 00:08:52,640 onda biz bəri saxta qayıtmaq istəyirəm ki, bəzi kafel var deməkdir 155 00:08:52,640 --> 00:08:55,490 deyil düzgün mövqe. 156 00:08:55,490 --> 00:08:58,810 >> Belə ki, burada, bu vəziyyət nə edir? 157 00:08:58,810 --> 00:09:02,170 Yaxşı, boş olduğunu unutmayın sağ alt getmək lazım idi. 158 00:09:02,170 --> 00:09:06,180 Və boş dəyəri ola bilər mütləq dəyəri bərabər 159 00:09:06,180 --> 00:09:11,080 ki, əldə olacaq counter sağ alt. 160 00:09:11,080 --> 00:09:15,760 Belə ki, biz xüsusi yoxlamaq istəyirsinizsə i bərabərdir d minus 1 və j bərabərdir bərabərdir 161 00:09:15,760 --> 00:09:19,470 d minus 1 bərabərdir - deyə olan halda biz alt hüququnun baxırıq 162 00:09:19,470 --> 00:09:22,050 board - sonra biz yalnız davam etmək istəyirik. 163 00:09:22,050 --> 00:09:26,200 Biz bu xüsusi keçmək istəyirəm üçün loop iteration. 164 00:09:26,200 --> 00:09:31,250 >> Və belə ki, biz bu vasitəsilə almaq üçün idarə əgər loop üçün iç-içə, o deməkdir ki, 165 00:09:31,250 --> 00:09:34,690 idi ki, heç bir kafel var idi yanlış mövqe. 166 00:09:34,690 --> 00:09:38,900 Və biz loop çıxmaq və gələcək burada, biz doğru qayıtmaq bilər. 167 00:09:38,900 --> 00:09:41,800 Bütün plitələr doğru vəzifələrdə idi və istifadəçi var deməkdir 168 00:09:41,800 --> 00:09:43,230 Oyun qazandı. 169 00:09:43,230 --> 00:09:44,460 Və bu. 170 00:09:44,460 --> 00:09:46,550 My name Rob Bowden və bu 15 idi. 171 00:09:46,550 --> 00:09:52,726