שלום אורח התחבר

שאלות מראיונות עבודה: משולש כוכבים

נושאים:יומי

את השאלה הזאת נתתי בתרגיל באחד הקורסים והפתיע אותי לגלות שיותר אנשים מסתבכים איתה ממה שחשבתי שיקרה. בואו נראה את השאלה, כמה כיוונים לא נכונים ואז את הכיוון הנכון.

1ציור משולש מכוכבים

כתבו תוכנית Python שמקבלת כקלט מספר שורות ומציירת משולש של כוכבים המיושר לאמצע וגובהו לפי מספר השורות שהתקבל. לדוגמא אם מספר השורות הוא 5 נרצה לקבל את המשולש הבא:

    *
   ***
  *****
 ******* 
*********

2איך לחשוב על השאלה

הגישה המסורבלת לגשת לשאלה הזאת היא לנסות לחשוב כמה רווח צריך להשאיר בתחילת כל שורה, ואז כמה כוכבים צריך לצייר באותה שורה. גישה כזאת אומרת שבשביל לצייר שורה נשתמש בשתי לולאות: הראשונה לציור הרווחים והשניה לציור הכוכבים עצמם.

גישה יותר טובה היא לחשוב על התבנית כמו מלבן שחלק מהמשבצות בו צבועות בכוכבים ומשבצות אחרות נשארות ריקות. בגישה זו אנחנו רק צריכים לשאול עבור כל משבצת - בהינתן אינדקס (i,j) מסוים, האם המשבצת צריכה להיות מלאה או ריקה. על השאלה הזאת הרבה יותר קל לענות: אם המשבצת רחוקה מדי מהאמצע היא תהיה ריקה, ואם היא קרובה מספיק לאמצע נצייר בה כוכבית.

3פיתרון בשפת Python

בהנחה שהמשתנה i מייצג את מספר השורה ו j את מספר העמודה, התנאי שלנו יראה כך:

if abs(j - middle) <= i:

כלומר בכל שורה אנחנו רוצים לצבוע רק ה i משבצות שהכי קרובות לאמצע.

והתוכנית המלאה בפייתון:

import sys

rows = int(sys.argv[1])
cols = (2 * rows) - 1
middle = int(cols / 2)

for i in range(rows):
    for j in range(cols):
        if abs(j - middle) <= i:
            print("*", end="")
        else:
            print(" ", end="")
    print()

מעדיפים לקרוא מהטלגרם? בקרו אותנו ב:@tocodeil

או הזינו את כתובת המייל וקבלו את הפוסט היומי בכל בוקר אליכם לתיבה:


נהניתם מהפוסט? מוזמנים לשתף ולהגיב