פתרון לFull Adder
מה רוצים בתרגיל
קולטים בסיס(כמות מספרים כמו 01 בבינארי או 0-15 בהקסה) ואת המספרים של הבסיס.
מקבלים תרגיל חיבור המבוסס על הבסיס שקיבלנו ואנחנו צריכים לחשב את התשובה
איך פותרים
ראשית ניתן ערך לכל איבר בבסיס שקיבלנו מתחיל ב-0 ונגמר בגודל הבסיס פחות 1 ונשים את זה בdictionary ונוסיף אליו רווח שגם שווה ל-0(כדי להיפטר מהרווחים בתחילת התרגיל).
nums = {}
for i in range(base):
nums[num[i]] = i
nums[" "] = 0
כעת נפתור את התרגיל כמו פתרון של חיבור רגיל(נתחבר את האיבר הימני(האחדות) של המספר הראשון עם האיבר הימני(האחדות) של המספר השני וכן הלאה).
ברגע שסכום של שני האיברים גדול מהבסיס,נשמור בדגל ערך 1 ונכניס לסכום את הסכום שקיבלנו פחות הבסיס.
בסוף נשרשר הכל לתוך מחרוזת באמצעות מערך num שממיר ערך לתו וזאת תהיה התשובה
for i in range(len(print1)-1,0,-1):
sum = 0
sum += nums[print1[i]]+nums[print2[i]] + flag
if sum >= base:
flag = 1
sum = sum-base
else:
flag = 0
sumall += num[sum]
נרוץ על האורך של print1 מכיוון שהאורכים של print1 וprint2 שווים בגלל ששאר התווים ביניהם רווחים.