Menu
CoddyTech

Cắt mảng bằng phạm vi

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 69 trên 88.

Đôi khi, bạn cần trích xuất một phần của mảng thay vì truy cập từng phần tử riêng lẻ. Ruby cho phép bạn cắt mảng bằng các phạm vi, tạo ra một mảng mới chỉ chứa những phần tử bạn chỉ định.

Để lấy một phần của mảng theo một phạm vi, hãy đặt phạm vi bên trong dấu ngoặc vuông:

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

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

Phạm vi 1..3 bao gồm các phần tử ở chỉ số 1, 2 và 3. Hãy nhớ rằng chỉ số mảng bắt đầu từ 0, vì vậy chỉ số 1 là phần tử thứ hai.

Bạn cũng có thể dùng phạm vi ba dấu chấm (...) để loại trừ chỉ số cuối:

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

puts slice  # Đầu ra: a, b, c

Ở đây, 0...3 bao gồm các chỉ số 0, 1 và 2, nhưng dừng trước chỉ số 3.

Chỉ số âm cũng dùng được với phạm vi. Chúng đếm từ cuối mảng, trong đó -1 là phần tử cuối cùng:

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

puts slice  # Đầu ra: green, blue, yellow

Cách này trích xuất mọi phần tử từ chỉ số 1 đến phần tử cuối cùng, rất hữu ích khi bạn muốn bỏ qua phần tử đầu tiên mà không cần biết độ dài của mảng.

challenge icon

Thử thách

Dễ

Đọc hai đầu vào:

  1. Một dòng gồm các số nguyên, phân tách bằng dấu phẩy (ví dụ: 10,20,30,40,50,60,70)
  2. Một đặc tả phạm vi theo định dạng start..end hoặc start...end (ví dụ: 2..5 hoặc 1...4)

Tách đầu vào thứ nhất thành một mảng số nguyên. Sau đó, dùng phạm vi từ đầu vào thứ hai để cắt mảng và in từng phần tử của phần được cắt trên một dòng riêng.

Đầu vào phạm vi sẽ dùng hai dấu chấm (..) để bao gồm chỉ số cuối, hoặc ba dấu chấm (...) để không bao gồm chỉ số đó.

Ví dụ, nếu đầu vào là 10,20,30,40,50,60,70 và 2..5, đầu ra sẽ là:

30
40
50
60

Nếu đầu vào là 5,10,15,20,25,30 và 0...3, đầu ra sẽ là:

5
10
15

Nếu đầu vào là 100,200,300,400,500 và 1..-1, đầu ra sẽ là:

200
300
400
500

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

d
e
f

Tự làm thử

# Đọc các giá trị được phân tách bằng dấu phẩy
input_values = gets.chomp

# Đọc thông tin về phạm vi
range_spec = gets.chomp

# TODO: Viết code bên dưới
# 1. Tách input_values thành một mảng (array)
# 2. Phân tích range_spec để xác định điểm bắt đầu, điểm kết thúc và nên dùng .. hay ...
# 3. Cắt mảng theo phạm vi phù hợp
# 4. In mỗi phần tử (element) của phần mảng đã cắt 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