1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Walkthrough] [Vandamál Set 3] 2 00:00:03,000 --> 00:00:05,000 [Zamyla Chan] [Harvard University] 3 00:00:05,000 --> 00:00:08,000 [Þetta er CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 Allt í lagi, velkomin alla til walkthrough 3. 5 00:00:10,000 --> 00:00:12,000 Pset 3 er mjög skemmtilegt. 6 00:00:12,000 --> 00:00:14,000 Það er nýtt að CS50 heitir Scramble, 7 00:00:14,000 --> 00:00:18,000 þannig að ef þú hefur einhvern tíma spilað Scramble eða svipuð borðspil Boggle 8 00:00:18,000 --> 00:00:20,000 raun er það leikur þar sem þú hefur rist af bréfum, 9 00:00:20,000 --> 00:00:24,000 og í tíma úthlutað sem þú þarft að finna eins mörg 10 00:00:24,000 --> 00:00:28,000 2-bréf eða lengri orð sem eru í stjórn, 11 00:00:28,000 --> 00:00:32,000 og þannig að það eru ákveðnar reglur eins og að þú getur aðeins notað einn staf 12 00:00:32,000 --> 00:00:37,000 í rist, ein blokk í rist þegar, og þú getur ekki farið aftur í það. 13 00:00:37,000 --> 00:00:42,000 Þú getur aðeins reisa bréf með því að tengja saman samliggjandi stafi, 14 00:00:42,000 --> 00:00:50,000 þannig að þetta er að fara að vera mjög gaman pset, þannig að við skulum líta á verkfærakista okkar. 15 00:00:50,000 --> 00:00:53,000 >> Again, the tæki er enn verið að uppfæra, svo tryggja 16 00:00:53,000 --> 00:00:56,000 hvert skipti sem þú slærð inn tæki til hægri opna Terminal gluggann 17 00:00:56,000 --> 00:01:02,000 og í skautanna gera sudo skipunina Yum-Y uppfærslu. 18 00:01:02,000 --> 00:01:04,000 Þetta er einnig mikilvægt ef þú vilt vera fær um að 19 00:01:04,000 --> 00:01:06,000  keyra starfsfólk lausnir, sem við mælum með ákveðið. 20 00:01:06,000 --> 00:01:09,000 Stundum er það gott þegar þú hefur lokið kóðann þinn 21 00:01:09,000 --> 00:01:12,000 að prófa það gegn starfsfólki lausn, ganga úr skugga um að allt 22 00:01:12,000 --> 00:01:15,000 þú öðlast starfsfólk lausn, hvað kemur út þar, 23 00:01:15,000 --> 00:01:18,000 sama sem gerist með kóðann þinn. 24 00:01:18,000 --> 00:01:20,000 Allt í lagi, svo vertu viss um að uppfæra tæki þínu. 25 00:01:20,000 --> 00:01:23,000 Nú, einnig, þar sem við erum að takast á við töflu í þessu tilfelli 26 00:01:23,000 --> 00:01:26,000 við erum í raun að fara að vera delving 2-víddar fylki. 27 00:01:26,000 --> 00:01:28,000 Við höfum brugðist við 1-víddar fylki, 28 00:01:28,000 --> 00:01:31,000 en nú erum við að fara að lengja þær svo að þeir hafa 29 00:01:31,000 --> 00:01:35,000 margar línur sem og marga dálka. 30 00:01:35,000 --> 00:01:38,000 Þá ætlum við ákveðið að nota aðgerðir á þessari pset, 31 00:01:38,000 --> 00:01:43,000 grundvallaratriðum að hringja í aðgerð, að senda nokkrar breytur úr 32 00:01:43,000 --> 00:01:46,000 og þá fá aftur gildi aftur. 33 00:01:46,000 --> 00:01:50,000 Og í Scramble að við erum ekki að biðja þig um að raunverulega gera the heild hlutur frá grunni, 34 00:01:50,000 --> 00:01:53,000 heldur erum við í raun að gefa þér eitthvað sem kallast dreifingu kóða, 35 00:01:53,000 --> 00:01:56,000 þannig virka kóðann sem við höfum nú þegar skrifað svona sett fram 36 00:01:56,000 --> 00:02:00,000 beinagrind af pset og útfærir sum erfiðari hlutum 37 00:02:00,000 --> 00:02:04,000 að þú munt örugglega vera fær um að lesa yfir og skilja 38 00:02:04,000 --> 00:02:10,000 en þurfa ekki að alveg að gera það enn. 39 00:02:10,000 --> 00:02:15,000 >> Til fljótt endurhakka gegnum 1-víddar fylki. 40 00:02:15,000 --> 00:02:18,000 Fylki er gögn uppbygging sem halda mörg gildi af sama tagi, 41 00:02:18,000 --> 00:02:21,000 og eins og áminning, eru þessi fylki núll lán, 42 00:02:21,000 --> 00:02:26,000 svo mest af þú ert líklega kunnugt fylki eins og þessa. 43 00:02:26,000 --> 00:02:29,000 Ef við vildum int array með lengd 3, 44 00:02:29,000 --> 00:02:32,000 þá gátum við frumstilla hana með því að hafa int gildi 45 00:02:32,000 --> 00:02:35,000 og þá hornklofum sem gefur til kynna lengd á það, 46 00:02:35,000 --> 00:02:39,000 og þá myndum við úthluta gildi á tilteknum þætti innan þess fylki. 47 00:02:39,000 --> 00:02:44,000 Hér höfum við int fylki með fyrstu vísitölu á vísitölu 0, 2, 48 00:02:44,000 --> 00:02:47,000 Vísitala 1 er 4, vísitölu 2 er 6. 49 00:02:47,000 --> 00:02:52,000 Segjum að við vildum stærri array og halda mörg gildi. 50 00:02:52,000 --> 00:02:55,000 Þá gætum við haft 2D array. 51 00:02:55,000 --> 00:02:58,000 Nú, þetta er mjög svipað og að 1-víddar array okkar. 52 00:02:58,000 --> 00:03:02,000 Það er 0 verðtryggð, svo það þýðir að fyrsta dálk 53 00:03:02,000 --> 00:03:04,000 er skráð á 0. 54 00:03:04,000 --> 00:03:07,000 Næsta einn er á 1, og þá er næsta einn í 2, 55 00:03:07,000 --> 00:03:11,000 og þá álíka höfum raðir, og svo þú sérð að þegar við 56 00:03:11,000 --> 00:03:15,000 lýsa array okkar við einnig-bara eins og áður-við kynna stærð fylkisins. 57 00:03:15,000 --> 00:03:18,000 Einnig erum við álíka benda á stærð þar sem fyrsta krappi 58 00:03:18,000 --> 00:03:21,000 gefur til kynna hversu margar raðir þú hefur, og hitt sýnir 59 00:03:21,000 --> 00:03:25,000 hversu marga dálka. 60 00:03:25,000 --> 00:03:30,000 >> Allt í lagi, í þessu pset þú þarft að vera fær um að 61 00:03:30,000 --> 00:03:35,000 iterate yfir 2D fylki, vera fær um að fá aðgang hvert frumefni 62 00:03:35,000 --> 00:03:39,000 í þessu 2D array, þannig í raun að þú vilt ná 63 00:03:39,000 --> 00:03:42,000 allar mögulegar samsetningar í röðinni og dálki gildi. 64 00:03:42,000 --> 00:03:47,000 Við viljum til að ná línu 0 í dálki 1, 2 og 3. 65 00:03:47,000 --> 00:03:54,000 Við viljum til að ná línu 1 í dálki 0, 1 og 2. 66 00:03:54,000 --> 00:03:58,000 Við verðum að hafa einhvers konar skipulag sem gerir okkur kleift að 67 00:03:58,000 --> 00:04:02,000 iterate yfir öllum línum og öllum samsetningum 68 00:04:02,000 --> 00:04:08,000 dálka innan það. 69 00:04:08,000 --> 00:04:10,000 Hér hef ég 2D int array. 70 00:04:10,000 --> 00:04:14,000 Það hefur 3 raðir og 3 dálka, 71 00:04:14,000 --> 00:04:19,000 og svo er þetta fljótleg leið til að 72 00:04:19,000 --> 00:04:22,000 finna allt 2D fylki. 73 00:04:22,000 --> 00:04:25,000 Ég er að segja fyrsta röð er að fara að 2, 4, og 6, 74 00:04:25,000 --> 00:04:30,000 konar líkt og fyrra dæmi í þessari mynd. 75 00:04:30,000 --> 00:04:35,000 Og ég ætla að hafa 2. röð að vera 3, 6, 9, 76 00:04:35,000 --> 00:04:39,000 og þá er 3. röð 4, 8, 12. 77 00:04:39,000 --> 00:04:43,000 Við höfum 2D array okkar, 78 00:04:43,000 --> 00:04:46,000 og við vitum að það lítur út eins og þetta. 79 00:04:46,000 --> 00:04:52,000 Við höfum 2, 4, 6, 80 00:04:52,000 --> 00:04:55,000 3, 6, 9, 81 00:04:55,000 --> 00:05:02,000 4, 8, 12. 82 00:05:02,000 --> 00:05:05,000 Nú ef við bætum í vísitölum, 83 00:05:05,000 --> 00:05:08,000 þetta væri róður 0. 84 00:05:08,000 --> 00:05:11,000 Þetta væri línu 1. 85 00:05:11,000 --> 00:05:13,000 Þetta væri Row 2. 86 00:05:13,000 --> 00:05:19,000 Á sama hátt höfum við dálk 0, 87 00:05:19,000 --> 00:05:23,000 dálki 1 og 2. dálki. 88 00:05:23,000 --> 00:05:25,000 Já. 89 00:05:25,000 --> 00:05:28,000 [Male] Hvaða þrír eru dálki, og hver einn er röð? 90 00:05:28,000 --> 00:05:31,000 Súlurnar eru þessar sjálfur, 91 00:05:31,000 --> 00:05:34,000 svo dálkarnir eru þetta sjálfur. 92 00:05:34,000 --> 00:05:37,000 Þetta er dálkur 0, og þetta er í 1. dálki. 93 00:05:37,000 --> 00:05:39,000 Þetta er dálkur 2. 94 00:05:39,000 --> 00:05:44,000 [Male] Hversu margir í yfirlýsingu um INT við borðið [3] [3]? 95 00:05:44,000 --> 00:05:50,000 Þegar þú ert að lýsa því yfir að 2D array þá fyrst tala í hornklofum 96 00:05:50,000 --> 00:05:53,000 er að fara að vera hversu margir línur þú hefur, 97 00:05:53,000 --> 00:05:57,000 og þá seinni er að fara að vera hversu margir dálkar. 98 00:05:57,000 --> 00:06:01,000 >> Frábært, þannig að við viljum einhvers konar uppbyggingu, 99 00:06:01,000 --> 00:06:06,000 einhvers konar lykkju sem er að fara að gefa okkur allar mögulegar samsetningar. 100 00:06:06,000 --> 00:06:13,000 Segja að við byrja á því að segja-allt í lagi, til að fá aðgang neitt í þessari röð- 101 00:06:13,000 --> 00:06:18,000 við skulum bara líta á þetta röð fyrir nú. 102 00:06:18,000 --> 00:06:20,000 Þetta eru línur hér. 103 00:06:20,000 --> 00:06:23,000 Við vitum að röð vísitölu okkar er að fara að vera 0, 104 00:06:23,000 --> 00:06:27,000 en að opna þessa hluti það er á 0 röð og 0 dálk, 105 00:06:27,000 --> 00:06:34,000 svo þá myndum við nálgast það með vísitölu [0] [0]. 106 00:06:34,000 --> 00:06:38,000 Þá er þetta einn, sömuleiðis er enn á fyrstu röðinni, 107 00:06:38,000 --> 00:06:43,000 en það er á öðrum dálki, þannig að við aðgang að því [0] [1]. 108 00:06:43,000 --> 00:06:48,000 Þá sá síðasti væri [0] [2]. 109 00:06:48,000 --> 00:06:52,000 Alltaf þegar við erum í tilteknu röð við erum að fara að vilja 110 00:06:52,000 --> 00:07:00,000 iterate yfir öll möguleg gildi dálki. 111 00:07:00,000 --> 00:07:06,000 Við skulum byrja með for lykkju 112 00:07:06,000 --> 00:07:15,000 sem byrjar á 0, og fer lengd hversu margir línur sem við höfum. 113 00:07:15,000 --> 00:07:26,000 Þetta er hjóla í gegnum alla röð. 114 00:07:26,000 --> 00:07:29,000 Þá er það sem við viljum gera í því, 115 00:07:29,000 --> 00:07:33,000 þegar við erum á ákveðna röð sem við viljum að hjóla í gegnum allar fyrirliggjandi dálka, 116 00:07:33,000 --> 00:07:36,000 svo þá munum við hafa aðra lykkju. 117 00:07:36,000 --> 00:07:38,000 Við skulum kalla það j. 118 00:07:38,000 --> 00:07:42,000 Ég, er J og K mjög algeng röð flokkun lykkja breytur, 119 00:07:42,000 --> 00:07:48,000 svo þú getur notað þetta ef þú vilt. 120 00:07:48,000 --> 00:07:52,000 Einnig að reyna að koma í veg fyrir þá, ef þessar breytur eru almennt notuð í lykkjur 121 00:07:52,000 --> 00:07:56,000 reyna að forðast að nota þau eins og breytilegum nöfnum til annars í kóðanum þínum 122 00:07:56,000 --> 00:08:04,000 bara vegna þess að algengt venju það er að nota I, J og K í lykkju eða vísitölur. 123 00:08:04,000 --> 00:08:11,000 Jæja, þá er hér við höfum fyrir lykkju sem iterates yfir alla línur. 124 00:08:11,000 --> 00:08:14,000 Þá í hvert skipti sem það er á mismunandi röð 125 00:08:14,000 --> 00:08:17,000 við munum iterate yfir allar mismunandi dálkum. 126 00:08:17,000 --> 00:08:23,000 Þannig getum við í raun fengið að sérhver mögulegar samsetningar 127 00:08:23,000 --> 00:08:27,000 á 0, 1 og 2 með 0, 1 og 2. 128 00:08:27,000 --> 00:08:29,000 Það skynsamleg? 129 00:08:29,000 --> 00:08:32,000 Þannig að við erum fær um að fá aðgang yfir hvert gildi. 130 00:08:32,000 --> 00:08:36,000 Nú gætum við valið að gera dálkum eins og heilbrigður. 131 00:08:36,000 --> 00:08:39,000 Það raunverulega skiptir ekki máli svo lengi sem þú iterate gegnum 132 00:08:39,000 --> 00:08:41,000 öllum dálkum og öllum línum. 133 00:08:41,000 --> 00:08:44,000 >> Nú skulum gera eitthvað með þessum gildum. 134 00:08:44,000 --> 00:08:48,000 Segjum prenta. 135 00:08:48,000 --> 00:08:55,000 Nú skulum prenta heiltölur þeirra 136 00:08:55,000 --> 00:09:02,000 og þá er breyta á þeim stað The-það er að fara til vera a gildi N borð. 137 00:09:02,000 --> 00:09:07,000 Nú sérstakur röð vísitölu væri i því við notuðum það til iterate gegnum raðir okkar, 138 00:09:07,000 --> 00:09:14,000 og svo J að iterate gegnum dálka okkar. 139 00:09:14,000 --> 00:09:24,000 Nú skulum gera 2D. 140 00:09:24,000 --> 00:09:29,000 Nú þegar við hlaupa 2D það prentar út allar gildi 141 00:09:29,000 --> 00:09:32,000 í þeirri röð sem við að framan greinir, 142 00:09:32,000 --> 00:09:35,000 svo þú sérð að það fer í gegnum allar línur fyrst, 143 00:09:35,000 --> 00:09:38,000 þannig að það er í röðinni 0, og þá prenta það allt af þeim gildum í röðinni 144 00:09:38,000 --> 00:09:40,000 og svo áfram. 145 00:09:40,000 --> 00:09:43,000 Það er dæmi um þann hátt sem þú vilt iterate yfir 146 00:09:43,000 --> 00:09:52,000 og framkvæma aðgerðir á gildum innan 2D fylki. 147 00:09:52,000 --> 00:09:59,000 Great, nú, hvað við munum sjá í dreifingu kóða eru margar aðgerðir, 148 00:09:59,000 --> 00:10:01,000 og svo einhverja af þessum aðgerðum verður Boolean aðgerðir 149 00:10:01,000 --> 00:10:03,000 þar sem þeir skila Boolean til þín. 150 00:10:03,000 --> 00:10:07,000 >> Sumir vilja vera heiltölur, til dæmis, og svo fyrst og fremst að 151 00:10:07,000 --> 00:10:10,000 endurskoðun virka svolítið grundvallaratriðum aðgerðir hafa 152 00:10:10,000 --> 00:10:15,000 a skilagildi, nafn, sem þú notar til að hringja í áætluninni, 153 00:10:15,000 --> 00:10:21,000 og þá geta þeir hafa allir tala af breytum. 154 00:10:21,000 --> 00:10:25,000 Meginatriðum þegar þú hringir virka á næstu aðgerð, 155 00:10:25,000 --> 00:10:27,000 grundvallaratriðum eins og þú ert að segja er að ég vil að þú að framkvæma þessa aðgerð, 156 00:10:27,000 --> 00:10:31,000 þú þarft að fara á ákveðnum gildum, þannig að í þessu tilfelli virka okkar foo 157 00:10:31,000 --> 00:10:36,000 þyrfti að taka 2 heiltölur, og innan þess virka þá 158 00:10:36,000 --> 00:10:40,000 það væri hægt að nálgast þær, vísa til þeirra eins og x og y. 159 00:10:40,000 --> 00:10:44,000 Svipað dæmi er minni aðgerðir 160 00:10:44,000 --> 00:10:48,000 sem þú gætir hafa notað í dulritunarstjórneiningunni program, 161 00:10:48,000 --> 00:10:51,000 og svo í raun voru þær aðgerðir sem þegar skrifað fyrir þig, 162 00:10:51,000 --> 00:10:57,000 en eftir gerð aftur þeirra sem þú getur notað þær í aðgerðir. 163 00:10:57,000 --> 00:11:00,000 Segjum að þú ert með Boolean virka kallast foo. 164 00:11:00,000 --> 00:11:04,000 Þá væri hægt að nota það vegna þess að þú veist að það mun tákna Boole. 165 00:11:04,000 --> 00:11:06,000 Meginatriðum þegar þú kallar það, mun það koma aftur til baka í Boolean, 166 00:11:06,000 --> 00:11:11,000 svo er hægt að meðhöndla það eins og þetta mun tákna Boole. 167 00:11:11,000 --> 00:11:13,000 Innan ástandi þínu, getur þú einfaldlega að segja 168 00:11:13,000 --> 00:11:17,000 ef foo, og þá fara í færibreytu sem þarf þess, 169 00:11:17,000 --> 00:11:20,000 5 og 9 til dæmis, 2 heiltölur, 170 00:11:20,000 --> 00:11:22,000 þá veistu að það muni skila annaðhvort satt eða ósatt, 171 00:11:22,000 --> 00:11:26,000 og svo þá er hægt að nota það sem ástand þitt sjálf. 172 00:11:26,000 --> 00:11:30,000 Á sama hátt getur þú líka sagt foo (5, 9) == satt 173 00:11:30,000 --> 00:11:33,000 eða == falskur eða eitthvað svoleiðis, 174 00:11:33,000 --> 00:11:38,000 en það er örlítið ástæðulaus sem virka sjálft 175 00:11:38,000 --> 00:11:41,000 þegar gildi annaðhvort sönn eða ósönn. 176 00:11:41,000 --> 00:11:47,000 Við ætlum að hafa þetta í huga þegar við sjáum nokkur dæmi í dreifingu kóða. 177 00:11:47,000 --> 00:11:50,000 >> Jæja, aftur að Scramble eftir við höfum 2D fylki 178 00:11:50,000 --> 00:11:53,000 og skilja aðgerðir undir belti okkar. 179 00:11:53,000 --> 00:11:59,000 Í Scramble raun þú ert að fara að hafa rist af bréfum, 180 00:11:59,000 --> 00:12:02,000 og þá þú ert að fara að hjálpa framkvæma áætlun 181 00:12:02,000 --> 00:12:06,000 þar sem notandi getur inntak mismunandi bréf sem þeir sjá á rist, 182 00:12:06,000 --> 00:12:10,000 þannig að þýðir líka að þú ert líka að fara að þurfa að draga leikinn borð. 183 00:12:10,000 --> 00:12:13,000 Þá the notandi vilja vera inputting ákveðin orð, 184 00:12:13,000 --> 00:12:17,000 en þú verður að athuga, A, hvort þessi orð eru í gildi í orðabókinni, 185 00:12:17,000 --> 00:12:23,000 eða B, hvort sem þau eru í raun og veru í stjórn, er að finna í stjórn. 186 00:12:23,000 --> 00:12:28,000 Þá í dreifingu kóða við munum fara yfir það í annað. 187 00:12:28,000 --> 00:12:31,000 Þú munt sjá hvað er þegar gert fyrir þig, 188 00:12:31,000 --> 00:12:35,000 og þá innan ákveðins uppbyggingu dreifingu kóða bæta virka. 189 00:12:35,000 --> 00:12:37,000 Það eru ákveðnar aðgerðir sem eftir eru tóm. 190 00:12:37,000 --> 00:12:40,000 Það eru ákveðnar aðgerðir sem þú þarft bara að bæta við. 191 00:12:40,000 --> 00:12:43,000 A viss aðgerð sem þú ert að fara að vinna með er jafntefli, 192 00:12:43,000 --> 00:12:45,000 þannig að þú þarft að framkvæma draga virka, 193 00:12:45,000 --> 00:12:47,000 raun teikna alla stafina á borðinu. 194 00:12:47,000 --> 00:12:51,000 Þú ert að fara að framkvæma útlit virka þar sem þú þarft að athuga 195 00:12:51,000 --> 00:12:55,000 hvort band sem notandinn inputted er gild orð, 196 00:12:55,000 --> 00:12:59,000 og svo þá sem ég nefndi áður, sem felur í sér hvort það er í orðabók eða ekki 197 00:12:59,000 --> 00:13:03,000 og hvort það er í gildi leikur færa. 198 00:13:03,000 --> 00:13:06,000 Síðan sem þú ert að fara að framkvæma Scramble 199 00:13:06,000 --> 00:13:11,000 hvar í leiknum ef notandinn er, til dæmis, í vandræðum með að finna hvaða orð 200 00:13:11,000 --> 00:13:16,000 þá ef þeir slá í "Scramble" í hvetja 201 00:13:16,000 --> 00:13:19,000 þá snýst leikurinn borð í raun 90 °, 202 00:13:19,000 --> 00:13:24,000 halda sömu bréf en bara snúa 90 ° réttsælis. 203 00:13:24,000 --> 00:13:27,000 Og svo að lokum að við erum að fara að takast á við málið og næmi, 204 00:13:27,000 --> 00:13:35,000 raun þegar öll orð í orðabókinni með í dreifingu kóða 205 00:13:35,000 --> 00:13:38,000 eru allar vistaðar sem hástaf, en við viljum leyfa notanda, til dæmis, 206 00:13:38,000 --> 00:13:41,000 Ef þeir slá í blöndu af lágstafir og hástafi 207 00:13:41,000 --> 00:13:45,000 eða bara lágstöfum þá ef það orð er í gildi 208 00:13:45,000 --> 00:13:50,000 þá ætti að vera fær um að fá stig fyrir það eins og heilbrigður. 209 00:13:50,000 --> 00:13:56,000 >> Jæja, svo númerið dreifingu, gæti það verið svolítið erfitt að komast í gegnum í fyrstu. 210 00:13:56,000 --> 00:13:59,000 Þú might ekki vilja til að lesa allt það og bara beint að 211 00:13:59,000 --> 00:14:03,000 skrifa program, en vinsamlegast ekki lesa það einu sinni, 212 00:14:03,000 --> 00:14:06,000 lesa hana tvisvar, lesa það þrisvar, lesið hana aftur og aftur 213 00:14:06,000 --> 00:14:09,000 þannig að þú ert með góða tilfinningu og finn mjög þægilegt 214 00:14:09,000 --> 00:14:13,000 með kóða, jafnvel þótt þú hafir ekki skrifað þessar aðgerðir sjálfur, 215 00:14:13,000 --> 00:14:17,000 að þú veist svona hvað þeir eru að gera og þú getur búist við 216 00:14:17,000 --> 00:14:22,000 á þann hátt að þeir gætu hafa samskipti við aðgerðir sem þú munt framkvæma. 217 00:14:22,000 --> 00:14:25,000 Án frekari fjaðrafok, við skulum raunverulega fá inn í þessa dreifingu kóða, 218 00:14:25,000 --> 00:14:32,000 og ég ætla að hjálpa ykkur að gera skilningarvit af því. 219 00:14:32,000 --> 00:14:36,000 Ég hef þegar sótt dreifingu kóða. 220 00:14:36,000 --> 00:14:38,000 Þú getur gert þetta. 221 00:14:38,000 --> 00:14:41,000 Það er leiðbeiningar í sérstakur þar sem þú þarft að gera eigin möppu fyrir pset 3, 222 00:14:41,000 --> 00:14:46,000 og svo ef þú framkvæma skipun sem er að finna í sérstakur 223 00:14:46,000 --> 00:14:49,000 þá munt þú vera fær um að sækja orð skrá, 224 00:14:49,000 --> 00:14:56,000 sem inniheldur í rauninni orðabók skrá, ef við lítum bara á það fljótt. 225 00:14:56,000 --> 00:15:03,000 Þetta eru fyrst og fremst á alla lista af orðum sem eru að fara að vera orðabók okkar. 226 00:15:03,000 --> 00:15:05,000 >> Jæja, við skulum byrja á toppnum. 227 00:15:05,000 --> 00:15:11,000 Einnig hér þú munt taka eftir því að góður stíll þessa dreifingu kóða 228 00:15:11,000 --> 00:15:14,000 er að njóta okkar þar sem við getum séð ummælin 229 00:15:14,000 --> 00:15:20,000 að útskýra hvernig kóðinn er notaður. 230 00:15:20,000 --> 00:15:22,000 Við höfum þetta, þar á meðal bókasöfn okkar. 231 00:15:22,000 --> 00:15:25,000 Takið eftir því að hér höfum við ma # , 232 00:15:25,000 --> 00:15:29,000 og svo gerir að bókasafn okkur að halda utan um tíma vegna þess að 233 00:15:29,000 --> 00:15:33,000 í Scramble þú þarft að í raun inn í eins mörg orð og hægt er 234 00:15:33,000 --> 00:15:36,000 innan ákveðins tímaramma. 235 00:15:36,000 --> 00:15:38,000 Hér höfum við nokkur breytur. 236 00:15:38,000 --> 00:15:42,000 Lengd leiksins við höfum sett það til að vera 30 sekúndur. 237 00:15:42,000 --> 00:15:45,000 Við segjum að vídd rist-það er ferningur rist- 238 00:15:45,000 --> 00:15:47,000 er að fara að vera 4 x 4. 239 00:15:47,000 --> 00:15:54,000 Við segjum að það eru orð, sem tala af orðum í orðabók, 240 00:15:54,000 --> 00:16:01,000 að hvar sem geta aðeins að hámarki 29 stafi. 241 00:16:01,000 --> 00:16:03,000 Þá er hér þar skrá sem heitir skráning. 242 00:16:03,000 --> 00:16:07,000 Í meginatriðum erum við að fara að sjálfvirkur sum niðurstöður úr kóðanum þínum, 243 00:16:07,000 --> 00:16:11,000 svo ekki reyna að breyta neitt til að gera við skrá þig inn því að við munum vera að takast á við það. 244 00:16:11,000 --> 00:16:14,000 Þú þarft ekki að alveg að skilja það enn, 245 00:16:14,000 --> 00:16:19,000 en bara ekki reyna að breyta neitt til að gera við skrá þig inn. 246 00:16:19,000 --> 00:16:25,000 Takið eftir að hér í breytilegum rist, sem er 2D array af stöfum, 247 00:16:25,000 --> 00:16:27,000 er lýst utan meginvirkni okkar, 248 00:16:27,000 --> 00:16:29,000 þannig að þetta er það sem við köllum Global breyta. 249 00:16:29,000 --> 00:16:31,000 Þar sem við erum að fást við leik hér, 250 00:16:31,000 --> 00:16:34,000 Ef þú manst alla leið aftur að klóra 251 00:16:34,000 --> 00:16:36,000 þegar við höfðum eitthvað eins og skora, til dæmis, 252 00:16:36,000 --> 00:16:39,000 þegar við vorum að fást við leik, sem átti að vera aðgengileg 253 00:16:39,000 --> 00:16:43,000 a einhver fjöldi af mismunandi forskriftir, svo álíka höfum við þessa breytu 254 00:16:43,000 --> 00:16:48,000 sem þarf að vera aðgengileg til a einhver fjöldi af the virka í kerfi okkar, 255 00:16:48,000 --> 00:16:52,000 svo rist er hér a 2-víddar array sem geyma 256 00:16:52,000 --> 00:16:55,000 bréfin í Scramble leik. 257 00:16:55,000 --> 00:16:59,000 Síðar munum við sjá um notkun síðar, 258 00:16:59,000 --> 00:17:03,000 en þá höfum við einnig 2D array af booleans kallast merki, 259 00:17:03,000 --> 00:17:07,000 og svo í raun þegar við förum í að athuga hvort orð 260 00:17:07,000 --> 00:17:12,000 er í gildi eða ekki þurfum við að vita hvort við höfum verið heimsótt ákveðna blokk, 261 00:17:12,000 --> 00:17:15,000 heimsótt ákveðið bréf, og svo þá merki í grundvallaratriðum er að fara að 262 00:17:15,000 --> 00:17:20,000 innihalda annaðhvort satt eða ósatt í tilteknu vísitölu, 263 00:17:20,000 --> 00:17:23,000 svo það verður að láta okkur vita hvort við höfum verið þar áður, 264 00:17:23,000 --> 00:17:26,000 hvort sem við höfum heimsótt að bréf á ákveðnum stöðva okkar, 265 00:17:26,000 --> 00:17:30,000 og svo merki, eins og þú munt sjá síðar, 266 00:17:30,000 --> 00:17:41,000 mun fyrst og fremst nákvæmlega spegill rist. 267 00:17:41,000 --> 00:17:46,000 >> Hér ákváðum við að við vildum eiga gögn tegund okkar. 268 00:17:46,000 --> 00:17:48,000 Við vorum ekki ánægð með bara band. 269 00:17:48,000 --> 00:17:51,000 Okkur langaði í raun eitthvað sem kallast orð 270 00:17:51,000 --> 00:17:55,000 þannig að við höfum þetta typedef strúktúr hér, 271 00:17:55,000 --> 00:17:58,000 og síðan í það að það er Boolean heitir fundið, 272 00:17:58,000 --> 00:18:01,000 svo hvort þetta orð hefur verið fundið eða ekki. 273 00:18:01,000 --> 00:18:04,000 Þá hefur það fjölda af stöfum, 274 00:18:04,000 --> 00:18:10,000 meginatriðum í raun orð sem það er. 275 00:18:10,000 --> 00:18:14,000 Nú þá, er orðið raunveruleg ný gögn gerð sem við höfum gert, 276 00:18:14,000 --> 00:18:17,000 svo við getum að hafa fjölda af orðum, til dæmis, 277 00:18:17,000 --> 00:18:23,000 eða við getum nýtt orð og hafa mörg dæmi af þeim. 278 00:18:23,000 --> 00:18:26,000 En við höfum bara eina orðabók og svo er það þess vegna sem við höfum aðeins 279 00:18:26,000 --> 00:18:29,000 strúktúr hringja orðabók öfugt við typedef strúktúr. 280 00:18:29,000 --> 00:18:34,000 The struct hefur heiltölu með stærð orðabók 281 00:18:34,000 --> 00:18:37,000 auk fjölda orða, og aftur, 282 00:18:37,000 --> 00:18:41,000 við notum þetta Global breyta orð, sem er skilgreint hér að framan, 283 00:18:41,000 --> 00:18:46,000 að fjölda af orðum sem er í raun í orðabók okkar. 284 00:18:46,000 --> 00:18:49,000 Hér höfum við alla lista af frumgerð, virka frumútgáfur, 285 00:18:49,000 --> 00:18:52,000 raun segja, allt í lagi, nú þú getur búist við að hafa 286 00:18:52,000 --> 00:18:55,000 allar þessar aðgerðir síðar í áætluninni. 287 00:18:55,000 --> 00:18:57,000 Ég ætla að hafa ógilt virka kallast skýr, 288 00:18:57,000 --> 00:19:00,000 Boolean virka heitir skríða sem tekur á 289 00:19:00,000 --> 00:19:05,000 band og síðan 2 heiltölur, et cetera, svo þú sérð þetta hér. 290 00:19:05,000 --> 00:19:09,000 Einnig er ágætur eiginleiki í gedit að meðfram hlið hér 291 00:19:09,000 --> 00:19:14,000 Ef þú vera viss um að þú valdir þessa virka flipann hér, 292 00:19:14,000 --> 00:19:18,000 kóðann flipann, þá er það mun í raun sýna þér allar aðgerðir 293 00:19:18,000 --> 00:19:20,000 að þú hafir í forritinu. 294 00:19:20,000 --> 00:19:24,000 Það mun sýna þér nokkur atriði sem þú getur notað. 295 00:19:24,000 --> 00:19:29,000 Fyrir dæmi, hér er það sem þú hefur skilgreint ný gögn tegund sem heitir orð 296 00:19:29,000 --> 00:19:33,000 og þá ákveðin heimsvísu breytur sem þú hefur. 297 00:19:33,000 --> 00:19:37,000 En þetta virka flipanum er alveg gagnlegt vegna þess að þú getur smellt aftur og fram 298 00:19:37,000 --> 00:19:42,000 og hoppa á tilteknum stöðum í forritinu. 299 00:19:42,000 --> 00:19:48,000 >> Allt í lagi, við erum á meginvirkni núna. 300 00:19:48,000 --> 00:19:52,000 Þegar notandi slær inn í stjórn, 301 00:19:52,000 --> 00:19:55,000 grundvallaratriðum þeir geta annaðhvort sagt. / Scramble, 302 00:19:55,000 --> 00:19:59,000 eða þeir geta einnig slegið í fjölda eftir það í rauninni til kynna 303 00:19:59,000 --> 00:20:02,000 hvaða borð sem þeir vilja til að spila með. 304 00:20:02,000 --> 00:20:05,000 Venjulega þegar þú slærð inn aðeins í einni stjórn lína rifrildi 305 00:20:05,000 --> 00:20:09,000 þá er það bara að fara að gefa þér handahófi borð, heldur segja fyrir kembiforrit tilgangi 306 00:20:09,000 --> 00:20:12,000 þú vilt ganga úr skugga um að þú skoðar bara það sama borð aftur og aftur 307 00:20:12,000 --> 00:20:15,000 þá hvað þú getur gert er bara að segja ./scramble1, til dæmis, 308 00:20:15,000 --> 00:20:19,000 og það verður alltaf að gefa þér sama borð. 309 00:20:19,000 --> 00:20:21,000 Hér það er að tryggja rétta notkun, 310 00:20:21,000 --> 00:20:26,000 þannig að ef notandinn slær inn í meira en 2 stjórn lína rifrildi, 311 00:20:26,000 --> 00:20:29,000 þá mun það leiðbeina þeim um hvernig til almennilega að nota forritið 312 00:20:29,000 --> 00:20:34,000 og hætta síðan. 313 00:20:34,000 --> 00:20:38,000 Hér ef argc er 2, sem þýðir að ef notandinn hefur inputted númer 314 00:20:38,000 --> 00:20:42,000 til sérstakra orð sem þeir vilja nota þá 315 00:20:42,000 --> 00:20:47,000 raun þegar forritið síðar gerir handahófi borð 316 00:20:47,000 --> 00:20:51,000 þá erum við í raun gefa það fræ, góður af eins og þvingun 317 00:20:51,000 --> 00:20:57,000 að nota ákveðin gildi. 318 00:20:57,000 --> 00:21:02,000 Þá hér við hlaða orð skrá okkar. 319 00:21:02,000 --> 00:21:06,000 Í grundvallaratriðum ef það getur ekki opnað orðabók, ef eitthvað fer úrskeiðis, 320 00:21:06,000 --> 00:21:08,000 þá mun það skila 1. 321 00:21:08,000 --> 00:21:11,000 Við frumstilla rist. Við munum líta inn í það virka seinna. 322 00:21:11,000 --> 00:21:13,000 Við setjum skora á 0. 323 00:21:13,000 --> 00:21:18,000 Við reiknum þegar leikurinn mun enda, 324 00:21:18,000 --> 00:21:20,000 þannig að 30 sekúndur, eins og við setja. 325 00:21:20,000 --> 00:21:27,000 Þá hérna, aftur, er annállinn, sem þú þarft ekki að breyta. 326 00:21:27,000 --> 00:21:33,000 >> Hér er kjötið á dagskrá þar sem við höfum á meðan (satt) lykkju, 327 00:21:33,000 --> 00:21:36,000 svo tekið eftir því að ef þú ert bara á meðan (satt) lykkja af sjálfu sér 328 00:21:36,000 --> 00:21:39,000 þá er það bara að halda áfram að framkvæma hvað sem er í líkama hennar, 329 00:21:39,000 --> 00:21:42,000 en eins og þú munt sjá síðar, höfum við í raun brot 330 00:21:42,000 --> 00:21:46,000 þannig að við leyfa raun það-við höfum á einhvern hátt að það að brjóta í raun út 331 00:21:46,000 --> 00:21:50,000 fallsins og ekki keyra að eilífu. 332 00:21:50,000 --> 00:21:52,000 Fyrst það sem gerist er að skjár vilja hreinsa 333 00:21:52,000 --> 00:21:59,000 þannig að þú getur teiknað nýja stjórn, og þá mun það hafa fallið kallast jafntefli. 334 00:21:59,000 --> 00:22:03,000 Aftur, mun það tengja það, svo í raun í hvert skipti sem hún fer í gegnum þessa lykkju 335 00:22:03,000 --> 00:22:06,000 það mun tilkynna stöðuna til þín. 336 00:22:06,000 --> 00:22:09,000 Athugaðu hvort að leikurinn ætti að vera endir, 337 00:22:09,000 --> 00:22:12,000 hvort sem þú ert út á tíma eða ekki, og þá skýrslu hversu mikinn tíma þú hefur til vinstri 338 00:22:12,000 --> 00:22:15,000 ef leikurinn er enn í leik. 339 00:22:15,000 --> 00:22:19,000 Þá hér höfum við hvetja að orði, 340 00:22:19,000 --> 00:22:21,000 og þá höfum við GetString virka, 341 00:22:21,000 --> 00:22:26,000 þannig að þar sem notandinn í raun inntak Word fyrir þig. 342 00:22:26,000 --> 00:22:31,000 Þá aðallega ef þeir hafa í raun inn í orð, ef það er ekki null, 343 00:22:31,000 --> 00:22:38,000 þá the program vilja tengja það. 344 00:22:38,000 --> 00:22:41,000 Síðan sem þú vilt að athuga hvort þú þarft að Scramble rist, 345 00:22:41,000 --> 00:22:44,000 Svo í rauninni ef þeir koma inn í stjórn Scramble, orðið Scramble, 346 00:22:44,000 --> 00:22:48,000 þá er að fara að snúa 90 °. 347 00:22:48,000 --> 00:22:51,000 Þá annars ef það er ekki orðið Scramble 348 00:22:51,000 --> 00:22:57,000 þá er það sem þú vilt gera sem þú vilt að leita að orði. 349 00:22:57,000 --> 00:22:59,000 The (finna (orð) er satt. Við munum fara í að virka seinna. 350 00:22:59,000 --> 00:23:02,000 Og þá munt þú vilt að líta það upp, svo er í grundvallaratriðum það á rist, 351 00:23:02,000 --> 00:23:04,000 og er það í orðabókinni? 352 00:23:04,000 --> 00:23:08,000 Og ef það er raunin, þá er það mun auka stig með fjölda bréfa 353 00:23:08,000 --> 00:23:12,000 að það er orðið. 354 00:23:12,000 --> 00:23:16,000 Það er helsta hlutverk okkar þar. 355 00:23:16,000 --> 00:23:19,000 >> Þetta hér er í raun eins og að flýja kóða, 356 00:23:19,000 --> 00:23:21,000 svo þú þarft ekki að hafa áhyggjur af því alveg svo mikið, 357 00:23:21,000 --> 00:23:25,000 en í raun þegar þú kalla ljóst að það mun hreinsa flugstöðinni 358 00:23:25,000 --> 00:23:32,000 og færa bendilinn til baka og tegund Eyða hvað hún hafði skrifað áður. 359 00:23:32,000 --> 00:23:40,000 Við skulum ekki fara að skríða alveg strax. 360 00:23:40,000 --> 00:23:43,000 Þess í stað munum fletta niður og sjá draga virka hér, 361 00:23:43,000 --> 00:23:45,000 sem er starf TODO þinn. 362 00:23:45,000 --> 00:23:48,000 Í meginatriðum þú þarft að prenta rist í núverandi stöðu, 363 00:23:48,000 --> 00:23:52,000 þannig að við höfum nú þegar séð í raun að Frumstilli rist, 364 00:23:52,000 --> 00:23:56,000 og svo þú þarft ekki að hafa áhyggjur þar sem bréf til að setja á rist 365 00:23:56,000 --> 00:24:01,000 eða eitthvað svoleiðis, en jafntefli virka sem þú ert að fara til að vilja 366 00:24:01,000 --> 00:24:04,000 prenta út hvað er í rist. 367 00:24:04,000 --> 00:24:07,000 Þá erum við með Boolean virka kallast finna, 368 00:24:07,000 --> 00:24:10,000 sem við sáum ofan í meginvirkni. 369 00:24:10,000 --> 00:24:17,000 Ef orðið fannst og einnig var litið upp í orðabók, 370 00:24:17,000 --> 00:24:21,000 ef bæði af þeim aftur satt, þá myndi það auka skora. 371 00:24:21,000 --> 00:24:26,000 Hér er að finna virka þar sem það tekur í orði sem band, 372 00:24:26,000 --> 00:24:32,000 og það þarf að vera 2 eða fleiri stafir, 373 00:24:32,000 --> 00:24:36,000 og þá hvað þetta gerir er að það leit rist fyrir þessi orð. 374 00:24:36,000 --> 00:24:41,000 Hér sjáum við dæmi um iterating yfir hvert frumefni í rist 375 00:24:41,000 --> 00:24:47,000 þar sem þeir iterate á línum og þá innan þess iterate yfir dálkana. 376 00:24:47,000 --> 00:24:50,000 Hér muna markar 2D array sem í grundvallaratriðum geymir annaðhvort sannar eða ósannar 377 00:24:50,000 --> 00:24:52,000 hvort við höfum verið að þessi bréf nú þegar. 378 00:24:52,000 --> 00:24:58,000 Aðallega þetta breytir öll merki vegna þess að við erum bara að takast á við merki 379 00:24:58,000 --> 00:25:01,000 í hvert skipti sem við erum að skoða ákveðna orð. 380 00:25:01,000 --> 00:25:04,000 Þá hér þegar við höfum fært allar merki 381 00:25:04,000 --> 00:25:08,000 það leit í raun fyrir orð, og svo að leita að orðinu 382 00:25:08,000 --> 00:25:13,000 það er þar sem við notum skrið virka, þannig að við skulum fara aftur upp að skríða 383 00:25:13,000 --> 00:25:16,000 og taka a líta á það. 384 00:25:16,000 --> 00:25:20,000 Hvaða skríða gerir er að það tekur í streng sem heitir bréf 385 00:25:20,000 --> 00:25:27,000 sem og í grundvallaratriðum x og y, sem er upphafið vísitölu 386 00:25:27,000 --> 00:25:33,000 um þar sem notandinn hefur sagt orðið er. 387 00:25:33,000 --> 00:25:38,000 Meginatriðum tékka það ef x er <0 eða> vídd 388 00:25:38,000 --> 00:25:41,000 grundvallaratriðum sem þýðir að vísitalan í raun er ekki til í leiknum okkar, 389 00:25:41,000 --> 00:25:43,000 svo þá skilar falskur. 390 00:25:43,000 --> 00:25:47,000 Ef þú hefur þegar heimsótt tiltekna bréf 391 00:25:47,000 --> 00:26:02,000 þá er að fara að skila falskur eins og heilbrigður því regla í Scramble 392 00:26:02,000 --> 00:26:11,000 er að þegar þú hefur 393 00:26:11,000 --> 00:26:14,000 bréf hér, til dæmis, 394 00:26:14,000 --> 00:26:20,000 þú getur tekið þátt í bréf með því að fara upp eða á ská eins og þetta, 395 00:26:20,000 --> 00:26:24,000 Svo í rauninni næsti stafur geta verið í einhverjum af þessum aðliggjandi blokkir, 396 00:26:24,000 --> 00:26:31,000 en það sem þú getur ekki gert, til dæmis, er að fara í þessu bréfi 397 00:26:31,000 --> 00:26:37,000 og fara aftur til A, þannig að þú getur aðeins notað hvert bréf einu sinni. 398 00:26:37,000 --> 00:26:42,000 Þá vit að hér eru merki um að ef við höfum verið þar áður, 399 00:26:42,000 --> 00:26:47,000 Ef merki er stillt á satt, þá er það ekki gilt orð. 400 00:26:47,000 --> 00:26:49,000 >> Þá er það það gerir það eftirlit. 401 00:26:49,000 --> 00:26:53,000 Það segir að ég ætla að athuga hvort að þetta tiltekna stað 402 00:26:53,000 --> 00:26:55,000 bréfinu sem við viljum er það. 403 00:26:55,000 --> 00:26:57,000 Ef það er ekki, skilar það rangt. 404 00:26:57,000 --> 00:27:02,000 Þar sem það er nú þegar athugað að blokk, þá er að fara að setja merkið 405 00:27:02,000 --> 00:27:06,000 á þeim tiltekna tímapunkti sem satt. 406 00:27:06,000 --> 00:27:09,000 Nú stöðva það að í rauninni ef við erum að halda áfram 407 00:27:09,000 --> 00:27:13,000 Það þýðir að við erum að fara að leita að næstu bréfi 408 00:27:13,000 --> 00:27:18,000 í orði sem notandinn er að reyna að senda inn. 409 00:27:18,000 --> 00:27:20,000 Hér muna aftur reglur. 410 00:27:20,000 --> 00:27:24,000 Þú ert að reyna að stöðva allar samliggjandi gildi, 411 00:27:24,000 --> 00:27:28,000 sjálfur ofan, neðan, til vinstri og hægri eins og heilbrigður eins og the Hornalínum, 412 00:27:28,000 --> 00:27:32,000 og svo álíka þegar við héldum af iterating yfir 2D fylki 413 00:27:32,000 --> 00:27:35,000 þar sem við vildum að iterate yfir allar mögulegar og athuga 414 00:27:35,000 --> 00:27:41,000 hvert hægt permutation milli röðinni vísitölur og dálki vísitölur 415 00:27:41,000 --> 00:27:43,000 hér við að athuga allar mögulegar samsetningu, 416 00:27:43,000 --> 00:27:49,000 ef það er til vinstri af the bréf, beint fyrir ofan, eða til hægri. 417 00:27:49,000 --> 00:27:56,000 Hér sjáum við að þessi lykkja ávísanir til vinstri 418 00:27:56,000 --> 00:27:58,000 þegar ég er -1. 419 00:27:58,000 --> 00:28:04,000 Þegar það er á 0 það eftirlit á sama dálki að bréf er á, 420 00:28:04,000 --> 00:28:08,000 og svo ef ég er 1, sem er endanleg verðmæti hennar, þá tékka það til hægri, 421 00:28:08,000 --> 00:28:10,000 og þá er það ekki nóg, ekki satt? 422 00:28:10,000 --> 00:28:13,000 Við þurfum að stöðva alla lóðrétta gildi, 423 00:28:13,000 --> 00:28:19,000 Svo hér erum við með lykkju sem fær athugað hvort það fer undir 424 00:28:19,000 --> 00:28:22,000 á sama stigi eða fyrir ofan, svo þá er samsetning þess 425 00:28:22,000 --> 00:28:28,000 mun opna hvert einasta aðliggjandi blokk í A. 426 00:28:28,000 --> 00:28:38,000 En tékka það einnig blokk hér á A, 427 00:28:38,000 --> 00:28:44,000 Svo viljum við að tryggja að við stöðva ekki þessi einn. 428 00:28:44,000 --> 00:28:51,000 Nú þá, að í raun og veru hvort ofangreind orð eru gild eða ekki 429 00:28:51,000 --> 00:28:56,000 þá viljum við gera sömu aðferð fyrir the hvíla af the orð 430 00:28:56,000 --> 00:29:00,000 útilokar sá sem við höfum nú þegar gert, svo þá er hér undanfari virka. 431 00:29:00,000 --> 00:29:03,000 Hún kallar sig, og við munum komast inn í það svolítið síðar, 432 00:29:03,000 --> 00:29:13,000 en það fer með sömu aðferð fyrir alla síðari strengi. 433 00:29:13,000 --> 00:29:16,000 Við höfum talað um finna fallið. 434 00:29:16,000 --> 00:29:18,000 Við skiljum hvað það er að gera. 435 00:29:18,000 --> 00:29:23,000 Það er í grundvallaratriðum athuga hvort þetta orð sem notandinn gaf 436 00:29:23,000 --> 00:29:27,000 í raun er um borð og hvort sem það er metin færa. 437 00:29:27,000 --> 00:29:29,000 Hér höfum við frumstilla virka. 438 00:29:29,000 --> 00:29:33,000 Takið eftir að ógilt það, svo það er ekki að fara að koma aftur okkur neitt, 439 00:29:33,000 --> 00:29:36,000 en það er bara að fara að vera að gera eitthvað fyrir okkur. 440 00:29:36,000 --> 00:29:39,000 >> Hér burt af Wikipedia það er tíðni 441 00:29:39,000 --> 00:29:42,000 fyrir hvern staf um stafrófið byggt á hversu oft 442 00:29:42,000 --> 00:29:45,000 það er notað í ensku. 443 00:29:45,000 --> 00:29:50,000 Þú sérð að e er, til dæmis, einn af the vinsæll bréf notuð. 444 00:29:50,000 --> 00:29:52,000 Við viljum byggja á rist. 445 00:29:52,000 --> 00:29:55,000 Hvað þessi aðgerð gerir er byggja á rist með bréfum 446 00:29:55,000 --> 00:30:06,000 konar miðað við tíðni þeirra í þessu fylki. 447 00:30:06,000 --> 00:30:11,000 Nú, þetta er að nota þetta tungumál hér 448 00:30:11,000 --> 00:30:14,000 segja stærð á tíðnum, 449 00:30:14,000 --> 00:30:16,000 Það er góður af aðeins sérstökum tilvikum. 450 00:30:16,000 --> 00:30:21,000 Við getum í raun notað stærð tíðni, þannig að þegar þú vilt í raun og veru að 451 00:30:21,000 --> 00:30:26,000 Finnið lengd fjölda sem þú sennilega ert ekki að fara að nota stærð 452 00:30:26,000 --> 00:30:29,000 heldur bara að nota array lengd. 453 00:30:29,000 --> 00:30:33,000 Þú getur beðið TFS til að tala við þig aðeins meira um það, 454 00:30:33,000 --> 00:30:40,000 en bara veit að þetta setningafræði hér er meira sérstakt tilfelli. 455 00:30:40,000 --> 00:30:49,000 Nú, fyrir hvert frumefni í rist 456 00:30:49,000 --> 00:30:53,000 við viljum gera bréf, og það er að fara að vera pseudorandom, 457 00:30:53,000 --> 00:30:55,000 svo handahófi en ekki alveg. 458 00:30:55,000 --> 00:30:58,000 Í meginatriðum er það sem þetta er að við sett nýja tvöfaldur 459 00:30:58,000 --> 00:31:01,000 með handahófi gildi milli 0 og 1. 460 00:31:01,000 --> 00:31:03,000 Byggt á því að við erum að fara að kortleggja það, 461 00:31:03,000 --> 00:31:08,000 svo að segja að D er stillt á 0,6 ma. 462 00:31:08,000 --> 00:31:13,000 Þá ef d er 60% í 463 00:31:13,000 --> 00:31:16,000 þá erum við að fara að líta á alla stafina og finna 464 00:31:16,000 --> 00:31:19,000 miðað við hversu oft þeir eru notaðir 465 00:31:19,000 --> 00:31:21,000 hvað er 60% inn 466 00:31:21,000 --> 00:31:24,000 Þetta er ekki bara 60% af stafrófinu heldur 467 00:31:24,000 --> 00:31:28,000 a tekur þetta mikið pláss, og þá B tekur upp þetta mikið, 468 00:31:28,000 --> 00:31:31,000 og þá E, til dæmis, vilja taka upp þetta mikið. 469 00:31:31,000 --> 00:31:35,000 Byggt á hlutfallslegt lengd eða tíðni 470 00:31:35,000 --> 00:31:39,000 af þessum bréfum sem við erum að fara að kortleggja þessi hending 471 00:31:39,000 --> 00:31:43,000 milli 0 og 1 á tiltekna bréf. 472 00:31:43,000 --> 00:31:45,000 Það er það sem þetta númer er hér, 473 00:31:45,000 --> 00:31:52,000 og svo hér er k eins og breyting á þar ásamt 474 00:31:52,000 --> 00:31:59,000 í bréfi sem við viljum vera, og svo við setja staf í rist 475 00:31:59,000 --> 00:32:04,000 að vera A + k. 476 00:32:04,000 --> 00:32:07,000 >> Takið eftir að aftur að hugsa til gráðugur 477 00:32:07,000 --> 00:32:11,000 við þurftum að nota umferð aðgerð að takast á við fljótandi punkta imprecision hér, 478 00:32:11,000 --> 00:32:14,000 svo álíka að við þurftum að taka tillit til þess að stundum 479 00:32:14,000 --> 00:32:18,000 flýtur eru ekki nákvæmlega það sem við ætlum þeim að vera, 480 00:32:18,000 --> 00:32:27,000 þannig að við viljum að afla fyrir það. 481 00:32:27,000 --> 00:32:32,000 Þá hér við fara í skrá I / O, í grundvallaratriðum að lesa og skrifa í skrár, 482 00:32:32,000 --> 00:32:34,000 sem þú vilja fá inn seinna en ekki alveg enn, 483 00:32:34,000 --> 00:32:39,000 svo í raun þetta opnar orðabók skrá, les það sem er í henni, 484 00:32:39,000 --> 00:32:42,000 og þá setur það inn í fylki. 485 00:32:42,000 --> 00:32:46,000 Takið eftir að við setjum það inn í strúktúr sem við höfum lýst orðabókin strúktúrinn, 486 00:32:46,000 --> 00:32:53,000 og svo hefur orðabók fylki kallast orð í tengslum við það, 487 00:32:53,000 --> 00:33:00,000 svo hvað það er að gera er að segja orðabók, orð á þessu tiltekna vísitölu 488 00:33:00,000 --> 00:33:04,000 eru svo og svo gildi. 489 00:33:04,000 --> 00:33:10,000 Þá erum við næstum búin með dreifingu kóða. 490 00:33:10,000 --> 00:33:13,000 Við höfum að lokum útlit virka þar sem þú hefur athugasemdir 491 00:33:13,000 --> 00:33:18,000 leiðbeina þér um hvað þessi kóði ætti að gera. 492 00:33:18,000 --> 00:33:21,000 Leit mun líta upp orði í orðabók 493 00:33:21,000 --> 00:33:24,000 og svo lengi sem þessi orð hafi ekki fundist þegar 494 00:33:24,000 --> 00:33:29,000 þá fánar það fannst eins og þannig að notandi getur notað það aftur 495 00:33:29,000 --> 00:33:33,000 en einnig skilar satt hugsa bak til the aðalæð virka aftur, 496 00:33:33,000 --> 00:33:37,000 skilar satt, svo segir að þessi orð geta verið skorað. 497 00:33:37,000 --> 00:33:39,000 >> Og loks hefur þú Scramble virka, 498 00:33:39,000 --> 00:33:42,000 sem er annar ógilt virka vegna þess að það er að gera eitthvað 499 00:33:42,000 --> 00:33:45,000 en ekki aftur neitt, svo hvað Scramble aðgerð mun gera 500 00:33:45,000 --> 00:33:51,000 er snúa rist 90 ° réttsælis. 501 00:33:51,000 --> 00:33:55,000 Ég veit að gæti hafa verið svolítið gróft, en það er mikilvægt að gera. 502 00:33:55,000 --> 00:33:57,000 Horfa á mig að fara í gegnum dreifingu kóða, 503 00:33:57,000 --> 00:33:59,000 en eins og vel, reyna að fara í gegnum það sjálfur. 504 00:33:59,000 --> 00:34:04,000 Það sem ég vil gera er að kortleggja það út að skilja 505 00:34:04,000 --> 00:34:15,000 hvað þýðir þetta forrit með allar þessar aðgerðir ekki í raun? 506 00:34:15,000 --> 00:34:18,000 Ef ég væri að fara í gegnum dreifingu kóða aftur 507 00:34:18,000 --> 00:34:21,000 Nú þegar ég hef svona tilfinningu um hvað er að gerast þá myndi ég segja 508 00:34:21,000 --> 00:34:28,000 við byrjum með helstu hlutverk okkar, 509 00:34:28,000 --> 00:34:36,000 og þá held ég að það fyrsta sem hún gerir er að hann kallar álag, 510 00:34:36,000 --> 00:34:40,000 svo helstu símtöl álag, en álag er ógilt virka, 511 00:34:40,000 --> 00:34:45,000 Svo hvað ég geri til að gefa til kynna að sé bara að setja eitt ör 512 00:34:45,000 --> 00:34:48,000 bendir til að hlaða því helsta kallar það. 513 00:34:48,000 --> 00:34:56,000 The næstur hlutur er að frumstilla. 514 00:34:56,000 --> 00:34:59,000 Helstu símtöl frumstilla, 515 00:34:59,000 --> 00:35:02,000 og þá ef við lítum til baka til meginvirkni okkar 516 00:35:02,000 --> 00:35:06,000 Ég held að þetta næstur hlutur sem það gerir, 517 00:35:06,000 --> 00:35:09,000 hérna eru tonn af mismunandi hlutum sem helsta er starf, 518 00:35:09,000 --> 00:35:13,000 en núna er ég bara að einbeita sér að helstu sjálfur 519 00:35:13,000 --> 00:35:18,000 viðeigandi kóða, þannig að ég er ekki þar á meðal að ég eða eitthvað svoleiðis. 520 00:35:18,000 --> 00:35:25,000 Þá er næsta hlutur sem það gerir það hreinsar það, 521 00:35:25,000 --> 00:35:29,000 og þá er að draga, 522 00:35:29,000 --> 00:35:36,000 og svo veit ég að draga er eitthvað sem við erum að fara að gera. 523 00:35:36,000 --> 00:35:38,000 Það er jafntefli virka. 524 00:35:38,000 --> 00:35:44,000 Seinna sjáum við að næsta einn er a hluti- 525 00:35:44,000 --> 00:35:57,000 Svo við höfum Scramble. 526 00:35:57,000 --> 00:36:02,000 Og þá höfum við fundið, svo að finna er annað fall. 527 00:36:02,000 --> 00:36:07,000 Við sjáum að finna er-ef þú manst aftur það er Boole aðgerð, 528 00:36:07,000 --> 00:36:09,000 Svo það er í raun að fara að fara aftur eitthvað til baka til okkar. 529 00:36:09,000 --> 00:36:18,000 Þá hér er ég kynna að með því að við höfum fundið, 530 00:36:18,000 --> 00:36:29,000 og þá erum við líka að hafa útlit. 531 00:36:29,000 --> 00:36:32,000 En svo muna að það er líka þetta skríða virka 532 00:36:32,000 --> 00:36:35,030 sem virðist ekki hafa verið kallað í Main, 533 00:36:35,030 --> 00:36:39,000 svo þýðir að einhver annar aðgerð er starf skrið 534 00:36:39,000 --> 00:36:41,000 og ef þú leitar aftur í gegnum dreifingu kóða 535 00:36:41,000 --> 00:36:46,000 þú sérð að finna hér er einn sem notar skrið 536 00:36:46,000 --> 00:36:52,000 svo þá finna þá líka tenglar að skríða, 537 00:36:52,000 --> 00:36:55,090 sem er Boolean gildi, sem skilar eitthvað, 538 00:36:55,090 --> 00:36:58,000 þannig að ég ætla að bæta annar hlutur, og þá þar sem skrið er endurkvæma 539 00:36:58,000 --> 00:37:03,000 það lykkjur líka aftur á sig. 540 00:37:03,000 --> 00:37:07,000 >> Þá ef þú sérð hér að ég hef dregið upp mynd af því sem áætlun okkar lítur út, 541 00:37:07,000 --> 00:37:10,000 svo að skilja tengsl milli tilteknum aðgerðum, 542 00:37:10,000 --> 00:37:14,000 og fara aftur til að þú sérð líka röð af leiknum 543 00:37:14,000 --> 00:37:24,000 og röksemdafærsla hvernig leikurinn program er að fara að halda áfram. 544 00:37:24,000 --> 00:37:27,000 Við höfum lesið dreifingu kóða. 545 00:37:27,000 --> 00:37:29,000 Fyrsta aðgerð sem þú ert að fara að vilja til að hrinda í framkvæmd, 546 00:37:29,000 --> 00:37:32,000 eða einn af þeim aðgerðir sem þú vilt að framkvæma er að teikna, 547 00:37:32,000 --> 00:37:37,000 og svo hér hafa í raun lítill hluti af frelsi með þetta. 548 00:37:37,000 --> 00:37:43,000 Ef við lítum á starfsfólk lausn- 549 00:37:43,000 --> 00:37:54,000 Ég ætla að opna Terminal glugga, í raun, 550 00:37:54,000 --> 00:38:05,000 pset3/scramble. 551 00:38:05,000 --> 00:38:09,000 Klóra það. Ég held að ég þarf að uppfæra tæki mína. 552 00:38:09,000 --> 00:38:12,000 Ef þú spilar með starfsfólk lausn-Scramble 553 00:38:12,000 --> 00:38:14,000 leiðbeiningar eru í sérstakur til að- 554 00:38:14,000 --> 00:38:20,000 þá getur þú séð hvernig þeir eru búnir að prenta út leikinn borð, 555 00:38:20,000 --> 00:38:23,000 en í raun það sem þeir gera er að þeir setja bil á milli stafanna, 556 00:38:23,000 --> 00:38:27,000 en þú ert smá frelsi með þetta, þannig að ef þú vilt prenta línur, til dæmis, 557 00:38:27,000 --> 00:38:31,000 milli þeirra þá getur þú gert það. 558 00:38:31,000 --> 00:38:38,000 Þú vilja til að hugsa til baka hvernig við iterate yfir alla þætti 2D array 559 00:38:38,000 --> 00:38:41,000 og þú þarft að prenta þá, ganga úr skugga um að þú hafir lykkja þinn 560 00:38:41,000 --> 00:38:49,000 og hafa prenta aðgerðir þínar svo að þú ert að prenta í réttri röð. 561 00:38:49,000 --> 00:38:54,000 Ef þú vilt endurtekning lykkja til-þegar þú iterate yfir það 562 00:38:54,000 --> 00:39:03,000 og þú notar vísitölur að tryggja að þú ert að prenta í réttri röð. 563 00:39:03,000 --> 00:39:06,000 >> Takast á við 2D fylki í fyrstu getur verið svolítið truflandi, 564 00:39:06,000 --> 00:39:12,000 svo hér á þessari mynd sem ég hef gert töflu sem sýnir 565 00:39:12,000 --> 00:39:16,000 fyrir hvert gefið blettur í 2D array hvaða vísitölur eru, 566 00:39:16,000 --> 00:39:19,000 þannig að ef þú vilt vísa til baka þetta fyrir a fljótur stöðva 567 00:39:19,000 --> 00:39:22,000 eða um tilvísun eða eitthvað svoleiðis þá er hægt að nota þetta. 568 00:39:22,000 --> 00:39:30,000 Súlurnar eru í bláum og raðir eru í rauðu. 569 00:39:30,000 --> 00:39:34,000 The útlit aðgerð er tvíþætt. 570 00:39:34,000 --> 00:39:37,000 Athuga-og það er Boole aðgerð, mun segja okkur 571 00:39:37,000 --> 00:39:43,000 satt eða ósatt hvort notandi-lögð orð 572 00:39:43,000 --> 00:39:46,000 geta tekið sem gilt gildi, 573 00:39:46,000 --> 00:39:51,000 og svo er orðið á Scramble aðeins gilt 574 00:39:51,000 --> 00:39:56,000 ef það er að finna í orðabók og ef það er í raun að finna í stjórn, 575 00:39:56,000 --> 00:40:02,000 og svo muna að útlit sem þú þarft að framkvæma þetta sjálfur, 576 00:40:02,000 --> 00:40:10,000 svo þú vilt að athuga bæði hluti, 577 00:40:10,000 --> 00:40:16,000 hvort orðið er í raun í orðabókinni og hvort það hefur fundist nú þegar. 578 00:40:16,000 --> 00:40:18,940 Muna aftur til heimsins breyta orðabók, 579 00:40:18,940 --> 00:40:24,160 sem er strúktúr sem við höfum gert sem í grundvallaratriðum hefur int kallast stærð 580 00:40:24,160 --> 00:40:27,290 í tengslum við það og fylki af orðum, 581 00:40:27,290 --> 00:40:32,030 þar orðið er ný gögn tegund. 582 00:40:32,030 --> 00:40:36,910 Svo til að fá aðgang, til dæmis, the stærð af the orðabók eða orð array, 583 00:40:36,910 --> 00:40:39,840 þá hvað þú getur gert er bara að skrifa 'dictionary.size,' 584 00:40:39,840 --> 00:40:42,580 á sama hátt sem þú vilt bara nota aðra breytu. 585 00:40:42,580 --> 00:40:48,550 Svo ef dictionary.size táknar stærð orðabók, 586 00:40:48,550 --> 00:40:51,450 álíka, dictionary.words táknar array. 587 00:40:51,450 --> 00:40:54,690 Svo ef þú vilja til að fá aðgang að ákveðnum orð innan orðabókina 588 00:40:54,690 --> 00:40:59,020 þá þyrfti að bæta við vísitölu 589 00:40:59,020 --> 00:41:03,130 vegna þess að þú þyrftir að segja 'dictionary.words á vísitölu i' 590 00:41:03,130 --> 00:41:06,050 og þá gera eitthvað byggt á því. 591 00:41:06,050 --> 00:41:09,950 Svo vita að orðabókin hafi ákveðna stærð í tengslum við það, 592 00:41:09,950 --> 00:41:13,720 og fylki af orðum, til að athuga hvort eitthvað er í orðabókinni, 593 00:41:13,720 --> 00:41:16,870 þá þyrfti að interate yfir orðabókina 594 00:41:16,870 --> 00:41:20,610 til að athuga hvort að orð er að finna. 595 00:41:20,610 --> 00:41:25,720 >> Nú, ef þú hugsa til baka til að halda fyrirlestra, þegar við ræddum um mismunandi leiðir til að leita að hlutum, 596 00:41:25,720 --> 00:41:30,690 þá muna að línuleg leita sennilega er ekki alltaf besta leiðin til að fara. 597 00:41:30,690 --> 00:41:36,600 En það er örugglega ein leiðin til að leita að einhverju. 598 00:41:36,600 --> 00:41:39,540 Stundum þú might finna þessi þú framkvæma finna virka með 599 00:41:39,540 --> 00:41:42,650 línuleg leita fyrst og þá fá the hvíla af þinn program fara. 600 00:41:42,650 --> 00:41:47,480 Og svo seinna er hægt að fara til baka og breyta því hvernig að þú leitar í gegnum að orði. 601 00:41:47,480 --> 00:41:52,010 Svo fjallar - í grundvallaratriðum að vita það - að vita hvernig á að fá aðgang að 602 00:41:52,010 --> 00:41:55,650 orð array af orðabókinni, sem fjallar að leita að sjá 603 00:41:55,650 --> 00:41:58,190 hvort sem orðið er reyndar í orðabók eða ekki. 604 00:41:58,190 --> 00:42:06,540 En þá þurfum við líka að takast á um hvort það orð er á borð. 605 00:42:06,540 --> 00:42:08,540 Og hvort sem er fundist nú þegar. 606 00:42:08,540 --> 00:42:12,670 Þannig að við nú þegar höfum finna virka, man. 607 00:42:12,670 --> 00:42:18,310 Það sýnir SU, en það er orð? 608 00:42:18,310 --> 00:42:22,330 Þetta er ekki heimspekileg spurning heldur, heldur líta á tegund skilgreiningar. 609 00:42:22,330 --> 00:42:27,250 Við höfum Boolean heitir "finna" og fylki af stöfum 610 00:42:27,250 --> 00:42:29,570 sem sýnir þessi orð. 611 00:42:29,570 --> 00:42:35,940 Svo þegar þú kemur aftur útlit, munt þú vilt að athuga hvort að orð hefur verið fundið eða ekki. 612 00:42:35,940 --> 00:42:43,040 Nú, að vita að The Boolean fundið - fundið er nafn The Boolean 613 00:42:43,040 --> 00:42:49,660 sem er í tengslum við hvert orð - svo hvernig getur þú nálgast þá breytu, 614 00:42:49,660 --> 00:43:01,590 hugsa til baka hvernig við að nálgast breytur innan orðabók? 615 00:43:01,590 --> 00:43:05,120 Svo hér við höfðum orðabók, og þá erum við að segja punktur stærð, ekki satt? 616 00:43:05,120 --> 00:43:08,170 Á sama hátt, þegar við höfum orð og í þessu tilfelli, að vera varkár því 617 00:43:08,170 --> 00:43:13,340 orðið er bara önnur gögn gerð, rétt eins og int eða streng. 618 00:43:13,340 --> 00:43:19,640 Svo þú getur ekki bara sagt "orð" nema það er nafnið hennar. 619 00:43:19,640 --> 00:43:24,540 Þú ert að fara að hafa breytu með nafni, og svo þegar þú ert að 620 00:43:24,540 --> 00:43:29,980 segja að heitir foo, til dæmis, þá er hægt að segja "foo.found, 621 00:43:29,980 --> 00:43:39,560 og það mun skila þér Boolean gildi hvort þessi orð hafi fundist eða ekki. 622 00:43:39,560 --> 00:43:46,960 >> Svo er næsta hluti af pset er að innleiða Scramble, 623 00:43:46,960 --> 00:43:51,630 þar þegar notandi inntak Scramble - og það er nú þegar verið brugðist við 624 00:43:51,630 --> 00:43:54,280 hér í dreifingu kóða - þú þarft bara að framkvæma 625 00:43:54,280 --> 00:44:03,170 virka Scramble sem hefur nú þegar sagt að snúa borð 90 ​​° réttsælis. 626 00:44:03,170 --> 00:44:07,380 Eins og á the sérstakur, segja leiðbeiningar sem stjórnin snýst 90 ° réttsælis 627 00:44:07,380 --> 00:44:16,180 svo að gildi á töflu [0] [0] þá færist rist [0] [vídd -1.] 628 00:44:16,180 --> 00:44:38,240 Í þessu tilviki, að Scramble, vídd okkar er 4, svo 0-0 myndi þá landakort til 0-3. 629 00:44:38,240 --> 00:44:41,210 Við skulum draga þetta út til að sjá hvað það getur litið út. 630 00:44:41,210 --> 00:44:49,620 Ég ætla ekki að gera 4 x 4 rist heldur 3 x 3 ein. 631 00:44:49,620 --> 00:44:52,470 Við skulum segja að þetta er tomma 2D fylki. 632 00:44:52,470 --> 00:45:02,040 Ég ætla bara að fara að bara - allt í lagi. 633 00:45:02,040 --> 00:45:12,110 Svo segja að við viljum Scramble þetta, viljum við snúa henni 90 ° réttsælis. 634 00:45:12,110 --> 00:45:22,320 Við vitum það, sem útgangspunkt, gildi á 0-0, sem í þessu tilfelli er númer 0, 635 00:45:22,320 --> 00:45:28,950 er að fara að kortleggja til röð 0, þá dálki vídd -1. 636 00:45:28,950 --> 00:45:31,570 Og svo að í þessu tilfelli, stærð er 3. 637 00:45:31,570 --> 00:45:37,400 Svo 0 myndi fara röðinni 0, 2. dálki. 638 00:45:37,400 --> 00:45:41,910 Þannig að við höfum fjölda 0 Þar. 639 00:45:41,910 --> 00:45:45,970 Í meginatriðum er það sem við erum að gera við erum að taka á þessu, 640 00:45:45,970 --> 00:45:52,840 líkamlega snúa það svo þá 2 myndi fara á þetta horn, 641 00:45:52,840 --> 00:45:57,620 8 myndi þá fara að þessu horni, að 6 á þessu. 642 00:45:57,620 --> 00:46:07,840 Og þá hinir það myndi líta út eins og - 643 00:46:07,840 --> 00:46:15,180 Svo það er það rist lítur út þegar þú hefur verið spæna það. 644 00:46:15,180 --> 00:46:17,410 Þegar þú ert að innleiða Scramble virka, hvað þú þarft að gera 645 00:46:17,410 --> 00:46:22,520 er að sjá, ja, hvernig get ég skipta þessum gildum? 646 00:46:22,520 --> 00:46:26,090 Er einhvers konar mynstur eða einhver formúlu til að ákvarða 647 00:46:26,090 --> 00:46:29,900 þar sem einkum vísitalan fer? 648 00:46:29,900 --> 00:46:42,470 Til dæmis gæti ég leita að sjá að 3-4-5 hér er röð. 649 00:46:42,470 --> 00:46:44,650 Hvar annars sé ég 3-4-5? 650 00:46:44,650 --> 00:46:49,410 Jæja ég sé það hér. 651 00:46:49,410 --> 00:47:02,360 Á sama hátt, ég sé 6-7-8 sem röð, en þá er í raun dálk hér. 652 00:47:02,360 --> 00:47:07,830 Það er mynstur sem ég sé núna, en það eru sennilega fáir aðrir sjálfur. 653 00:47:07,830 --> 00:47:11,980 Byggist á því, að hugsa um einhvers konar mynstri, einhvers konar hátt. 654 00:47:11,980 --> 00:47:20,290 Þegar þú hefur bent einn, þá þú ert að fara að vilja til að endurstilla gildin í rist. 655 00:47:20,290 --> 00:47:25,480 Svo rist 0-0 verða 6, rist 0-1 verða 3. 656 00:47:25,480 --> 00:47:32,990 En mundu að you'll - til dæmis, ef þú endurstilla þetta strax, 657 00:47:32,990 --> 00:47:49,170 segja að rist 0-2 verður 0 nú, þá missir það 2 var þar. 658 00:47:49,170 --> 00:47:52,380 Svo að hugsa til baka, það er ekki nóg bara að endurúthluta strax. 659 00:47:52,380 --> 00:47:56,420 Þú munt sennilega vilja til að gera tímabundið afrit af eitthvað 660 00:47:56,420 --> 00:48:08,380 áður en þú setur í raun það á réttum stað. 661 00:48:08,380 --> 00:48:11,860 >> Það síðasta er að innleiða ræða andrógenónæmi. 662 00:48:11,860 --> 00:48:19,310 Ef þú lítur til baka, leita að staðnum í sérstakur þar sem notandi inntak streng. 663 00:48:19,310 --> 00:48:22,700 Ef þú manst aftur, hugsa aftur - ó, eytt ég kortið. 664 00:48:22,700 --> 00:48:30,300 Ef þú heldur aftur til kort af program, það er innan meginvirkni, 665 00:48:30,300 --> 00:48:33,850 svo líta til þar sem þú ert að takast á við notandi-inputted band, 666 00:48:33,850 --> 00:48:38,260 og þá í það, held að þau tæki sem þú lært af þinn 667 00:48:38,260 --> 00:48:43,690 dulritunarstjórneiningunni pset, pset 2, og þá finna leiðir sem þú might vera fær til 668 00:48:43,690 --> 00:48:48,640 leyfa notandi inntak sem blönduðu tilfelli. 669 00:48:48,640 --> 00:48:53,980 Svo þeir gætu hafa blöndu af uppercases og lowercases, en það ætti samt að vera í gildi. 670 00:48:53,980 --> 00:48:59,770 Í orðabók, muna þegar við opnað upp að skrá, var hvert orð geymt sem öllum hástafi. 671 00:48:59,770 --> 00:49:05,880 En við viljum ekki að notandi að þurfa að inntak hástafi allan tímann. 672 00:49:05,880 --> 00:49:12,150 Getur einhver hugsað á þann hátt sem við gætum vera fær um að leyfa notanda, 673 00:49:12,150 --> 00:49:18,320 jafnvel þótt þeir inputted allt lágstafir, til dæmis? Já? 674 00:49:18,320 --> 00:49:20,540 [Nemandi] Þú getur gert það í efri? 675 00:49:20,540 --> 00:49:23,470 Já, nákvæmlega. Þú getur gert það til efri. 676 00:49:23,470 --> 00:49:27,670 Svo þú gætir breyta öllum bréfum í hástafi, og þá 677 00:49:27,670 --> 00:49:30,950 þannig að þú sjá að það er að fara að vera nákvæm eftirlíking 678 00:49:30,950 --> 00:49:35,410 um hvað er að finna í orðabók, ef það er í orðabókinni. 679 00:49:35,410 --> 00:49:40,910 Frábært. Við höfum smá vinstri tíma. 680 00:49:40,910 --> 00:49:47,530 >> Svo nokkur atriði sem þú gætir fundur í pset er þörf á að vita 681 00:49:47,530 --> 00:49:52,400 hvaða breytur eru á ákveðnum tímapunkti. 682 00:49:52,400 --> 00:49:57,000 Þar í sérstakur að við höfum skýra aðgerð sem í grundvallaratriðum 683 00:49:57,000 --> 00:50:05,500 hreinsar hvað þú hefur dregið á borð, þurrka það umritar allt og þá á toppur af þessi, 684 00:50:05,500 --> 00:50:10,630 þú gætir, en þú ert að skrifa pset þína, ekki virkilega að gerast. 685 00:50:10,630 --> 00:50:13,810 Þar sem þú þarft að sjá, allt í lagi, þegar ég inn í Scramble, til dæmis, 686 00:50:13,810 --> 00:50:19,720 þegar ég inn í Scramble, hvað þýðir það að gera og það sem var það áður, bara til tilvísunar. 687 00:50:19,720 --> 00:50:24,680 Svo það sem þú might vilja til að gera er að fara til baka á aðalsíðu virka 688 00:50:24,680 --> 00:50:31,530 og athugasemd út skýr, til dæmis. 689 00:50:31,530 --> 00:50:34,060 Svo þegar þú keyrir forritið í næsta tíma, 690 00:50:34,060 --> 00:50:45,210 program vilja ekki hreinsa það í staðinn og mun bara halda á prentun á toppur af þessi. 691 00:50:45,210 --> 00:50:47,210 Það eru nokkrar aðrar leiðir til að kemba eins og heilbrigður. 692 00:50:47,210 --> 00:50:51,500 Það sem þú gætir gert er að þú getur falið prenta f yfirlýsingar, held ég. 693 00:50:51,500 --> 00:50:57,460 Eitt sem ég sá í psets sem ég farið var að fólk með prenta f yfirlýsingar 694 00:50:57,460 --> 00:51:02,710 að prenta út breytur á ákveðnum stað í tíma til að fylgjast með. 695 00:51:02,710 --> 00:51:06,820 En bara vera viss um að í lok, þegar þú hefur lokið við að skrifa alla prenta f þínar yfirlýsingar 696 00:51:06,820 --> 00:51:11,610 fyrir þér að halda utan um hluti, sem þú athugasemd þá út eftir, 697 00:51:11,610 --> 00:51:15,530 eða eyða þeim þegar þú hefur lokið. 698 00:51:15,530 --> 00:51:21,890 Það er önnur leið sem þú getur gert eitthvað, þú gætir bara skrifað í f prenta yfirlýsingu 699 00:51:21,890 --> 00:51:26,260 einhvers staðar er það sem skiptir máli og sjá, miðað við það flugstöðinni prentar út, 700 00:51:26,260 --> 00:51:28,950 Hvað það breytu var. 701 00:51:28,950 --> 00:51:33,320 >> Önnur leið til að gera það, að við munum fara í fleiri smáatriði á fyrirlestur, 702 00:51:33,320 --> 00:51:36,710 er GDB, sem er kembiforrit tól. 703 00:51:36,710 --> 00:51:47,270 Í meginatriðum, þegar þú keyrir það, verður það að fara inn í forritið og þú getur haft það fyrirfram 704 00:51:47,270 --> 00:51:51,500 eitt skref í einu í stað þess að meta allt. 705 00:51:51,500 --> 00:51:54,770 Svo er hægt að brjóta það upp í litlum skrefum, og þá byggt á leiðinni - 706 00:51:54,770 --> 00:52:00,230 og svo á leiðinni prenta það og sjá hvað gildi eru. 707 00:52:00,230 --> 00:52:07,830 Og að hjálpa þér að reikna út þar sem galla í kóðanum þínum gæti verið. 708 00:52:07,830 --> 00:52:12,970 Það sem við gætum gert núna er að skrifa fljótur aðgerð og þá 709 00:52:12,970 --> 00:52:19,780 sjá hvernig við gætum vera fær til nota gdb til að sjá hvað er að gerast. 710 00:52:19,780 --> 00:52:23,410 Svo skulum hafa int helstu, og þá hvað við höfum sem breytur í? 711 00:52:23,410 --> 00:52:32,690 Við höfum int arg C og band arg v 712 00:52:32,690 --> 00:52:44,900 Ég ætla að spara það í walkthrough sem GDB.z. Allt í lagi. 713 00:52:44,900 --> 00:52:48,300 Ég ætla að hafa aftur 0. 714 00:52:48,300 --> 00:52:59,390 Svo hvernig óður skulum bara hafa einfalt fyrir lykkju, við skulum hafa 12. 715 00:52:59,390 --> 00:53:06,750 Við skulum hafa einnig int heitir gegn, og 716 00:53:06,750 --> 00:53:11,910 við getum byrjað að í 0. Allt í lagi. 717 00:53:11,910 --> 00:53:17,760 Svo á hverjum stað í for lykkju, segja skulum að við viljum auka gegn 718 00:53:17,760 --> 00:53:26,980 eða margfalda það með hvað ég er. 719 00:53:26,980 --> 00:53:39,650 Þetta er mjög stutt aðgerð. 720 00:53:39,650 --> 00:53:46,290 Við skulum gera gdb. Oh! Og þá - Clang er klár. 721 00:53:46,290 --> 00:54:03,780 Segir mér að ég gerði ekki fela cs50.h. 722 00:54:03,780 --> 00:54:16,160 Allt í lagi. Svo nú viljum við að - 723 00:54:16,160 --> 00:54:32,740 Í raun, því miður krakkar. Ég ætla að endurnefna skrána bara vegna þess að það er svolítið ruglingslegt. 724 00:54:32,740 --> 00:54:43,630 >> Allt í lagi. Svo nú það sem við viljum gera er að við viljum byrja gdb. 725 00:54:43,630 --> 00:54:51,750 Ég sagði 'gdb kembiforrit, svo í raun það er að fara að vera að einbeita sér á þessum kembiforrit, 726 00:54:51,750 --> 00:54:55,540 á kembiforrit skrá. 727 00:54:55,540 --> 00:54:57,930 Ég ætla að setja breakpoint. 728 00:54:57,930 --> 00:55:01,160 Í meginatriðum, the program er að fara að keyra þangað til hann lendir á tilteknum breakpoint. 729 00:55:01,160 --> 00:55:04,910 Ég ætla að segja brot á helstu virkni. 730 00:55:04,910 --> 00:55:12,680 Svo núna er ég að fara að keyra kembiforrit, svo inni gdb ég get keyrt kóðann. 731 00:55:12,680 --> 00:55:17,710 Það er að keyra forrit, og jafnvel þó að helstu var einn af the fyrstur hlutur sem við skrifaði 732 00:55:17,710 --> 00:55:20,870 Við höfum einnig eru skrár, það er efni í gangi nú þegar. 733 00:55:20,870 --> 00:55:25,930 Það hefur breakpoint á helstu. 734 00:55:25,930 --> 00:55:29,900 Segjum "næst," svo að við getum haldið áfram á. 735 00:55:29,900 --> 00:55:33,300 Það segir "int counter = 0." 736 00:55:33,300 --> 00:55:39,310 Ég ætla að segja prenta gegn. " 737 00:55:39,310 --> 00:55:42,980 Þetta er undarlegt. Svo í raun gerum við ráð gegn að vera 0, 738 00:55:42,980 --> 00:55:46,680 en GDB er eitt skref til baka, þannig að þegar þú segir næst, 739 00:55:46,680 --> 00:55:50,350 segir INT counter = 0. Það er næsta hlutur sem það er að fara að framkvæma. 740 00:55:50,350 --> 00:55:56,160 Síðan sem þú smellir - þú getur sagt næst aftur, eða þú getur bara að segja 'n,' 741 00:55:56,160 --> 00:56:02,400 og nú ef þú prentað gegn, gegn er 0, eins og við gerum ráð fyrir. 742 00:56:02,400 --> 00:56:07,570 Grundvallaratriðum skapar það eigin sinnar tegundar á breytum fyrir það, en hvað er það - 743 00:56:07,570 --> 00:56:12,120 eins og hér, það er það gegn táknar. 744 00:56:12,120 --> 00:56:15,180 Þannig að ég ætla að smella á Next, og ég vil vita hvað ég er. 745 00:56:15,180 --> 00:56:21,270 Þú munt prenta ég er i 0, eins og við gerum ráð fyrir. 746 00:56:21,270 --> 00:56:25,630 Næsta aftur, það gefur til kynna að það er að fara í gegnum til hliðar aftur, 747 00:56:25,630 --> 00:56:32,970 þannig að ef ég prenta ég, til dæmis, get ég séð að við erum á - sem ég er 1 nú. 748 00:56:32,970 --> 00:56:36,150 Svo er það hátt, að ef þú stillir breakpoint á ákveðnu hlutverki 749 00:56:36,150 --> 00:56:39,520 og þá halda áfram að fara næst, og þá stöðva það sem ég er, 750 00:56:39,520 --> 00:56:45,790 Ef þú ert að giska á að kannski einhvers staðar eitthvað gerist ekki eins og það ætti, 751 00:56:45,790 --> 00:56:51,340 og þig grunar að kannski er það í fyrsta vísitölu eða síðasta vísitölu eða eitthvað, 752 00:56:51,340 --> 00:57:00,110 þú getur notað gdb, halda á prentun i, til að vera fær um að athuga hvað þessi gildi eru. 753 00:57:00,110 --> 00:57:05,830 Svo, í GDB, því prenta og næsta eru svo algeng rök, 754 00:57:05,830 --> 00:57:11,240 algengar skipanir, alveg eins og ég stytta við hliðina á n, 755 00:57:11,240 --> 00:57:22,010 Ég get líka bara sagt p gegn, það er enn 0. 756 00:57:22,010 --> 00:57:25,610 Og ég smellt á Next. Mig langar að prenta gegn aftur. 757 00:57:25,610 --> 00:57:26,790 Jæja, svo það er enn 0. 758 00:57:26,790 --> 00:57:39,010 >> Og þú ert svona að velta fyrir mér - ja, ég vil gegn að vera þáttatilraun virka. 759 00:57:39,010 --> 00:57:43,930 Hvers vegna - bara aðferðir kembiforrit - hvers vegna gæti það verið? 760 00:57:43,930 --> 00:57:48,160 Hvers vegna er gegn ekki að hækka verðmæti þess? 761 00:57:48,160 --> 00:57:53,100 Hvers vegna er það að dvelja á 0? 762 00:57:53,100 --> 00:57:59,320 Jæja, hér er ég - aftur hérna ég segi gegn = teljari x i. 763 00:57:59,320 --> 00:58:02,180 Svo ef ég fer aftur til the byrjun af hlutverki mínu, 764 00:58:02,180 --> 00:58:09,520 Ég sé að þegar ég prenta i, i er 0, og það er 0 x eitthvað? 765 00:58:09,520 --> 00:58:13,700 Það er 0, ekki satt? Svo það er líklega ástæðan fyrir því að gegn 766 00:58:13,700 --> 00:58:16,960 er aldrei að fara að vera einhver önnur tala. 767 00:58:16,960 --> 00:58:21,920 Svo það sem ég gæti langað til að gera er að fara aftur til fuction minn, 768 00:58:21,920 --> 00:58:27,410 segja, allt í lagi, og í raun, ég vil byrja það á 1. 769 00:58:27,410 --> 00:58:32,150 Er að fara að leysa það? 770 00:58:32,150 --> 00:58:34,550 Ekki alveg, því teljarinn enn 0 Hér. 771 00:58:34,550 --> 00:58:42,390 Svo skulum setja það í 1. 772 00:58:42,390 --> 00:58:49,040 Við viljum að endurstilla kembiforrit tól okkar, þannig að við skulum hætta. 773 00:58:49,040 --> 00:58:54,000 Og svo það sem við getum gert er að við getum GDB kembiforrit aftur, 774 00:58:54,000 --> 00:59:05,620 setja pásu á helstu, og þá hlaupa kembiforrit aftur, næst, næst, næst. 775 00:59:05,620 --> 00:59:12,520 Skulum högg næst nokkrum sinnum, og þá munum við prenta gegn, sjá að - 776 00:59:12,520 --> 00:59:16,140 við gerðum ekki rétt að gera skrána aftur. 777 00:59:16,140 --> 00:59:19,500 Jafnvel þó að við breytt kóðann, þá erum við í raun og veru 778 00:59:19,500 --> 00:59:21,660 ekki uppfæra executable okkar. 779 00:59:21,660 --> 00:59:27,310 Ég held að þú getur gert - já. 780 00:59:27,310 --> 00:59:29,880 Innan gdb sig, getur þú í raun að gera skrána. 781 00:59:29,880 --> 00:59:31,880 Svo þú þarft ekki að hætta gdb aftur. 782 00:59:31,880 --> 00:59:36,180 Þú getur farið aftur til the uppspretta skrá, vista það, aftur í GDB, getur þú gert það aftur. 783 00:59:36,180 --> 00:59:40,850 Frábært. Svo skulum hlaupa kembiforrit. 784 00:59:40,850 --> 00:59:45,900 Við viljum byrja það frá upphafi vegna þess að við höfum nýja executable. 785 00:59:45,900 --> 00:59:54,870 Við getum farið í gegnum nokkrum sinnum, og svo prenta ég, prenta gegn, að halda áfram. 786 00:59:54,870 --> 00:59:59,090 Allt í lagi. Svo nú sjáum við að gegn er í raun auka gildi þess sem við viljum það til. 787 00:59:59,090 --> 01:00:03,340 >> Það er bara litla bit-stór dæmi um hvernig þú getur notað gdb 788 01:00:03,340 --> 01:00:09,700 til að slá inn númerið þitt, prenta ákveðnar gildi, smelltu á Næsta til að halda áfram í næstu línu, 789 01:00:09,700 --> 01:00:12,960 og skammstafa það og prenta það út. 790 01:00:12,960 --> 01:00:18,690 Vitanlega, númerið í Scramble er aðeins flóknara en það, en það sem þú getur gert 791 01:00:18,690 --> 01:00:26,980 er sett breakpoint á - þú getur stillt breakpoint á útlit störfum þínum, eitthvað svoleiðis. 792 01:00:26,980 --> 01:00:29,440 Svo þegar það nær þeim stað þar sem það þarf að líta eitthvað upp, 793 01:00:29,440 --> 01:00:37,340 þá GDB mun keyra allt upp að þessu og þá getur þú byrjað prentun gildi út. 794 01:00:37,340 --> 01:00:42,030 Eins og er merki á þessum tímapunkti rangar eða er það satt? 795 01:00:42,030 --> 01:00:46,580 Það er líklega eitthvað sem þú might vilja til nota. 796 01:00:46,580 --> 01:00:49,060 GDB, gera streitu ekki of mikið um það, 797 01:00:49,060 --> 01:00:51,270 þar sem við munum fara í fleiri smáatriði í fyrirlestri, 798 01:00:51,270 --> 01:00:54,570 en ég vildi bara láta ykkur vita hvernig þú might vera fær til nota það 799 01:00:54,570 --> 01:01:00,120 Ef þú ert að byrja með pset og vilja til að skilja 800 01:01:00,120 --> 01:01:05,040 betri leið en bara að setja prenta f yfirlýsingar og littering þá alla í gegnum kóðann þinn. 801 01:01:05,040 --> 01:01:10,430 Having gdb til raunverulega prenta það fyrir þig og að vera fær um að setja þær Rofstaðir 802 01:01:10,430 --> 01:01:12,980 svo að forrit geta keyrt fram ákveðnum stað 803 01:01:12,980 --> 01:01:21,660 og þá leyfa þér að raunverulega stíga inn í það og reikna út vandamálið þar. 804 01:01:21,660 --> 01:01:29,600 >> Hægri. Svo ef við lítum til baka til Scramble, höfum við lesið dreifingu kóða. 805 01:01:29,600 --> 01:01:35,670 Við höfum talað um leið til iterate yfir 2D fylki, og þú munt örugglega 806 01:01:35,670 --> 01:01:40,910 vera ófullnægjandi til iterate yfir í 2D array þegar þú kemur til að teikna leikinn rist þinn. 807 01:01:40,910 --> 01:01:45,090 Við ræddum um útlit virka, um hvernig við viljum ganga úr skugga um nokkra hluti. 808 01:01:45,090 --> 01:01:48,300 Við viljum vera viss um að við höfum ekki verið að orði áður. 809 01:01:48,300 --> 01:01:51,220 Við viljum líka að ganga úr skugga um að það er í raun að finna í orðabókinni. 810 01:01:51,220 --> 01:01:54,220 Þá erum við að tala um Scramble, um hvernig við viljum að snúa borð. 811 01:01:54,220 --> 01:01:58,170 Og vita að þú might vilja til að gera afrit af eitthvað 812 01:01:58,170 --> 01:02:00,440 að vera fær um að færa það. 813 01:02:00,440 --> 01:02:03,250 Að lokum ræddum við um málið og næmi, um hvernig þú vilt ganga úr skugga um 814 01:02:03,250 --> 01:02:07,290 að þrátt fyrir allt sem samsetning ef að notandi inntak, 815 01:02:07,290 --> 01:02:10,170 ef það er gilt orð í orðabókinni, 816 01:02:10,170 --> 01:02:14,400 þá það er að fara að finna rétt. 817 01:02:14,400 --> 01:02:21,290 Svo allt sem saman er Scramble pset, og það er walkthrough 3. 818 01:02:21,290 --> 01:02:29,180 Takk allir fyrir að koma, og gangi þér vel með Scramble. 819 01:02:29,180 --> 01:02:32,180 CS50.TV