تابعی به نام smart_zip
طراحی کنید که عملکردی مشابه تابع zip
در پایتون داشته باشد، اما با قابلیتهای اضافه زیر:
پارامترهای ورودی:
- arr1, arr2: دو لیست ورودی
- اگر طول arr1 کمتر از arr2 باشد، جای دو لیست را عوض کنید
- fill: مقدار بولین
- اگر True باشد: لیست کوتاهتر را با کاراکتر fillChar پر کنید
- اگر False باشد: از انتهای لیست بلندتر عناصر اضافی را حذف کنید
- fillChar: کاراکتر پرکننده (پیشفرض رشته خالی)
- sort: مقدار بولین
- اگر True باشد: لیستها را قبل از عملیات zip مرتبسازی کنید
شرایط ویژه:
- اگر در لیست اول عناصر تکراری وجود داشت، قبل از انجام عملیات zip، موارد تکراری را حذف کنید (آخرین عنصر باقی بماند)
- اگر لیستها طول نامساوی داشتند و گزینه sort فعال بود، عملیات مرتبسازی انجام نشود
نمونه ورودی و خروجی
SmartZip([1, 2, 3], [4, 5, 6], True) ➞ {1:4, 2:5, 3:6}
SmartZip([4, 2, 7, "hi"], ['a', '123'], False) ➞ {4:'a', 2:'123'}
SmartZip([3, 5, 4, 2, 1], ["apple", "orange", "banana"], True, "fruit", True) ➞ {1:"apple",2:"banana",3:"orange",4:"fruit",5:"fruit"}
SmartZip([1, 2, 3], [4, 5, 6], True) ➞ {1:4, 2:5, 3:6}
SmartZip([4, 2, 7, "hi"], ['a', '123'], False) ➞ {4:'a', 2:'123'}
SmartZip([3, 5, 4, 2, 1], ["apple", "orange", "banana"], True, "fruit", True) ➞ {1:"apple",2:"banana",3:"orange",4:"fruit",5:"fruit"}
SmartZip([1, 2], ['a', 'b', 'c', 'd'], False) ➞ {'a':1, 'b':2}
SmartZip(['x', 'y'], [10, 20, 30, 40], True, None) ➞ {10:'x', 20:'y', 30:None, 40:None}
SmartZip([1, 2, 2, 3, 3, 3], ['a', 'b', 'c', 'd', 'e'], False) ➞ {1:'a', 2:'b', 3:'c'}
SmartZip([3, 1, 4], [9, 8], True, 0, True) ➞ {3:9, 1:8, 4:0}
SmartZip([5, 5, 2, 1], ['a', 'b', 'c', 'd', 'e', 'f'], True, '-', True) ➞ {'a':5, 'b':2, 'c':1, 'd':'-', 'e':'-', 'f':'-'}
SmartZip([10, 20, 30, 40], ['a', 'b'], True) ➞ {10:'a', 20:'b', 30:'', 40:''}
SmartZip([3, 1, 2], ['c', 'a', 'b'], False, sort=True) ➞ {1:'a', 2:'b', 3:'c'}