Menu
CoddyTech

Pascal's Triangle

במשולש פסקל, השורה הראשונה היא [1]. כל שורה אחריה ארוכה באיבר אחד, מתחילה ומסתיימת ב־1, וכל איבר שביניהן הוא סכום שני האיברים שמעליו ישירות. ניתן לך מספר שלם numRows. החזר את numRows השורות הראשונות של המשולש, כשהשורה העליונה מופיעה ראשונה, וכל שורה היא מערך של מספרים שלמים.

פונקציה

generate(numRows: integer) → integer-2d-array
numRowsinteger
כמה שורות לבנות במשולש
מחזירהinteger-2d-array
numRows השורות הראשונות, כשהשורה העליונה מופיעה ראשונה

אילוצים

  • 1 ≤ numRows ≤ 30
  • כל ערך ב-30 השורות הראשונות נכנס למספר שלם חתום בן 32 סיביות. הערך הגדול ביותר הוא 77558760, באמצע השורה ה-30.

דוגמאות

קלט
numRows = 5
פלט
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
הסבר
כל איבר פנימי מחבר את שני האיברים שמעליו. בשורה הרביעית, 3 = 1 + 2 וגם 3 = 2 + 1. בשורה החמישית, 4 = 1 + 3, 6 = 3 + 3 וגם 4 = 3 + 1.

lock icon+13 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

האם אפשר לבנות רק את השורה האחרונה במערך יחיד, לעדכן אותה במקום שורה אחר שורה במקום לשמור את השורות שמעליה? באיזה כיוון הלולאה הפנימית חייבת לרוץ, ולמה?

איפוס הקוד
def generate(numRows):
    # כתבו כאן את הקוד
מקרי בדיקה

מקרה 1

מקרה 2

קלט

numRows = 5

צפוי

[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]