ROB BOWDEN: Kaixo. Nago Rob, eta espero dut zure 15 joko jokoa. Orain, ez dira behar dituzun lau funtzio programa hau ezartzeko - init, marraztu, mugitzeko, eta irabazi. Beraz, dezagun init at. Hemen, lehenengo gauza garela ikusiko dugu joan egiten da aldagai bat izendatuko counter deitzen. Honez hasieratu egingo ken d aldiz d 1era. Gogoratu d dimentsioa dela gure taula. Nola init da lanera joan da joan taula osoa zehar batetik bestera joateko eta ari gara hasteko goiko ezkerreko. Eta utzi, besterik gabe esan dugu 4 eta 4 taula bat. Beraz goian utzi gara esan du 15 da. Eta gero ari gara zenbatu joan oholak bitartez, esanez, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, eta abar. Beraz, goiko ezkerreko, d aldiz izatea espero dugu d ken 1, 4 parte horietatik 4 by kasuan 16 ken izango da 1, eta 15 da behar bezala. Eta orain hemen non goaz taula osoa zehar batetik bestera joateko. Eta ari gara posizio bakoitzean ezartzeko joan egungo balioa taula Gure counter, eta gero kontraerasoan va ra decrement, beraz, hurrengo posizio iritsiko gara da behar joan kontagailu baino bat gutxiago aurreko posizioa. Beraz, hasieran izan genuen 15 eta decrement kontraerasoan. Beraz, ondoren ari gara 14 esleitu joan hurrengo posizioa, decrement counter, eta esleitutako goaz 13, eta abar. Azkenik, ertz horiek kudeatzeko behar dugu Kasu non, taula bat ere badauka dimentsioa, orduan besterik egiten 15, 14, 13, 12, modu guztiak 3 behera, 2, 1, da guri utzi batera joan unsolvable taula bat. Eta 1 eta 2 aldaketa bat behar dugu. Beraz, d mod 2 funtzioak 0 itzultzen bada, hori da nola ari gara, egiaztatu egingo are gehiago, bada ikusteko. D mod 2 berdinen bada 0, orduan ilara d minus in 1, eta horrek beheko errenkadan, eta d posizio d ken 2, edo zutabe ken 2, esaten ari gara ezartzeko 2 joan, eta Zutabe d ken 3 gaude Eta 1 'ezarrita joan. Beraz, hori besterik ez alderantzizkoa non 1 eta 2 egun bizi duten. Azkenik, oso ezarri goaz beheko eskuineko hutsik berdina, non hutsik izan hash zehaztutako top 0 gisa hartan. Beraz, hori ez zen erabat beharrezkoa, geroztik hau loop da behar joan behean 0 eskubidea, geroztik ezarri counter naturalean helduko 0. Baina gutako oinarritzen jakitea hutsik hashed zen 0 bat aurkitzeko. Joan nintzen, bada, programa honetan sartu eta geroago goialdean hutsik aldatu 100 dutenean, baina oraindik ere lan egin behar. Beraz, hau da, besterik gabe, ziurtatu egiten du beheko eskuineko da, benetan berdina gure balioa hutsik. Azkenik, bi aldagai global dugu, beraz, hutsik i eta j hutsik, eta ikusiko dugu goialdean deklaratu dutenak. Eta ari gara bi global horiek erabili joan aldagai segimendua egiteko hutsik posizioa, beraz, ez dugu ra bidez osoa begiratu behar taula hutsik bakoitza aurkitzeko denbora mugimendu bat egiten saiatzen gara. Beraz, hutsik posizioa beti da hemen beheko eskuineko etan hasiko dugu. Beraz beheko eskuineko da emandako indizeek d ken 1, d ken 1. Beraz, hori init da. Orain mugitzen dugu marrazteko. Beraz, zozketa da antzekoa izango da non ari gara batetik bestera joateko joan taula osoa zehar. Eta besterik balioa inprimatu nahi dugu duten taula posizio bakoitzean da. Beraz, hemen, balioa hori da inprimatzeko ari gara batzordeko posizio bakoitzean. Eta konturatu egiten ari garen hori -. Eta hori besterik ez printf kontatzea one digitu bat edo ez bada kontuan hartu gabe bi digitu zenbakia, oraindik ere nahi dugu horri hartzen dute bi zutabe inprimatu daudelarik, beraz, ez dugu bi digitu eta bat bada digitua taula berean zenbakiak, gure taula oraindik ere itxura izango polita eta karratu. Beraz, ez da egin behar, balio bakoitzerako nahi dugu taula batean, hutsik izan ezik. Beraz, taula posizioa berdin bada hutsik, eta gero berariaz dugun besterik azpimarraz inprimatu nahi hutsik adierazteko, ordez edozein dela ere-balioa hutsik benetan da. Azkenik, inprimatu nahi dugu lerro berri bat. Iragarki hori da, oraindik ere barrutik loop kanpoaldeko, baina kanpotik loop barne. Geroztik kanpoaldeko hau loop errepikatzean da errenkadetan osoan zehar, eta beraz printf hau da linea berri bat besterik ez inprimatu, beraz, egingo dugu mugitu hurrengo errenkadan inprimatu. Eta hori da zozketa egiteko. Beraz, gaur egun dezagun aurrera eraman. Orain, mugitu pasatzen dugu, fitxa hori Erabiltzaileak dago jokoan sartu - dute sartu mugitu nahi dute fitxa - eta zauden ustezko bool bat itzultzeko, beraz, bai egia edo gezurra, arabera mugimendua izan zen benetan ala ez baliozko - ala fitxa hori izan daiteke espazio hutsik eraman. Beraz, hemen, tokiko aldagai bat aldarrikatzen dugu, tile_1 eta tile_j, diren joan blank_i eta blank_j antzekoa izango, ezik nik segimendua joan teila posizioa. Orain hemen, blank_i erabili goaz eta blank_j eta guztiak ondo esan, beraz, hemen taula gainean hutsik egin. Orain, hutsik gainetik fitxa da? Hutsik ezkerraldeko fitxa da? Hutsik eskuinean dagoen fitxa da? Hutsik beheko fitxa da? Beraz, fitxa horietako edozein bada posizioak, gero badakigu fitxa be hutsik spot eraman dezake eta hutsik utzi behar da mugi daitezke bertan Une teila da. Beraz, hemen, esango dugu bada posizioan taula blank_i ken 1 blank_j. Beraz, hau da esaten fitxa da egungo hutsik gainetik? Eta hala bada, gogoratzen goaz duten baldosa posizioa da. Fitxa posizio blank_i da ken 1 eta blank_j. orain, lehen, ere check hau dugu hementxe, beraz blank_i da 0 baino handiagoa. Zergatik ez da egin nahi dugu? Beno, hutsik goiko errenkadan, ez bada taula, ondoren, ez dugu nahi fitxa hutsik geroztik gainetik begiratu ez dago ezer goiko gainetik dago taula ilara. Hau da, nola amaituko dezakezu lortzean segmentaziuo hutsegitea edo antzeko zerbait Zure programa agian besterik lan modu espero. Beraz, hau da, ziur ez dugula egiten baliogabeak lekuetan begiratuz. Orain ari gara gauza bera egin zuen joan posible beste konbinazio guztiak. Beraz, hemen, gaude hutsik beheko bilatzen dugu duten fitxa bat bada ikusteko. Eta, gainera, ez dugu ziur gaude egiteko Ez beheko ilaran, edo bestela dugu ez luke fitxa bat aurkitu. Hemen, ezkerrean dagoen begiratu goaz fitxa bada ikusteko hutsik egin. Eta guk behar ez ezkerrera begiratu Oraindik dugu bada zutabe ezkerreko in. Eta hemen ari gara hemen begiratzen joan eskuinaldetik zuriz du, eta ez behar dugu eskuinera begiratu Oraindik badugu fitxaren eskuinaldeko zutabean. Beraz, gauza horiek ere ez ziren egia bada, horrek esan nahi du fitxa ez zen aldameneko hutsik eta faltsua itzuli ahal izango dugu. Mugimendua ez da zuzena. Baina, horietako bat egia balitz, orduan at Puntu honetan, tile_i dela badakigu eta tile_j berdina dira teila posizioa. Eta, beraz, taula eguneratu ahal izango dugu at posizioak tile_i eta tile_j. Ezagutzen dugun balio berria hutsik izango da eta posizio blank_i du blank_j, zein jatorrizkoa zen blank - badakigu fitxa da, joan mugitu han. Nabarituko Egia esan, ez dugu egin bat benetako swap hemen, badakigu geroztik txertatuko behar duten baloreak posizio horiek sartu. Ez dugu behar aldi baterako aldagai inguruan. Azkenik, dugula gogoratu behar dugu daudela gure aldagai global izan posizioa jarraipena blank du. Beraz, posizioa eguneratu nahi dugu hutsik non fitxa izateko jatorriz izan zen. Azkenik, egia itzuliko gara geroztik mugimendua arrakastatsua izan zen. Arrakastaz trukatu dugu fitxa batera hutsik. Ondo da, beraz, azkena dugu irabazi egiaztatu behar. Beraz, irabazi antzera boolearra itzultzen du non Egia da adierazi egingo duen Erabiltzaileak jokoa irabazi du. Eta faltsua adierazten duten Jokoan, oraindik ere egingo. Erabiltzaileak ez du irabazi. Beraz, hau da, nahiko askoz izango da init kontrakoa, non init, gogoratu, taula hasieratu dugu 15, 14, 13, 12, abar. Irabazi zuen, berriz, begiratu nahi dugu bada taula 1, 2, 3, 4, 5, eta abar da. Beraz, hasieratu goaz gure 1 kontraerasoan geroztik hori da goian taula ezkerrean izan behar du. Eta gero ari gara begizta joan taula osoa zehar. Dezagun ahaztu egoera honen bigarren bat. Eta baldintza hori besterik ez da joan txeke posizio honetan taula da egungo zenbatzen berdina? Hala bada, Kontatzailea zenbaketa horrela hurrengo posizio begiratzen dugu bat altuagoa posizioa batzuk Hemen dugu oraintxe baino. Beraz, nola lortuko dugu Goiko ezkerreko 1 izan behar du. Aldaketa Kontatzailea 2. Begiratu hurrengo posizioan. Hau da 2? Hala bada, Kontatzailea Aldaketa 3. Hurrengo posizioa, da 3 hau? Hala bada, Kontatzailea zenbaketa 4, eta abar. Beraz, bada ez da posizioa edozein da horrek ez du gure kopuruan berdinak taula, Orduz geroztik faltsua itzuli nahi dugu esan nahi du ez dela teila batzuk Ez posizio egokian jartzea. Beraz, hemen, zer egiten ari da egoera hau? Beno, gogoratu hutsik dagoela hemen beheko eskuineko joan ustezko. Eta hutsik balio Mightn'ten balioari nahitaez berdinak hori iritsi egingo kontraerasoan behean eskuinean. Beraz, zehazki begiratu nahi badugu i berdinen d ken 1 eta j berdin berdin berdinen d ken 1 - zein da esaten badugu dira behean eskuinean begira taula - orduan besterik ez dugu Jarraitu nahi. Bereziki hau albo batera utzi nahi dugu begizta egiteko iterazio. Eta, beraz, honen bidez lortu kudeatzeko badugu loop habiaratu, horrek esan nahi du ez zegoen teila no horretan zegoen okerreko posizioan. Eta begizta hautsi dugu, eta etorri Hemen, non egia itzuli ahal izango dugu. Teila guztiak posizio egokian ziren eta horrek esan nahi du erabiltzaileak ditu jokoa irabazi. Eta hori da. Nire izena Rob Bowden da, eta hau 15 zen.