Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

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

جزء من قسم الأساسيات في رحلة 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

ورقة مرجعية

لاستخراج جزء من مصفوفة، استخدم النطاقات (ranges) داخل الأقواس المربعة:

numbers = [10, 20, 30, 40, 50]
slice = numbers[1..3]
# Returns [20, 30, 40] (indexes 1, 2, and 3)

استخدم نقطتين (..) لتضمين فهرس النهاية:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0..2]
# Returns ["a", "b", "c"] (indexes 0, 1, and 2)

استخدم ثلاث نقاط (...) لاستثناء فهرس النهاية:

letters = ["a", "b", "c", "d", "e"]
slice = letters[0...3]
# Returns ["a", "b", "c"] (indexes 0, 1, and 2, stops before 3)

تبدأ الفهارس السالبة بالعد من نهاية المصفوفة (-1 هو العنصر الأخير):

colors = ["red", "green", "blue", "yellow"]
slice = colors[1..-1]
# Returns ["green", "blue", "yellow"] (from index 1 to the last element)

جرّب بنفسك

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

# قراءة تحديد النطاق
range_spec = gets.chomp

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

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

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