حل تمرین وسیله کمک آموزشی کوئرا با پایتون
در این نوشته به روش حل یکی از سوالات پیاده سازی برنامه نویسی وبسایت کوئرا میپردازیم.
حل تمرین وسیله کمک آموزشی کوئرا با پایتون
کاراکتر اصلی 1 دوست دارد دانش آموزانش (که آنها را با نام کاراکترهای کمکی میشناسیم) را به درس هندسه علاقهمند کند به همین خاطر از وسیلهای کمک آموزشی استفاده میکند که یک صفحه با n لامپ است که لامپها با شمارههای 1 تا n شمارهگذاری شدهاند و همچنین در زیر صفحه هم n کلید با شمارههای 1 تا n برای روشن کردن لامپها وجود دارد. هریک از لامپها به یک کلید در زیر صفحه وصل هستند. به علت مشغلهی زیاد، کاراکتر اصلی 1 فرصت نکرده است هر لامپ را به کلید همشمارهاش وصل بکند و به صورت تصادفی هر لامپ را به یک کلید وصل کرده است، به طوری که هیچ کلیدی از کلید زیر صفحه نیست که لامپی به آن متصل نشود. پس از زنگ تفریح وقتی کاراکتر اصلی 1 به کلاس بر میگردد میبیند بعضی لامپها روشن و بعضی دیگر خاموشاند، اما به دلیل این که هر کلید امکان دارد به لامپی که همشمارهاش نیست، متصل است، کار برای کاراکتر اصلی 1 سخت است، چون او میخواهد قبل از جمع کردن وسیله آموزشی لامپهایش را خاموش کند تا باتری آن بیهوده هدر نرود. باتوجه به وضعیت فعلی لامپها و اینکه هر کلید کدام لامپ را روشن میکند، در خروجی شمارهی کلیدهایی که باید بزنیم تا همهی لامپها خاموش شوند را چاپ کنید.
ورودی
در خط اول ورودی عدد طبیعی n داده میشود. در خط دوم ورودی n عدد طبیعی میآیند که iامین آنها شمارهی کلیدی است که به لامپ iام متصل است. و در خط آخر ورودی n عدد از مجموعهی 0,1 میآیند که iامین عدد نشاندهندهی خاموش یا روشن بودن لامپ iام است. اگر عدد iام 0 شود یعنی لامپ ام خاموش و در صورتی که عدد iام 1 شود، لامپ iام روشن است.
خروجی
در یک خط شماره کلیدهایی را چاپ کنید که اگر آنها را یک بار بفشاریم وضعیت همهی لامپها در انتها خاموش شود. دقت کنید ترتیب خروجی دادن شماره کلیدها باید صعودی شود. (یعنی اگر کلیدهایی که فشردن آنها حالت مطلوب را میسازد پیدا کنید اما بصورت صعودی چاپشان نکنید نمرهی سوال را نمیگیرید.)
مثال
ورودی نمونه 1
10 3 6 1 2 10 4 5 9 8 7 0 0 0 1 1 1 1 1 1 1
خروجی نمونه 1
2 4 5 7 8 9 10
در مثال دادهشده لامپهای 4 تا 10 روشناند و باید آنها را خاموش کنیم، پس نیاز است کلیدهای 2 10 4 5 9 8 7 را فشار دهیم. اما در صورت سوال گفته شده که بایستی کلیدها باترتیب صعودی چاپ شوند، پس بجای 2 10 4 5 9 8 7 در خروجی 2 4 5 7 8 9 10 را چاپ میکنیم.
کد پایتون سوال تمرین وسیله کمک آموزشی
n = int(input()) key_to_lamp = list(map(int, input().split())) lamp_states = list(map(int, input().split())) buttons_to_press = [] for i in range(n): if lamp_states[i] == 1: buttons_to_press.append(key_to_lamp[i]) buttons_to_press.sort() print(" ".join(map(str, buttons_to_press)))
منبع سوال: کوئرا
اگر نیاز به حل تمرینهای دیگری از کوئرا دارید در بخش نظرات همین نوشته برای ما بنویسید.
ارسال پاسخ