Menu
CoddyTech

Cắt mảng bằng chỉ số

Thuộc phần Kiến thức nền tảng trong hành trình Ruby của Coddy. Bài học 70 trên 88.

Ruby cung cấp một cách khác để cắt mảng bằng chỉ số bắt đầu và độ dài. Thay vì chỉ định một phạm vi, bạn cung cấp hai số: bắt đầu ở đâu và lấy ra bao nhiêu phần tử.

Cú pháp dùng dấu phẩy để phân tách chỉ số bắt đầu với số lượng phần tử:

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

puts slice  # Đầu ra: 20, 30, 40

Lệnh này trích xuất 3 phần tử, bắt đầu từ chỉ số 1. Số thứ nhất là vị trí bắt đầu, còn số thứ hai là số phần tử bạn muốn.

Cách này đặc biệt hữu ích khi bạn biết chính xác mình cần bao nhiêu phần tử:

letters = ["a", "b", "c", "d", "e"]
first_two = letters[0, 2]

puts first_two  # In ra: a, b

Chỉ số âm cũng hoạt động ở đây. Bạn có thể bắt đầu từ cuối mảng (array):

colors = ["red", "green", "blue", "yellow"]
last_two = colors[-2, 2]

puts last_two  # In ra: blue, yellow

Nếu bạn yêu cầu nhiều phần tử hơn số phần tử hiện có, Ruby sẽ chỉ trả về những phần tử đang tồn tại mà không báo lỗi:

nums = [1, 2, 3]
slice = nums[1, 10]

puts slice  # In ra: 2, 3

Hãy chọn phương thức này khi bạn biết số lượng phần tử cần dùng, và dùng các khoảng khi bạn biết chính xác vị trí.

challenge icon

Thử thách

Dễ

Đọc ba đầu vào:

  1. Một dòng gồm các số nguyên được phân tách bằng dấu phẩy (ví dụ: 5,10,15,20,25,30,35,40)
  2. Chỉ số bắt đầu (số nguyên)
  3. Số phần tử cần lấy (số nguyên)

Tách đầu vào đầu tiên thành một mảng số nguyên. Dùng chỉ số bắt đầu và số lượng để cắt mảng bằng cú pháp chỉ số và độ dài, sau đó in mỗi phần tử của phần được cắt trên một dòng riêng.

Ví dụ: nếu đầu vào là 5,10,15,20,25,30,35,40, 2 và 4, đầu ra sẽ là:

15
20
25
30

Nếu đầu vào là 100,200,300,400,500, 0 và 2, đầu ra sẽ là:

100
200

Nếu đầu vào là a,b,c,d,e,f,g, -3 và 2, đầu ra sẽ là:

e
f

Nếu đầu vào là 10,20,30, 1 và 10, đầu ra sẽ là:

20
30

Tự làm thử

# Đọc dữ liệu đầu vào (input)
input_line = gets.chomp
start_index = gets.chomp.to_i
count = gets.chomp.to_i

# Tách dữ liệu đầu vào thành một mảng (array)
arr = input_line.split(',')

# TODO: Viết code bên dưới để cắt mảng bằng cú pháp chỉ số (index) và độ dài
# và in mỗi phần tử (element) trên một dòng riêng
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Ruby online