ZAMYLA CHAN: มันเป็นฉัน, Zamyla วันนี้เรากำลังจะดำเนินการ มาริโอที่เราวาดมาริโอ ปิรามิดเต็มรูปแบบสำหรับเขาที่จะกระโดดข้าม Let 's ทำลายลง ย่อยงานสำหรับปัญหานี้ อันดับแรกเราต้องการที่จะแจ้งให้ผู้ใช้ สำหรับความสูงของปิรามิด และจากนั้นเราต้องการให้แน่ใจว่า ว่าการป้อนข้อมูลที่ถูกต้อง และจากนั้นเรากำลังจะไป ต้องการที่จะดึงปิรามิด ดังนั้นขอพูดคุยเกี่ยวกับการกระตุ้น และตรวจสอบผู้ใช้ป้อน มันอาจจะมีลักษณะดังนี้ นี้ห่วงทำในขณะที่ แจ้งให้ผู้ใช้สำหรับ จำนวนเต็มและหลังจากนั้นเพียงซ้ำ ถ้าจำนวนเต็มที่ไม่ถูกต้อง ดังนั้นสิ่งที่สภาพนี้ควรจะเป็นอย่างไร สำหรับเรื่องนี้ขอกลับไป ข้อกำหนด ดีสเป็คบอกเราว่าที่ถูกต้อง ความสูงเป็นไปได้ระหว่าง 0 และ 23 รวมทั้ง ดังนั้นแล้วนั่นหมายความว่าไม่ถูกต้อง ความสูงเป็นไปได้น้อยกว่า 0 หรือมากกว่า 23 ดังนั้นตอนนี้ที่เรามีข้อมูลเหล่านี้ ลองออกแบบเงื่อนไขของเรา แต่เราจำเป็นต้องระวัง เพราะตอนนี้เรามี สอง Booleans ว่าเราต้องการที่จะประเมิน นี่ฉันได้ให้คุณ กับตารางความจริง นี้ช่วยให้เราใช้เวลาสอง booleans บูลีนที่หนึ่งและสอง และเราสามารถประเมิน bool1 อย่างใดอย่างหนึ่ง และ bool2 หรือ bool1 หรือ bool2 ดังนั้นสิ่งที่แตกต่างกันคือ ระหว่างและหรือ? ดี bool1 และ bool2 จะ ประเมินให้เป็นจริงถ้าและเพียง ถ้าทั้งสอง Booleans เป็นจริง ในขณะที่หรือการดำเนินงาน จะเป็นจริงถ้าคนใดคนหนึ่ง Booleans หรือทั้งสองอย่างนี้เป็นจริง ดังนั้นด้วยนี้ในใจ ดูว่าคุณสามารถคิดออก สิ่งที่อยู่ในสภาพที่เหมาะสมสำหรับ คุณห่วงทำในขณะที่สำหรับ n ที่ไม่ถูกต้อง เป็นไปได้ กับที่เราได้รับแจ้งและตรวจสอบ การใช้งานสำหรับความสูงของปิรามิด ว่าพวกเขาต้องการ ดังนั้นตอนนี้มันขึ้นอยู่กับเรา การวาดปิรามิด ปิรามิดเต็มรูปแบบสำหรับการนี​​้ ปัญหาที่เกิดขึ้นจะมีลักษณะนิด ๆ หน่อย ๆ เช่นนี้ที่เรามีปิรามิดซ้าย ช่องว่างบางส่วนและจากนั้นปิรามิดที่เหมาะสม ดังนั้นขอทำลายลงนิด ๆ หน่อย ๆ ถ้าผมไปแก้ไขข้อความของฉันที่นี่ฉันได้ วาดเราพีระมิดจัดชิดซ้าย แต่ที่จะไม่ทำ สิ่งที่เราต้องการจะทำคือเราต้องการที่จะ สร้างปิรามิดจัดชิดขวาแรก ดังนั้นการทำเช่นนี้จะเป็นเพียงแค่ผลักดัน แฮชของฉันพร้อมไปด้านข้าง ฉันแค่ไปที่จะนำตัวละครบางตัว ในระหว่างเพียงจุดเหล่านี้ แล้วฉันจะใส่สองบน บรรทัดถัดไปและเป็นหนึ่งในบรรทัดที่ และเพื่อให้ที่นี่ฉันมี ปิรามิดจัดชิดขวา หลังจากนั้นผมกำลังจะไป กลับไปแถวบนสุด และใส่ในช่องว่างซึ่ง เป็นต่อข้อมูลจำเพาะสองช่องว่าง แล้วฉันจะกรอกข้อมูลลงใน ด้านอื่น ๆ ของปิรามิด ฉันจะไปแถวที่สองเขียน สองช่องว่างสำหรับช่องว่างและแล้วสอง แฮช กลับไปแถวที่สามสองช่องว่าง สำหรับช่องว่างและสาม hashes และในตอนท้ายสองช่องว่าง สำหรับช่องว่างและสี่ hashes ดังนั้นสิ่งที่เต็มรูปแบบ ปิรามิดจะมีลักษณะเช่น แน่นอนเราไม่ต้องการ จุดเหล่านี้ในวิธีการที่ ดังนั้นเราจะไปแทนที่เหล่านี้ จุดโดยการวางพื้นที่บางส่วนใน หนึ่งสองสามบรรทัดแรก หนึ่งสองที่สอง และหนึ่งในบรรทัดที่สาม ดังนั้นนี่คือสิ่งที่เราจะทำอย่างไรถ้าเรา อยากจะเพียงแค่ทำให้พีระมิดเต็มรูปแบบ กล่าวว่าในโปรแกรมแก้ไขข้อความของเรา ดังนั้นลองมานี้ การทำความเข้าใจรูปแบบที่ และแปลงมันไป pseudocode บาง สำหรับแถวของปิรามิดแต่ละที่เราต้องการ พิมพ์พีระมิดซ้ายแล้ว ช่องว่างแล้วพีระมิดขวา สำหรับพีระมิดซ้ายเราพิมพ์ จำนวนเงินที่จำเป็นของพื้นที่ ตามด้วยแฮช จากนั้นเราก็พิมพ์ช่องว่างซึ่ง เป็นเพียงสองช่องว่างทุกครั้ง และในปิรามิดที่เหมาะสมที่เราพิมพ์ จำนวนจำเป็นของแฮช สำหรับแถวที่สองเราดำเนินการ กระบวนการที่แน่นอนเดียวกัน เราพิมพ์ช่องว่างสำหรับทางด้านซ้าย พีระมิดจำนวนเงินที่จำเป็น ของแฮช, ช่องว่างสองช่องว่างและ แล้ว hashes สำหรับปิรามิดที่เหมาะสม ขอต่อสู้รูปแบบ สำหรับพีระมิดซ้าย ถ้าฉันมีเพื่อวัตถุประสงค์ ของตัวอย่างนี้มีความสูง แปดร้องขอจาก ผู้ใช้แล้วแถวแรกของฉัน จะมีหนึ่งกัญชาและเจ็ดช่องว่าง แถวที่สองของฉันจะได้ สอง hashes หกช่องว่าง แถวที่สามสาม hashes ห้าช่องว่าง คุณอาจจะสามารถทำเช่นนี้ ตัวเองสำหรับความสูงของแปด และกำหนดสำหรับแต่ละแถวหลายวิธี แฮชและวิธีการหลายพื้นที่ที่คุณต้องการ แต่สิ่งที่เราต้องการจะทำคือ เราต้องการที่จะนามธรรม ดังนั้นผมจึงขอให้คุณสำหรับแถวที่ n ใด ๆ หลายวิธี แฮชและวิธีการหลายพื้นที่เราจะต้อง? ตอนนี้เป็นคุณตรวจสอบ รูปแบบสำหรับ hashes หลายวิธี และวิธีการหลายพื้นที่ที่คุณต้องการสำหรับ แถวที่ n ใด ๆ สำหรับความสูงที่กำหนด จำจะต้องระมัดระวัง วิธีการที่คุณกำลังทำดัชนี สิ่งที่ผมหมายถึงนี้ก็คือว่าในชีวิตประจำวัน ชีวิตส่วนใหญ่ของเราเริ่มนับหนึ่ง ดังนั้นแถวแรกจะเป็นหมายเลขหนึ่ง และแถวที่สองจะเป็นแถว จำนวนสองอื่น ๆ และอื่น ๆ แต่ในวิทยาการคอมพิวเตอร์และ CS50 เราเป็นศูนย์การจัดทำดัชนี ดังนั้นเราจะเริ่มต้นนับที่ศูนย์ ดังนั้นแถวแรกจะ เป็นหมายเลขแถวศูนย์ และแถวที่สอง จะเป็นหมายเลขหนึ่งแถว ดังนั้นถ้าผมมีความสูงของแปดสำหรับ ปิรามิดของฉันแล้วค่าสุดท้ายของ n จริงจะเป็นเจ็ดและแปดไม่ ดังนั้นควรระมัดระวังเกี่ยวกับเรื่องนี้ และควรระวังเมื่อคุณกำหนด รูปแบบของคุณไม่ว่าจะเป็นศูนย์การจัดทำดัชนี หรือหนึ่งในการจัดทำดัชนี ตกลง. ดังนั้นขณะนี้ที่เรามี รูปแบบสำหรับพีระมิดซ้าย เราจำเป็นต้องตรวจสอบ รูปแบบสำหรับช่องว่าง โชคดีที่นี้เป็นเรื่องง่ายจริงๆ มันเป็นเพียงแค่เสมอสองช่องว่าง ดังนั้นตอนนี้เราดำเนินการรูปแบบที่เหมาะสม แถวแรกจะมีหนึ่งกัญชา แถวที่สองสอง แถวที่สามสาม ดังนั้น ๆ และอื่น ๆ ดังนั้นอีกครั้งสำหรับการตรวจสอบใด ๆ ที่เป็นนามธรรม n และความสูงใด ๆ วิธีการหลาย hashes และช่องว่างหลายวิธี แต่ละแถวควรจะมี ตกลง. ดังนั้นเรารู้ว่าเราแต่ละแถว ต้องดำเนินการขั้นตอนบางอย่าง เราจะทำอย่างนั้นได้อย่างไร? ดีที่เราใช้สำหรับวงสร้าง ประกอบด้วยการเริ่มต้นที่ สภาพและการปรับปรุง สำหรับลูปสามารถนำมาใช้ ที่จะทำซ้ำกระบวนการ เพื่อบอกว่าฉันต้องการให้ทักทาย โลกครั้งที่ 50 แล้วสำหรับวงของฉัน จะมีลักษณะบางอย่างเช่นนี้ที่ ฉันเริ่มต้นตัวแปรของฉันให้เป็นศูนย์ สภาพเป็นที่ฉันมีค่าน้อยกว่า 50 แล้วปรับปรุงก็คือว่ามัน การเพิ่มขึ้นโดยหนึ่งทุกครั้ง ดังนั้นสิ่งที่จะทำนี้จะ พิมพ์สวัสดีโลกครั้งที่ 50 ในแถว ตอนนี้บอกว่าผมอยากจะย้ำ มากกว่าความสูงของปิรามิด แล้วแทนการเข้ารหัสยาก ค่าบางอย่างอยู่ในสภาพที่ ฉันเพียงแค่ใช้ความสูงตัวแปร ดังนั้นสิ่งนี้จะทำคือการทำซ้ำ มากกว่าความสูงแต่ละแถว และผมสามารถทำบางสิ่งบางอย่างที่อยู่ภายใน ของร่างกายของวงว่า เราทำอะไรต้องการจะทำ ภายในร่างกายของวงหรือไม่ ดีที่สุดเท่าที่เราแสดงให้เห็นก่อนที่เราต้องการ พิมพ์ช่องว่างและแฮช สำหรับพีระมิดซ้ายและพิมพ์แล้ว สองช่องว่างแล้วพิมพ์ hashes ดังนั้นเราจึงได้คิดแล้วว่าออก ดังนั้นเราสามารถเริ่มต้นในการกรอกข้อมูล ในโปรแกรมของเรามากขึ้น นี่ฉันมีด้านนอกสำหรับห่วงว่า iterates เหนือแถวในปิรามิดทุก และภายในร่างกายที่ฉันจะ ช่องว่างที่จะพิมพ์ซ้ำแล้วซ้ำอีก hashes ซ้ำ ๆ แล้วช่องว่าง แล้ว hashes สำหรับปิรามิดที่เหมาะสม และแล้วในที่สุดใหม่ สายที่จะเริ่มต้นแถวถัดไป กับที่เราได้รับการแจ้งเตือน ผู้ใช้สำหรับการป้อนข้อมูล เราได้ทำให้แน่ใจว่ามันเป็นที่ถูกต้อง และจากนั้นเราได้วาดปิรามิด ดังนั้นมาริโอสามารถประสบความสำเร็จ ปีนปิรามิด ชื่อของฉันคือ Zamyla และนี่คือ CS50