بکندباز

یک تابع ایجاد کنید که دو پارامتر دریافت می‌کند:

  1. یک ماتریس mat با m سطر و n ستون، شامل داده‌هایی از هر نوع.
  2. یک پارامتر اختیاری عدد صحیح turns که تعداد چرخش‌های ۹۰ درجه‌ای ساعت‌گرد را مشخص می‌کند (پیش‌فرض آن ۱ است).

این تابع باید یک ماتریس جدید برگرداند که عناصر آن بر اساس تعداد turns داده شده، به صورت ساعت‌گرد یا پادساعت‌گرد چرخیده‌اند.

  • برای اعداد صحیح مثبت:
    • ۱ چرخش = ۹۰ درجه ساعت‌گرد
    • ۲ چرخش = ۱۸۰ درجه ساعت‌گرد
    • ۳ چرخش = ۲۷۰ درجه ساعت‌گرد
    • ۴ چرخش = ۳۶۰ درجه ساعت‌گرد (برابر با ۰ چرخش) و الی آخر.
  • برای اعداد صحیح منفی:
    • ۱- چرخش = ۹۰ درجه پادساعت‌گرد
    • ۲- چرخش = ۱۸۰ درجه پادساعت‌گرد
    • ۳- چرخش = ۲۷۰ درجه پادساعت‌گرد
    • ۴- چرخش = ۳۶۰ درجه پادساعت‌گرد (برابر با ۰ چرخش) و الی آخر.

مثال

rotate_matrix([
  [1,  2,  3,  4],
  [5,  6,  7,  8],
  [9, 10, 11, 12]
]) ➞ [
  [ 9, 5, 1],
  [10, 6, 2],
  [11, 7, 3],
  [12, 8, 4]
]
# یک چرخش ساعت‌گرد.
# ستون‌های چپ به راست به سطرهای پایین به بالا تبدیل می‌شوند.


rotate_matrix([["+", "-"], ["*", "/"]], -1) ➞ [["-", "/"], ["+", "*"]]
# یک چرخش پادساعت‌گرد.
# ستون‌های راست به چپ به سطرهای بالا به پایین تبدیل می‌شوند.


rotate_matrix([[1, 2, 3], [4, 5, 6]], 4) ➞ [[1, 2, 3], [4, 5, 6]]
# یک چرخش ۳۶۰ درجه همه عناصر را به جایگاه اصلی خود برمی‌گرداند.

نکات

  • تمام ماتریس‌های داده شده (لیست‌های دو بعدی) حداقل ۱ سطر و ۱ ستون خواهند داشت.
  • ماتریس اصلی را تغییر ندهید، مقدار بازگشتی باید یک لیست دو بعدی جدید باشد که مقادیر آن از لیست اصلی کپی شده است.
  • از هیچ کتابخانه‌ای استفاده نکنید — چالش این است که راه‌حل خود را ارائه دهید.
  • مطمئن شوید راه‌حل شما به اندازه‌ای بهینه است که بتواند تعداد زیادی چرخش را مدیریت کند.
  • باید یک مقدار پیش‌فرض برای پارامتر turns تعیین کنید.
RotateMatrix([[1,  2,  3,  4],  [5,  6,  7,  8],  [9, 10, 11, 12]])  ➞ [[ 9, 5, 1], [10, 6, 2], [11, 7, 3], [12, 8, 4]]
RotateMatrix([["+", "-"], ["*", "/"]], -1)  ➞ [["-", "/"], ["+", "*"]]
RotateMatrix([[1, 2, 3], [4, 5, 6]], 4)  ➞ [[1, 2, 3], [4, 5, 6]]
RotateMatrix([[1, 2, 3], [4, 5, 6]])  ➞ [[4,1], [5,2], [6,3]]
RotateMatrix([[1, 2, 3], [4, 5, 6]], 2)  ➞ [[6,5,4], [3,2,1]]
RotateMatrix([['in','mainly','plain'], ['rain','falls','the'], ['The','Spain','on']], 4097)  ➞ [['The','rain','in'], ['Spain','falls','mainly'], ['on','the','plain']]

هنوز پاسخی برای این تمرین ثبت نشده است

نظرات

*
*

تمرینات مرتبط