الفرق بين المراجعتين لصفحة: «Ruby/Array/permutation»

من موسوعة حسوب
< Ruby‏ | Array
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: التابع <code>Array.permutation</code> في روبي}}</noinclude> تصنيف: Ruby تصنيف: Ruby Method تصنيف: Ruby...'
 
لا ملخص تعديل
سطر 3: سطر 3:
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Method]]
[[تصنيف: Ruby Array]]
[[تصنيف: Ruby Array]]
يعيد التابع <code>permutation</code> كل التبديلات (<code>permutations</code>) الممكنة لجميع عناصر مصفوفة، أو كل التبديلات المكونة من <code>n</code> عنصر من عناصر المصفوفة فقط ثم يعيد المصفوفة نفسها. لا يوجد أي ضمان للتنبؤ بترتيب العناصر المعادة.
يعيد التابع <code>permutation</code> كل التبديلات (permutations) الممكنة لجميع عناصر مصفوفة، أو كل التبديلات المكونة من <code>n</code> عنصر من عناصر المصفوفة فقط ثم يعيد المصفوفة نفسها. لا يوجد أي ضمان للتنبؤ بترتيب العناصر المعادة.
إن لم تُمرَّر أي كتلة (<code>block</code>) إلى هذا التابع، فسيعيد كائنًا من النوع <code>Enumerator</code>.
 
إن لم تُمرَّر أي كتلة (block) إلى هذا التابع، فسيعيد كائنًا من النوع <code>[[Ruby/Enumerator|Enumerator]]</code>.
==البنية العامة==
==البنية العامة==
<syntaxhighlight lang="ruby"> permutation { |p| block } → ary
<syntaxhighlight lang="ruby"> permutation { |p| block } → ary
سطر 12: سطر 13:
  </syntaxhighlight>
  </syntaxhighlight>
==المعاملات==
==المعاملات==
<code>n</code>
 
=== <code>n</code> ===
عدد صحيح يحدد عدد عناصر المصفوفات الفرعية المراد تبديل عناصر المصفوفة المعطاة مع بعضها بعضًا.
عدد صحيح يحدد عدد عناصر المصفوفات الفرعية المراد تبديل عناصر المصفوفة المعطاة مع بعضها بعضًا.
==القيم المعادة==
==القيم المعادة==
تعاد المصفوفة نفسها المعطاة بعد التبديل بين عناصرها بجميع الاحتمالات الممكنة لكل عناصر المصفوفة أو لعدد <code>n</code> من العناصر فقط بعد تمرير الكتلة <code>block</code>، أو يعاد كائن من النوع <code>Enumerator</code> إن لم تعطَ الكتلة <code>block</code>.
تعاد المصفوفة نفسها المعطاة بعد التبديل بين عناصرها بجميع الاحتمالات الممكنة لكل عناصر المصفوفة أو لعدد <code>n</code> من العناصر فقط بعد تمرير الكتلة <code>block</code>، أو يعاد كائن من النوع <code>[[Ruby/Enumerator|Enumerator]]</code> إن لم تعطَ الكتلة <code>block</code>.
==أمثلة==
==أمثلة==
أمثلة على استخدام التابع <code>permutation</code>:
أمثلة على استخدام التابع <code>permutation</code>:
سطر 35: سطر 37:
* التابع [[Ruby/Array/zip | <code>zip</code>]]: يحول الوسائط الممرَّرة إليه إلى مصفوفات ثم يدمج عناصر المصفوفة التي استُدعيت معه مع العناصر المقابلة في الوسائط (المصفوفات) المُمرَّرة.
* التابع [[Ruby/Array/zip | <code>zip</code>]]: يحول الوسائط الممرَّرة إليه إلى مصفوفات ثم يدمج عناصر المصفوفة التي استُدعيت معه مع العناصر المقابلة في الوسائط (المصفوفات) المُمرَّرة.
==مصادر==
==مصادر==
* قسم التابع permutation في الصنف Array في توثيق روبي الرسمي.
* [https://ruby-doc.org/core-2.5.1/Array.html#method-i-permutation قسم التابع permutation في الصنف Array في توثيق روبي الرسمي.]

مراجعة 18:19، 7 سبتمبر 2018

يعيد التابع permutation كل التبديلات (permutations) الممكنة لجميع عناصر مصفوفة، أو كل التبديلات المكونة من n عنصر من عناصر المصفوفة فقط ثم يعيد المصفوفة نفسها. لا يوجد أي ضمان للتنبؤ بترتيب العناصر المعادة.

إن لم تُمرَّر أي كتلة (block) إلى هذا التابع، فسيعيد كائنًا من النوع Enumerator.

البنية العامة

 permutation { |p| block }  ary
permutation  Enumerator
permutation(n) { |p| block }  ary
permutation(n)  Enumerator

المعاملات

n

عدد صحيح يحدد عدد عناصر المصفوفات الفرعية المراد تبديل عناصر المصفوفة المعطاة مع بعضها بعضًا.

القيم المعادة

تعاد المصفوفة نفسها المعطاة بعد التبديل بين عناصرها بجميع الاحتمالات الممكنة لكل عناصر المصفوفة أو لعدد n من العناصر فقط بعد تمرير الكتلة block، أو يعاد كائن من النوع Enumerator إن لم تعطَ الكتلة block.

أمثلة

أمثلة على استخدام التابع permutation:

 a = [1, 2, 3]
a.permutation.to_a    #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
a.permutation(1).to_a #=> [[1],[2],[3]]
a.permutation(2).to_a #=> [[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]
a.permutation(3).to_a #=> [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
a.permutation(0).to_a #=> [[]] # يوجد تبديل واحد بطول 0
a.permutation(4).to_a #=> []   # لا يوجد أية تبديلات ممكنة بطول 4

انظر أيضًا

  • التابع repeated_permutation: يشبه التابع permutation باستثناء أنَّه يستطيع إنشاء تبديلات للعناصر مع نفسها (أي تكرار العناصر نفسها) وأنه لا يمكن استدعاؤه دون تمرير عدد العناصر المراد التبديل بينها إليه.
  • التابع combination: يجمِّع عناصر المصفوفة المعطاة مع بعضها بعضًا في مصفوفات بطول يساوي القيمة n الممررة إليه ثم يضع هذه المصفوفات في المصفوفة نفسها المعطاة ويعيدها. لا يوجد أي ضمان للتنيؤ بترتيب العناصر المجمَّعة المعادة.
  • التابع repeated_combination: يشبه التابع combination باستثناء أنه يمكنه تجميع العناصر مع نفسها (أي تكرار العناصر نفسها).
  • التابع product: يوزِّع عناصر المصفوفة التي استدعيت معه على جميع عناصر المصفوفات الممرَّرة إليه.
  • التابع zip: يحول الوسائط الممرَّرة إليه إلى مصفوفات ثم يدمج عناصر المصفوفة التي استُدعيت معه مع العناصر المقابلة في الوسائط (المصفوفات) المُمرَّرة.

مصادر