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

וזה הפתרון - הרקורסיה הראשונה שלי....
def change(mtr, index, item, sign): try: x = mtr[index][item] except: return if index >= 0 and item >= 0: if x == '#': mtr[index][item] = sign change(mtr, index - 1, item, sign) change(mtr, index + 1, item, sign) change(mtr, index, item - 1, sign) change(mtr, index, item + 1, sign) def main(mtr): t = -1 sign_list = [i for i in 'abcdefghijklmnopqrstuvwyz'] for index in range(len(mtr)): for item in range(len(mtr[index])): if mtr[index][item] == '#': t += 1 sign = sign_list[t] change(mtr, index, item, sign) for i in mtr: print(' '.join(i)) mtr = [ ['.', '.', '.', '#'], ['#', '#', '.', '.'], ['.', '.', '#', '.'], ['#', '.', '.', '#'], ['#', '#', '.', '#'], ['.', '.', '#', '#'], ['#', '.', '.', '.'], ['.', '.', '.', '#'], ['#', '#', '.', '.'], ['.', '.', '#', '.'], ['#', '.', '.', '#'], ['#', '#', '.', '#'], ['.', '.', '#', '#'], ['#', '.', '.', '.'] ] if __name__ == '__main__': main(mtr)אשמח לשמוע את דעת המומחים...
ידידנו @פייתוניסט המומחה, איך אתה היית פותר את זה? -
אני מתעסק כבר די הרבה זמן עם פייתון בלימוד עצמי, ורק לאחרונה נודע לי על המושג רקורסיה ועל הגאונות הטמונה בו.
מצאתי את התרגיל הבא (קרדיט)

וזה הפתרון - הרקורסיה הראשונה שלי....
def change(mtr, index, item, sign): try: x = mtr[index][item] except: return if index >= 0 and item >= 0: if x == '#': mtr[index][item] = sign change(mtr, index - 1, item, sign) change(mtr, index + 1, item, sign) change(mtr, index, item - 1, sign) change(mtr, index, item + 1, sign) def main(mtr): t = -1 sign_list = [i for i in 'abcdefghijklmnopqrstuvwyz'] for index in range(len(mtr)): for item in range(len(mtr[index])): if mtr[index][item] == '#': t += 1 sign = sign_list[t] change(mtr, index, item, sign) for i in mtr: print(' '.join(i)) mtr = [ ['.', '.', '.', '#'], ['#', '#', '.', '.'], ['.', '.', '#', '.'], ['#', '.', '.', '#'], ['#', '#', '.', '#'], ['.', '.', '#', '#'], ['#', '.', '.', '.'], ['.', '.', '.', '#'], ['#', '#', '.', '.'], ['.', '.', '#', '.'], ['#', '.', '.', '#'], ['#', '#', '.', '#'], ['.', '.', '#', '#'], ['#', '.', '.', '.'] ] if __name__ == '__main__': main(mtr)אשמח לשמוע את דעת המומחים...
ידידנו @פייתוניסט המומחה, איך אתה היית פותר את זה?@איסתרק-השלישי כן לדעתי זו הדרך האולטימטיבית לפתרון הבעיה
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות