البرمجة

طريقة توليد الترتيبات بواسطة الانزلاق في جافا سكريبت

بالطبع، يمكنك تحقيق هذا الهدف باستخدام الاستدعاءات التعاقبية للدالة بشكل متكرر. لنقم بتحديث الدالة printPermut لتقوم بطباعة جميع الترتيبات الممكنة للسلسلة المعطاة بشكل متكرر وبشكل تجريدي. سنستخدم تقنية الانزلاق (backtracking) للقيام بذلك. لديك حلقة تكرارية لتعيين الحرف الأول في كل مرة، ثم تقوم بالاستدعاء الاستعادي للدالة مع الجزء المتبقي من السلسلة. هكذا سيتم استدعاء الدالة بشكل متكرر حتى يتم استنفاد جميع الاحتمالات. لنقم بتحديث الدالة:

javascript
var myString = "xyz"; function printPermut(inputString, prefix = "") { if (inputString.length === 0) { console.log(prefix); } else { for (let i = 0; i < inputString.length; i++) { const currentChar = inputString[i]; const remainingChars = inputString.substring(0, i) + inputString.substring(i + 1); printPermut(remainingChars, prefix + currentChar); } } } printPermut(myString);

في هذا الكود، نقوم بفحص كل حرف في السلسلة المعطاة. لكل حرف، نقوم بإزالته من السلسلة ونقوم بتمرير السلسلة المتبقية والحرف الحالي كـ”بادئة” (prefix) للدالة نفسها. هذا يضمن أن كل احتمال ممكن للترتيب يتم طباعته. عندما تصل السلسلة المتبقية إلى الحالة التي لا تحتوي على أي حروف، نطبع الـ”بادئة” كترتيب نهائي.

يمكنك تجربة هذا الكود مع السلسلة myString المعطاة، وستلاحظ أنه سيطبع جميع الترتيبات الممكنة لهذه السلسلة.

المزيد من المعلومات

بالطبع، دعنا نواصل تعزيز فهمنا لهذا الموضوع من خلال إكمال المقال بمزيد من الشرح والتفصيل.

بعد إضافة الكود السابق، نلاحظ أن الدالة printPermut تعمل بشكل صحيح وتطبع جميع الترتيبات الممكنة للسلسلة المعطاة. الآن دعنا نفهم كيف يعمل الكود بالتفصيل:

  1. بداية الدالة:

    • تأخذ الدالة معاملين، السلسلة inputString والبادئة prefix (التي يُفترض أن تكون فارغة في البداية).
    • في حالة أن السلسلة inputString فارغة، يعني ذلك أننا قد قمنا بترتيب كل الحروف بشكل صحيح، وبالتالي نطبع البادئة كترتيب نهائي.
  2. حالة غير فارغة:

    • نقوم بتكرار كل حرف في inputString.
    • لكل حرف، نقوم بإزالته من السلسلة ونضيفه إلى البادئة.
    • نستدعي الدالة printPermut بالسلسلة المتبقية والبادئة المحدثة. هذا يؤدي إلى تكرار العملية مع السلسلة المتبقية وبادئة جديدة، وهكذا حتى تصل السلسلة المتبقية إلى حالة فارغة.
  3. الإخراج:

    • عندما يكون السلسلة المتبقية فارغة، نقوم بطباعة البادئة كترتيب نهائي.

الآن، بمجرد تفهم كيفية عمل الكود، يمكننا أن نرى كيف يتم استخدام التقنية المعروفة باسم “الانزلاق” أو “التراجع” (backtracking). في هذه التقنية، نقوم بتجريب جميع الاحتمالات الممكنة وإعادة التحقق من كل واحدة منها، مع الاستمرار في التقدم حتى نصل إلى الحالة النهائية (في هذه الحالة، السلسلة فارغة).

يمكن تحسين هذا الكود عن طريق استخدام ميزات جافا سكريبت الحديثة مثل الدوال المتسلسلة (arrow functions) والقوائم (arrays)، ولكن الكود الحالي يقدم فهماً جيداً للمبتدئين حول كيفية تطبيق الترتيبات المتسلسلة بشكل متكرر باستخدام الاستدعاءات الاستعادية (recursion).

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر