آسونِ سخت
به شما یک آرایه از اعداد صحیح داده میشود. در این آرایه، ما به یک عدد کوئرایی میگوییم اگر دو شرط زیر به طور همزمان برقرار باشند:
- شرط اول (بخشپذیری بر ۶): خود عدد بر ۶ بخشپذیر باشد.
- شرط دوم (بخشپذیری اندیس بر ۶): شمارهی جایگاه (اندیس) آن عدد در آرایه بر ۶ بخشپذیر باشد. توجه: اندیس اولین عنصر آرایه ۱ در نظر گرفته میشود.
برنامهای بنویسید که با دریافت یک آرایه از اعداد، تمام اعداد کوئرایی موجود در آن را پیدا کرده و به ترتیب صعودی در خروجی چاپ کند.
- کد شما باید حداکثر یک خط باشد.
- استفاده از کاراکتر
;یا تابعexecمجاز نیست.
💡 راهنمایی ۱: دسترسی به عناصر با اندیسهای بخشپذیر بر ۶
برای دسترسی به عناصر یک لیست که اندیس آنها بر ۶ بخشپذیر است (با شروع اندیس از ۱)، میتوانید از برش آرایه (slicing) با گام ۶ استفاده کنید:
numbers = list(map(int, input().split()))
elements_at_indices_divisible_by_6 = numbers[5::6] # اندیس ۵ = جایگاه ۶
💡 راهنمایی ۲: فیلتر کردن اعداد
برای فیلتر کردن اعداد بر اساس شرط بخشپذیری بر ۶، از List Comprehension استفاده کنید:
multiples_of_6 = [x for x in numbers if x % 6 == 0]
📥 ورودی
ورودی برنامه شامل یک خط است که در آن تعدادی عدد صحیح با فاصله از هم جدا شدهاند. این اعداد، عناصر آرایهی ورودی را تشکیل میدهند.
تعداد اعضای آرایه کمتر از 200 خواهد بود.
📤 خروجی
- برنامه باید در یک خط، اعداد کوئرایی موجود در آرایه را به ترتیب صعودی چاپ کند.
- بین هر عدد در خروجی باید دقیقاً یک فاصله باشد.
- اگر هیچ عدد کوئراییای وجود نداشته باشد، برنامه باید یک خط خالی چاپ کند.
🎯 نمونه
ورودی ۱
1 2 3 4 5 6 7 8 9 10 11 12
خروجی ۱
6 12
عدد ۶ در جایگاه ۶ (اندیس ۵) قرار دارد و هم خودش و هم جایگاهش بر ۶ بخشپذیر هستند. عدد ۱۲ در جایگاه ۱۲ (اندیس ۱۱) قرار دارد و هم خودش و هم جایگاهش بر ۶ بخشپذیر هستند.
ورودی ۲
3 4 1 37 21 18 23 25 27 22 43 26
خروجی ۲
18
عدد ۱۸ در جایگاه ۶ (اندیس ۵) قرار دارد و هم خودش و هم جایگاهش بر ۶ بخشپذیر هستند.
ورودی ۳
6 12 8 9 1 18
خروجی ۳
18
عدد ۱۸ در جایگاه ۶ (اندیس ۵) قرار دارد و هم خودش و هم جایگاهش بر ۶ بخشپذیر هستند. عدد ۶ در جایگاه ۱ (اندیس ۰) قرار دارد که جایگاهش بر ۶ بخشپذیر نیست. عدد ۱۲ هم در جایگاه ۲ (اندیس ۱) قرار دارد که جایگاهش بر ۶ بخشپذیر نیست.
💡 راهحل یکخطی
print(*sorted([x for i, x in enumerate(map(int, input().split()), 1) if i % 6 == 0 and x % 6 == 0]))
input().split()← دریافت ورودی و تبدیل به لیست رشتههاmap(int, ...)← تبدیل رشتهها به عدد صحیحenumerate(..., 1)← پیمایش با اندیس شروع از ۱if i % 6 == 0 and x % 6 == 0← هر دو شرطsorted()← مرتبسازی صعودی*← unpack کردن برای چاپ با فاصله- اگر لیست خالی باشد،
print()یک خط خالی چاپ میکند.
- کد باید یکخطی باشد.
- از
;وexecاستفاده نکنید.- اندیسها از ۱ شروع میشوند، پس از
enumerate(..., 1)استفاده کنید.- اعداد کوئرایی باید به ترتیب صعودی چاپ شوند.
✅ این تمرین را در ویرایشگر خود پیادهسازی کنید. به یاد داشته باشید که کد شما باید یکخطی باشد!
نمونهها
1 2 3 4 5 6 7 8 9 10 11 12
6 12
3 4 1 37 21 18 23 25 27 22 43 26
18
6 12 8 9 1 18
18
برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود