حل تمرین جمع چند لایه کوئرا با پایتون
در این نوشته به روش حل یکی از سوالات مبانی برنامه نویسی وبسایت کوئرا میپردازیم.
حل تمرین جمع چند لایه کوئرا با پایتون
مجموعههای معمولی که در این سوال به آنها مجموعههای یک لایه میگوییم، مجموعههایی هستند که اعضای آنها فقط عدد هستند. در این سوال با مجموعههای چندلایه سر و کار داریم که اعضای آن علاوه بر عدد میتواند مجموعهی دیگری هم بوده که ممکن است در دل آنها نیز مجموعه دیگری شود. به بیان دیگر یک محموعه چند لایه مجموعهای است که اعضای آن میتوانند عدد و یا یک مجموعه چند لایه دیگر شوند و یک مجموعه یک لایه مجموعه ایست که اعضای آن فقط عدد هستند و عضو مجموعه ندارد. (هر مجموعه یک لایه، مجموعه چند لایه هم هست اما هر مجموعه چند لایه مجموعه یک لایه نیست.) برای جمع یک مجموعه چندلایه به ازای هر مجموعه چندلایه عضو آن، حاصل جمع آن مجموعه چند لایه را قرار میدهیم و این عددها را با سایر اعداد عضو مجموعه جمع میکنیم. به عنوان ورودی یک مجموعه چندلایه داده میشود. میخواهیم جمع اعضای مجموعه و البته جمع همه اعضای مجموعههای تو در تو آن را به دست آوریم. برای جمع یک مجموعه به این صورت عمل میکنیم که اگر همه اعضای آن عدد بودند، جمع آن عددها را چاپ میکنیم. در غیر این صورت ابتدا این کار را برای همه مجموعه های درون آن (به ترتیب قرار گرفتنشان از سمت چپ به راست) انجام میدهیم و وقتی جمع همه مجموعههای درونش را به دست آوردیم و چاپ کردیم، آنها را با هم و همچنین سایر اعداد عضو مجموعه جمع میکنیم. برای هر مجموعهای که دیده میشود. میتوانید فرض کنید مجموعه تهی نداریم و اعداد همه نامنفی هستند.
ورودی
در یک خط یک مجموعه چند لایه به شما داده میشود. طول رشته ورودی کمتر از 100 است.
خروجی
مطلوب مسئله (حاصل جمعها) را در خطهای جدا چاپ کنید.
مثال
ورودی نمونه 1
{1, 2, {3, {4, 5, {6}}, 7}, 8}
خروجی نمونه 1
6 15 25 36
ورودی نمونه 2
{{12, 23, {4, 0, {1}, {1}}}, 0, {1}}
خروجی نمونه 2
1 1 6 41 1 42
ورودی نمونه 3
{1, {2, {{6}}}, {{{7}}}}
خروجی نمونه 3
6 6 8 7 7 7 16
کد پایتون سوال تمرین جمع چندلایه
def process_nested_set(s): stack = [] current_sum = 0 number = '' for char in s: if char == '{': stack.append(current_sum) current_sum = 0 elif char == '}': if number: current_sum += int(number) number = '' print(current_sum) if stack: current_sum += stack.pop() elif char.isdigit(): number += char elif char == ',': if number: current_sum += int(number) number = '' return input_string = input().strip() process_nested_set(input_string)
منبع سوال: کوئرا
اگر نیاز به حل تمرینهای دیگری از کوئرا دارید در بخش نظرات همین نوشته برای ما بنویسید.
ارسال پاسخ