Menu
CoddyTech

تقطيع المصفوفات باستخدام النطاقات

جزء من قسم الأساسيات في رحلة Ruby على Coddy. الدرس 69 من 88.

أحيانًا تحتاج إلى استخراج جزء من مصفوفة بدلًا من الوصول إلى عناصر فردية. تتيح لك Ruby اقتطاع المصفوفات باستخدام النطاقات، مما ينشئ مصفوفة جديدة تحتوي على العناصر التي تحددها فقط.

لتقسيم مصفوفة باستخدام نطاق، ضع النطاق بين أقواس مربعة:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]

puts slice  # المخرجات: 20, 30, 40

يشمل النطاق 1..3 العناصر عند الفهارس 1 و2 و3. تذكّر أن فهارس المصفوفة تبدأ من 0، لذا فإن الفهرس 1 هو العنصر الثاني.

يمكنك أيضًا استخدام النطاق ذي النقاط الثلاث (...) لاستبعاد الفهرس الأخير:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]

puts slice  # المخرجات: a, b, c

هنا، تشمل 0...3 الفهارس 0 و1 و2، لكنها تتوقف قبل الفهرس 3.

تعمل الفهارس السالبة مع النطاقات أيضًا. وهي تعدّ من نهاية المصفوفة، حيث يكون -1 هو العنصر الأخير:

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]

puts slice  # المخرجات: green, blue, yellow

يستخرج هذا كل شيء بدءًا من الفهرس 1 وحتى العنصر الأخير، وهو مفيد عندما تريد تخطي العنصر الأول دون معرفة طول المصفوفة.

challenge icon

التحدي

سهل

اقرأ مدخلين:

  1. سطرًا واحدًا يحتوي على أعداد صحيحة مفصولة بفواصل (مثلًا، 10,20,30,40,50,60,70)
  2. تحديدًا للنطاق بالتنسيق start..end أو start...end (مثلًا، 2..5 أو 1...4)

قسّم المدخل الأول إلى مصفوفة من الأعداد الصحيحة. ثم استخدم النطاق من المدخل الثاني لاقتطاع جزء من المصفوفة، واطبع كل عنصر من الجزء المقتطع في سطر منفصل.

سيستخدم مدخل النطاق إما نقطتين (..) لتضمين فهرس النهاية، أو ثلاث نقاط (...) لاستبعاده.

على سبيل المثال، إذا كان المدخلان 10,20,30,40,50,60,70 و2..5، فينبغي أن يكون الناتج:

30
40
50
60

إذا كان المدخلان 5,10,15,20,25,30 و0...3، فينبغي أن يكون الناتج:

5
10
15

إذا كان المدخلان 100,200,300,400,500 و1..-1، فينبغي أن يكون الناتج:

200
300
400
500

إذا كان المدخلان a,b,c,d,e,f و-3..-1، فينبغي أن يكون الناتج:

d
e
f

جرّب بنفسك

# اقرأ القيم المفصولة بفواصل
input_values = gets.chomp

# اقرأ مواصفات النطاق
range_spec = gets.chomp

# TODO: اكتب الكود الخاص بك أدناه
# 1. قسّم input_values إلى مصفوفة
# 2. حلّل range_spec لتحديد البداية والنهاية، وما إذا كنت ستستخدم .. أو ...
# 3. استخرج شريحة من المصفوفة باستخدام النطاق المناسب
# 4. اطبع كل عنصر من الشريحة في سطر مستقل
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: مترجم Ruby عبر الإنترنت