يعد ملء المصفوفة في دوامة مهمة مثيرة للاهتمام يمكن أن تنشأ عند برمجة تطبيقات مختلفة. قد تحتاج إلى إنشاء صورة على شكل مصفوفة مليئة بأرقام أو رموز معينة مرتبة بشكل حلزوني.
لحل مثل هذه المشكلة ، هناك خوارزمية فعالة تسمح لك بملء المصفوفة في دوامة. يعتمد على استخدام المتغيرات التي تتعقب الوضع الحالي في المصفوفة ، وكذلك اتجاهات الحركة في دوامة. باستخدام الحلقات والمشغلين الشرطيين ، يمكنك التنقل عبر المصفوفة ، وملئها بعناصر بترتيب معين.
على سبيل المثال ، بدءا من الزاوية العلوية اليسرى للمصفوفة ، نملأ الصف الأول ، ثم العمود الأخير ، والصف التالي بترتيب عكسي ، وما إلى ذلك.، حتى نملأ المصفوفة بأكملها.
يتيح لك هذا الأسلوب ملء المصفوفة بشكل حلزوني ليس فقط بعدد معين من الصفوف والأعمدة ، ولكن أيضا بقيم عناصر مختلفة. هذا مفيد ، على سبيل المثال ، عندما تحتاج إلى إنشاء نظام رسومات حيث تمثل القيم الموجودة في المصفوفة وحدات البكسل في الصورة.
- خوارزمية لملء المصفوفة في دوامة
- الخطوة 1: تحجيم وتهيئة المصفوفة
- الخطوة 2: ملء الصف الأول من المصفوفة من اليسار إلى اليمين
- الخطوة 3: ملء العمود الأخير من المصفوفة من أعلى إلى أسفل
- الخطوة 4: ملء الصف الأخير من المصفوفة من اليمين إلى اليسار
- الخطوة 5: ملء العمود الأول من المصفوفة من الأسفل إلى الأعلى
- الخطوة 6: كرر الخطوات من 2 إلى 5 حتى يتم ملء المصفوفة بأكملها
- سؤال وجواب
- لماذا أحتاج لملء المصفوفة في دوامة?
- كيف تعمل الخوارزمية لملء المصفوفة في دوامة?
- هل من الممكن استخدام خوارزمية ملء المصفوفة الحلزونية لمصفوفة ذات حجم تعسفي?
خوارزمية لملء المصفوفة في دوامة
ملء المصفوفة الحلزونية عبارة عن خوارزمية يتم فيها ملء الأرقام الموجودة في المصفوفة بشكل حلزوني ، بدءا من المركز والتحرك في اتجاه عقارب الساعة.
تتكون الخوارزمية من الخطوات التالية:
- تحديد حجم مصفوفة نكسن.
- إنشاء مصفوفة فارغة من حجم نكسن.
- ابدأ في ملء المصفوفة من المركز. للقيام بذلك ، تحتاج إلى العثور على إحداثيات مركز المصفوفة ، والتي تساوي (ن/2 ، ن/2).
- املأ العنصر المركزي للمصفوفة بالقيمة 1.
- تابع لملء العنصر التالي في اتجاه عقارب الساعة. في المجموع ، تحتاج إلى ملء ن * ن العناصر.
- قم بملء العناصر بالتتابع إلى اليمين والأسفل واليسار والأعلى حتى يتم ملء جميع العناصر.
- عند ملء العناصر على طول حدود المصفوفة ، من الضروري تغيير اتجاه الحركة.
- في نهاية الخوارزمية ، نحصل على مصفوفة مملوءة في دوامة.
مثال على ملء المصفوفة 3 3 3:
| 1 | 2 | 3 |
| 8 | 9 | 4 |
| 7 | 6 | 5 |
مثال على ملء مصفوفة 4 4 4:
| 1 | 2 | 3 | 4 |
| 12 | 13 | 14 | 5 |
| 11 | 16 | 15 | 6 |
| 10 | 9 | 8 | 7 |
وبالتالي ، فإن خوارزمية ملء المصفوفة في دوامة هي سلسلة من الخطوات التي يمكنك بسهولة ملء المصفوفة في دوامة والحصول على النتيجة المرجوة.
الخطوة 1: تحجيم المصفوفة وتهيئتها
قبل البدء في ملء المصفوفة في دوامة باستخدام الخوارزمية ، من الضروري تحديد أبعاد المصفوفة وتهيئتها.
لتحديد حجم المصفوفة ، تحتاج إلى معرفة عدد الصفوف والأعمدة. يمكن الحصول على هذه القيم من شروط المهمة أو عن طريق الإدخال من المستخدم.
بعد تحديد حجم المصفوفة ، من الضروري تهيئتها ، أي إنشاء مصفوفة فارغة بحجم معين.
يمكن إجراء تهيئة المصفوفة باستخدام طريقتين:
مصفوفة = [[0] * أعمدة _ في النطاق (الصفوف)]
الصفوف
يشير إلى عدد الصفوف والمتغير
بعد تحديد حجم المصفوفة وإنشاء هيكلها ، تأتي اللحظة التي يتم فيها ملء عناصر المصفوفة.
الخطوة الأولى هي ملء الصف الأول من المصفوفة ، والانتقال من اليسار إلى اليمين. بمعنى آخر ، نملأ عناصر المصفوفة فقط في الصف الأول.
| للقيام بذلك ، نستخدم المتغيرات التي تتبع الموضع الحالي داخل المصفوفة: | صف | و | العقيد |
|---|---|---|---|
| . في البداية ، يتم تعيين هذه المتغيرات على 0 ، حيث نبدأ في ملء المصفوفة من الصف الأول والعمود الأول. |
| من المهم أن تضع في اعتبارك حدود المصفوفة. إذا تجاوز العمود الحالي المصفوفة ، فإننا ببساطة نزيد | متغير الصف |
| إلى 1 والعودة إلى بداية السطر. أيضا ، بعد ملء كل عنصر ، نقوم بزيادة المتغير |
| على 1. | يمكن تمثيل عملية ملء الصف الأول من المصفوفة من اليسار إلى اليمين على النحو التالي: |
| خطوة | صف | العقيد ماتريكس |
0
1
2
1 2 0
0
2
3
- 3
- .
- عند ملء عمود من أعلى إلى أسفل ، يتم استخدام مبدأ مماثل. وضعنا القيمة الأولية للحد العلوي من العمود وتذهب من خلال العمود ، وملء الخلايا مع القيم في النظام حتى نصل إلى الحد السفلي من العمود أو ملء جميع العناصر.
- متغير الصف
- تهيئة متغير كولند
- نبدأ حلقة من شأنها أن تعمل حتى
- كولستارت
لن تصبح أصغر
من كولند
.
في كل تكرار للحلقة ، نعين العنصر الحالي للمصفوفة قيمة من المتغير
الأسطوانات
والحد منه
الأسطوانات
بواسطة 1.
تقليل القيمة
من كولستارت
على 1.
في نهاية الدورة ، ننتقل إلى الخطوة التالية من الخوارزمية — ملء العمود الأخير من المصفوفة من الأسفل إلى الأعلى.
مثال رمز لملء الصف الأخير من المصفوفة من اليمين إلى اليسار:
// الخطوة 4: ملء الصف الأخير من المصفوفة من اليمين إلى اليسار
الصف فار = مصفوفة.طول-1;
فار كولستارت = مصفوفة [0].طول-1;
- فار كولند = 0;
- بينما (كولستارت >= كولند) {
- مصفوفة [صف] [كولستارت] = الأسطوانات;
- الأسطوانات--;
- كولستارت--;
}
| // الانتقال إلى الخطوة التالية من الخوارزمية-ملء العمود الأخير من المصفوفة من الأسفل إلى الأعلى | ||
| // ... | ||
| بعد الانتهاء من هذه الخطوة ، نملأ الصف الأخير من المصفوفة من اليمين إلى اليسار ، ويمكننا المتابعة إلى الخطوة التالية — ملء العمود الأخير من المصفوفة من الأسفل إلى الأعلى. |
الخطوة 5: ملء العمود الأول من المصفوفة من الأسفل إلى الأعلى
| في هذه الخطوة ، نملأ العمود الأول من المصفوفة من الأسفل إلى الأعلى. للقيام بذلك ، نبدأ من الصف الأخير وننتقل لأعلى ، ونملأ كل خلية بالترتيب. | ||
| خوارزمية لملء العمود الأول من المصفوفة من أسفل إلى أعلى: | ||
| ضبط المؤشر على الحد السفلي للعمود (الصف السفلي). |
تعيين متغير للقيمة التي سنقوم بإدراجها في كل خلية.
بينما يكون المؤشر أعلى الحد العلوي للعمود (أعلى الصف الأول) ، قم بتنفيذ الإجراءات التالية:
نقوم بإدخال القيمة في الخلية الحالية باستخدام مؤشر ومتغير بالقيمة.
قم بتقليل المؤشر بمقدار 1 للانتقال إلى السطر التالي لأعلى.
مثال على ملء العمود الأول من المصفوفة من الأسفل إلى الأعلى:
9
8
7
بعد الانتهاء من هذه الخطوة ، ستبدو المصفوفة كما يلي:
9
8
7
الآن يتم ملء العمود الأول من المصفوفة من الأسفل إلى الأعلى. سوف نستمر في ملء الأعمدة التالية بنفس الطريقة.
الخطوة 6: كرر الخطوات من 2 إلى 5 حتى يتم ملء المصفوفة بأكملها
بعد الانتهاء من الخطوات من 2 إلى 5 لملء الدائرة الأولى من المصفوفة ، يجب تكرار هذه الخطوات لملء الدوائر المتبقية بالترتيب.