تقطيع المصفوفات باستخدام النطاقات
جزء من قسم الأساسيات في رحلة 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 إلى العنصر الأخير، وهو أمر مفيد عندما تريد تخطي العنصر الأول دون معرفة طول المصفوفة.
التحدي
سهلاقرأ مدخلين:
- سطر واحد من الأعداد الصحيحة المفصولة بفاصلة (على سبيل المثال،
10,20,30,40,50,60,70) - مواصفات النطاق بتنسيق
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. طباعة كل عنصر من الجزء المقتطع في سطر منفصليتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الثاني
المعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالثالمعاملات المنطقية - الجزء الرابع7حاسبة تقسيم الفاتورة
رسالة الترحيبالحصول على مدخلات المستخدم13المصفوفات المتقدمة
تقطيع المصفوفات باستخدام النطاقاتتقطيع المصفوفات باستخدام الفهارسمعاملات المصفوفاتدالة Include?2المتغيرات وأنواع البيانات
الأرقام والمتغيراتنوع البيانات Stringنوع البيانات Booleanنوع البيانات Symbolالتحقق من أنواع البياناتقواعد التسميةملخص - إنشاء المتغيرات8الحلقات التكرارية
حلقة For مع النطاقاتحلقة WhileBreakNextمراجعة - المضروب (Factorial)حلقة Timesحلقة Untilالحلقات المتداخلةمراجعة - الإدخال الديناميكي (Dynamic Input)3المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةاختصارات العمليات الحسابيةمراجعة - العمليات الرياضية البسيطةمعاملات المقارنة6أساسيات الإدخال والإخراج
الإخراج باستخدام putsالإخراج باستخدام print و pالإخراج باستخدام المتغيراتالإدخال باستخدام getsدالة Chompتحويل أنواع البياناتمراجعة - حاسبة العمرمراجعة - صح أم خطأ