• 0

كيف أجمع مصفوفة من المصفوفات للحصول على جميع التركيبات الممكنة في روبي؟

إذا افترضنا أن لدي المصفوفة التالية:

[['1','2'],['a','b'],['x','y']]

أريد الحصول على مصفوفة تحتوي على جميع التركيبات الممكنة للمصفوفة الأولى كما في المثال التالي:

['1ax', '1ay', '1bx', '1by', '2ax', '2ay', '2bx', '2by']

فكيف أفعل ذلك في روبي؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يوجد عدة طرق في لغة روبي لفعل ذلك فيمكنك على سبيل المثال استخدام تابع product مع حلقة التكرار map لتكوين القائمة التي ترغب بتشكيلها كما في المثال التالي:

a = [['1','2'],['a','b'],['x','y']]
a.first.product(*a[1..-1]).map(&:join)

وهنالك طريق أخرى لفعل ذلك وهي أطول وأعقد قليلا وتتكون من عدة توابع مثل reduce و map و product وغيرها كما في المثال التالي:

a = [['1','2'],['a','b'],['x','y']]
a.reduce() { |acc, n| acc.product(n).map(&:flatten) }.map(&:join)

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن