>> [Music kucheza]
>> Rob BOWDEN: Ni mimi, Rob.
Hebu kutembea kwa njia ya jinsi ya kutekeleza Mario.
Hivyo jambo la kwanza tunahitaji kufanya ni haraka user ajili ya pembejeo.
>> Tunahitaji kuwauliza ni jinsi gani mrefu piramidi lazima.
Hivyo hapa, tunaona sisi ni kufanya urefu = GetInt.
Na kukumbuka kwamba kazi GetInt unatekelezwa katika CS50
maktaba, hivyo juu juu, tunahitaji kumbuka # ni pamoja na cs50.h.
>> Hivyo kwa nini tuna hii amefungwa katika do-kitanzi wakati?
Naam, sisi pia haja ya kukumbuka kuwa pembejeo mtumiaji ina kuwa halali.
Ni pembejeo batili nini?
Vizuri pset spec hasa anasema kwamba urefu chini ya 0 au zaidi
zaidi ya 23 ni batili.
>> Hivyo hapa, tunaona kwamba sisi ni kufafanua mara kwa mara aitwaye MAX_HEIGHT na
thamani ya 23.
Hii kitanzi do-wakati itaendelea wakati urefu ni chini ya 0 au MAX_HEIGHT ni
chini ya urefu, ambayo ina maana kwamba 23 ni chini ya urefu.
Hivyo kama urefu ni 24 au zaidi, sisi ni kwenda kuendelea wanaoendesha.
Kumbuka kwamba kufanya-wakati tanzi ni pretty kusaidia wakati wowote tunataka kupata
user pembejeo na kisha kuhalalisha yake, tangu sisi inevitably haja ya kuuliza user katika
angalau mara moja kwa thamani wanataka.
>> Hivyo mara tuna mchango wao, sisi sasa wanaweza kujenga piramidi.
Moja ya mbinu ya tatizo hili kuweka ni kwamba tuna kuanza saa juu ya
piramidi.
Huwezi printf chini ya piramidi na kisha kujenga njia yako juu.
Basi hebu tuangalie mfano kutoka pset spec.
>> Tunaona hapa kwamba wakati sisi kuingia urefu ya 8, chini kabisa ya
piramidi Prints hashes tisa.
Moja ngazi ya juu na kwamba prints nafasi moja na hashes nane.
Moja ngazi ya juu na kwamba ni nafasi mbili na hashes saba, njia yote mpaka sisi
kupata juu ya piramidi, ambayo ni ngazi nane up, ambayo Prints saba
nafasi na hashes mbili.
Basi kumbuka kwamba tuna kufanya ngazi hii ya juu kwanza.
>> Hapa sisi ni iterating kutoka ngazi ya juu, safu ya 8, kuendelea
mpaka mstari fika 0.
Nafasi Hivyo ni jinsi wengi hawakuwa tunahitaji magazeti katika mstari kwamba juu?
Sisi kuchapishwa nafasi saba na hashes mbili.
Hivyo idadi ya nafasi tunataka ni mstari waliokuwa juu ya minus 1.
>> Kama safu ya juu ni 8, 8 minus 1 inatupa nafasi saba.
Basi tuna kitanzi kwamba magazeti nje kila mmoja nafasi ya wakati huo.
Hivyo wakati nafasi ni 7, kitanzi hii mara saba, uchapishaji
saba nafasi ya mtu binafsi.
>> Hivyo sasa tunahitaji magazeti hashes haya mwishoni mwa piramidi.
Hivyo hapa, tunahitaji mahesabu ya idadi ya hashes.
Tunaona kwamba sisi ni kufanya urefu minus mstari plus 2.
Hivyo ni jinsi gani sisi kupata kwamba?
>> Kumbuka kwamba juu ya piramidi ni mstari 8, na urefu ni 8.
Na sisi bado kuchapishwa hashes mbili.
Basi angalau sana, 8 minus 8 pamoja na 2 inatupa jibu sahihi.
Na kisha kufikiria chini ya piramidi, mstari 1.
Mstari urefu minus kutupa 7, na kisha plus 2 inatupa hashes tisa,
ambayo ni hasa idadi ya hashes kwamba sisi kuchapishwa.
Hivyo hii ni formula tunataka kutumia hesabu
hashes katika kila mstari.
>> Kutumia idadi hiyo, sisi kisha na mwingine kwa kitanzi, sawa na
kwa kitanzi kwamba sisi kutumika kwa ajili ya maeneo, kwamba iterates idadi ya hashes mara
uchapishaji hash moja kila wakati.
On mstari wa juu, kwamba utakuwa magazeti hashes mbili.
Juu ya mstari wa chini, kwamba utakuwa magazeti hashes tisa.
Na kila mstari wengine magazeti kila idadi ya hashes katika kati ya.
>> Na kisha mwishoni sana, tunahitaji magazeti line wetu mpya kwenda ijayo
mstari katika piramidi.
Hatimaye, tunahitaji magazeti line mpya mwishoni mwa mfululizo ili uweze
kuendelea ijayo mstari wa piramidi.
Na mwisho wa mpango wetu, sisi kuwa na kurudi 0.
>> Kama kwa pset spec, kurudi 0 si madhubuti muhimu.
Lakini haina yanamaanisha kwamba kuu ni kosa.
Jina langu ni Rob, na hii ilikuwa Mario.
>> [Music kucheza]