Menu
CoddyTech

Chuyển đổi dữ liệu

Thuộc phần Logic và luồng xử lý trong hành trình Ruby của Coddy. Bài học 56 trên 56.

Thử thách tổng kết: biến đổi bộ dữ liệu thành báo cáo tóm tắt. Kết hợp lọc, ánh xạ, nhóm, xử lý lỗi và định nghĩa phương thức trong một chương trình.

challenge icon

Thử thách

Trung bình

Cho mảng students. Mỗi mục là một hash có :id, :grades (một mảng số nguyên, có thể rỗng) và :subjects (một mảng chuỗi).

Định nghĩa một phương thức transform_dataset(students) trả về một hash có hai khóa:

  • :qualified_ids: mảng đã sắp xếp gồm các :id của học sinh có ít nhất một điểm và tất cả điểm đều lớn hơn 70 (dùng all?).
  • :subject_counts: một hash ánh xạ mỗi môn học mà học sinh đủ điều kiện theo học với số học sinh đủ điều kiện theo học môn đó.

Nếu mảng :grades của một học sinh rỗng, học sinh đó không đủ điều kiện, hãy bỏ qua mà không thông báo.

Sau đó, gọi phương thức và in ra:

  1. Các ID đủ điều kiện được nối bằng , , với tiền tố Qualified: . Nếu không có ID nào, hãy in Qualified: (none).
  2. Mỗi môn học trên một dòng (sắp xếp theo thứ tự bảng chữ cái) theo định dạng <subject>: <count>.

Với students mặc định, đầu ra là:

Qualified: S1, S4
biology: 1
history: 1
math: 2
physics: 1

Tự làm thử

students = [
  { id: "S1", grades: [85, 92, 78], subjects: ["math", "physics"] },
  { id: "S2", grades: [65, 80, 90], subjects: ["math", "biology"] },
  { id: "S3", grades: [],          subjects: ["art"] },
  { id: "S4", grades: [88, 95],    subjects: ["math", "biology", "history"] },
  { id: "S5", grades: [70, 75],    subjects: ["chemistry"] }
]

# TODO: định nghĩa hàm transform_dataset(students), trả về { qualified_ids:, subject_counts: }
# TODO: in ra các ID đủ điều kiện và số lượng theo môn học
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 Logic và luồng xử lý

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