רקורסיה בפייתון
עזרה הדדית - Python
2
פוסטים
2
כותבים
110
צפיות
2
עוקבים
-
אני מתעסק כבר די הרבה זמן עם פייתון בלימוד עצמי, ורק לאחרונה נודע לי על המושג רקורסיה ועל הגאונות הטמונה בו.
מצאתי את התרגיל הבא (קרדיט)
וזה הפתרון - הרקורסיה הראשונה שלי....
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)
אשמח לשמוע את דעת המומחים...
ידידנו @פייתוניסט המומחה, איך אתה היית פותר את זה?@איסתרק-השלישי כן לדעתי זו הדרך האולטימטיבית לפתרון הבעיה