Bird
Raised Fist0
Rubyprogramming~5 mins

Array slicing and ranges in Ruby - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does array slicing mean in Ruby?
Array slicing means taking a part of an array by specifying a start position and length or a range. It creates a new array with the selected elements.
Click to reveal answer
beginner
How do you use a range to slice an array in Ruby?
You use a range inside square brackets, like array[start..end], to get elements from start to end positions inclusive.
Click to reveal answer
intermediate
What is the difference between .. and ... in Ruby ranges when slicing arrays?
.. includes the end index, ... excludes the end index in the range.
Click to reveal answer
beginner
Given array = [10, 20, 30, 40, 50], what is array[1, 3]?
It returns [20, 30, 40]. It starts at index 1 and takes 3 elements.
Click to reveal answer
intermediate
How does negative indexing work in array slicing?
Negative indexes count from the end. For example, array[-2..-1] gets the last two elements.
Click to reveal answer
What does array[2..4] return if array = [5, 10, 15, 20, 25, 30]?
A[15, 20, 25]
B[15, 20]
C[20, 25, 30]
D[10, 15, 20]
What is the result of array[1, 2] for array = [7, 14, 21, 28]?
A[14, 21, 28]
B[14, 21]
C[21, 28]
D[7, 14]
Which range excludes the end index when slicing?
A-..
B..
C...
D-...
What does array[-3..-1] return for array = [1, 2, 3, 4, 5]?
A[3, 4, 5]
B[2, 3, 4]
C[1, 2, 3]
D[4, 5]
What happens if you use array[5, 2] on array = [10, 20, 30]?
ARaises an error
BReturns nil
CReturns [nil, nil]
DReturns [] (empty array)
Explain how to slice an array using a range in Ruby and the difference between .. and ...
Think about how you select parts of an array by index.
You got /4 concepts.
    Describe how negative indexes work in array slicing and give an example.
    Remember last element is -1.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the expression arr[1..3] do when arr = [10, 20, 30, 40, 50]?
      easy
      A. Returns a new array with elements at indexes 1, 2, and 3
      B. Returns a new array with elements at indexes 1 and 3 only
      C. Returns a new array with elements at indexes 1 and 2 only
      D. Returns a single element at index 3

      Solution

      1. Step 1: Understand the range operator '..'

        The range 1..3 includes both 1 and 3, so it covers indexes 1, 2, and 3.
      2. Step 2: Apply slicing to the array

        Slicing arr[1..3] returns elements at indexes 1, 2, and 3, which are 20, 30, and 40.
      3. Final Answer:

        Returns a new array with elements at indexes 1, 2, and 3 -> Option A
      4. Quick Check:

        Range '..' includes end index = elements 20, 30, 40 [OK]
      Hint: Remember '..' includes the end index in slicing [OK]
      Common Mistakes:
      • Thinking '..' excludes the end index
      • Confusing indexes with values
      • Assuming slicing changes the original array
      2. Which of the following is the correct syntax to get elements from index 2 up to but not including index 5 in Ruby array arr?
      easy
      A. arr[2...5]
      B. arr[2:5]
      C. arr[2..5]
      D. arr[2-5]

      Solution

      1. Step 1: Identify the range operator for excluding end

        In Ruby, ... excludes the end index, so 2...5 means indexes 2, 3, and 4.
      2. Step 2: Check syntax correctness

        Only arr[2...5] uses valid Ruby syntax for slicing excluding the end index.
      3. Final Answer:

        arr[2...5] -> Option A
      4. Quick Check:

        Use '...' to exclude end index in range [OK]
      Hint: Use '...' to exclude the last index in range slicing [OK]
      Common Mistakes:
      • Using '..' when exclusion is needed
      • Using Python-style slicing syntax like ':'
      • Using invalid range syntax like '2-5'
      3. What is the output of the following Ruby code?
      arr = [5, 10, 15, 20, 25]
      slice = arr[1...4]
      puts slice.inspect
      medium
      A. [10, 15, 20, 25]
      B. [15, 20, 25]
      C. [10, 15, 20]
      D. [5, 10, 15]

      Solution

      1. Step 1: Understand the slicing range

        The range 1...4 includes indexes 1, 2, and 3 but excludes 4.
      2. Step 2: Extract elements at these indexes

        Elements at indexes 1, 2, 3 are 10, 15, and 20 respectively.
      3. Final Answer:

        [10, 15, 20] -> Option C
      4. Quick Check:

        Range '...' excludes end index = [10, 15, 20] [OK]
      Hint: Remember '...' excludes the last index in slicing [OK]
      Common Mistakes:
      • Including element at index 4 mistakenly
      • Confusing indexes with values
      • Printing original array instead of slice
      4. Identify the error in the following Ruby code snippet:
      arr = [1, 2, 3, 4, 5]
      slice = arr[2..6]
      puts slice.inspect
      medium
      A. Syntax error due to invalid range
      B. Range end index 6 is out of bounds but Ruby returns elements up to the end of the array
      C. Runtime error because index 6 does not exist
      D. slice will be empty array because range is invalid

      Solution

      1. Step 1: Check the range indexes against array size

        The array has indexes 0 to 4. The range 2..6 goes beyond the last index.
      2. Step 2: Understand Ruby slicing behavior for out-of-bounds

        Ruby returns elements from index 2 to the end (indexes 2, 3, 4) and ignores indexes beyond 4 without error.
      3. Final Answer:

        Range end index 6 is out of bounds but Ruby returns elements up to the end of the array -> Option B
      4. Quick Check:

        Ruby slices safely even if range exceeds array size [OK]
      Hint: Ruby slicing ignores out-of-bound indexes without error [OK]
      Common Mistakes:
      • Expecting runtime or syntax error
      • Assuming slice will be empty
      • Confusing Ruby with other languages that error here
      5. Given arr = [2, 4, 6, 8, 10, 12], which expression returns a new array with every second element starting from index 1 up to index 5?
      hard
      A. arr[1..5].select.with_index { |_, i| i.even? }
      B. arr[1..5].select.with_index { |_, i| i.odd? }
      C. arr[1...6].values_at(*arr[1...6].each_index.select(&:even?))
      D. arr[1..5].values_at(*arr[1..5].each_index.select(&:odd?))

      Solution

      1. Step 1: Slice array from index 1 to 5

        arr[1..5] gives [4, 6, 8, 10, 12].
      2. Step 2: Select every second element starting from index 1 of the slice

        Indexes inside the slice are 0 to 4. Selecting odd indexes (1, 3) gives elements 6 and 10.
      3. Step 3: Check options for correct syntax and output

        arr[1..5].values_at(*arr[1..5].each_index.select(&:odd?)) uses values_at with odd indexes on the slice correctly, returning [6, 10].
      4. Final Answer:

        arr[1..5].values_at(*arr[1..5].each_index.select(&:odd?)) -> Option D
      5. Quick Check:

        Use values_at with odd indexes on slice for every second element [OK]
      Hint: Use values_at with selected indexes for custom slicing [OK]
      Common Mistakes:
      • Confusing odd/even indexes inside the slice
      • Using select without values_at returns elements, not indexes
      • Using wrong range operator causing off-by-one errors
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard