Menu
CoddyTech

Nên mua gì

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

challenge icon

Thử thách

Dễ

Tạo một hàm có tên what_to_buy nhận hai đối số: budget (một giá trị số) và prices (một vector có tên chứa giá các món đồ). Hàm cần trả về một vector ký tự chứa tên của tất cả các món đồ có giá nhỏ hơn hoặc bằng ngân sách.

Nếu không có món đồ nào vừa túi tiền, hãy trả về một vector ký tự rỗng bằng cách dùng character(0).

Bạn sẽ nhận các đầu vào sau:

  1. Số tiền ngân sách (một số)
  2. Danh sách tên các món đồ được phân tách bằng dấu phẩy (ví dụ: apple,banana,steak,bread)
  3. Danh sách giá tương ứng được phân tách bằng dấu phẩy (ví dụ: 2,1,15,3)

Phân tích các đầu vào để tạo một vector giá có tên, gọi hàm của bạn và in ra kết quả. Dùng print() để hiển thị vector ký tự được trả về.

Ví dụ, nếu đầu vào là:

5
apple,banana,steak,bread
2,1,15,3

Đầu ra sẽ là:

[1] "apple"  "banana" "bread"

Nếu đầu vào là:

10
laptop,phone,tablet
999,599,399

Đầu ra sẽ là:

character(0)

Gợi ý:

  • Dùng strsplit(input, ",")[[1]] để tách các chuỗi được phân tách bằng dấu phẩy thành các vector
  • Dùng as.numeric() để chuyển các chuỗi giá thành số
  • Dùng names(prices) <- item_names để tạo một vector có tên
  • Dùng chỉ số logic cùng với names() để lấy tên các món đồ vừa túi tiền

Tự làm thử

# Đọc đầu vào
con <- file("stdin", "r")
budget <- as.numeric(suppressWarnings(readLines(con, n = 1)))
item_names_input <- suppressWarnings(readLines(con, n = 1))
prices_input <- suppressWarnings(readLines(con, n = 1))
close(con)

# Phân tích các giá trị đầu vào
item_names <- strsplit(item_names_input, ",")[[1]]
price_values <- as.numeric(strsplit(prices_input, ",")[[1]])

# Tạo vector giá có tên
prices <- price_values
names(prices) <- item_names

# TODO: Viết hàm (function) what_to_buy bên dưới
# Hàm nhận budget và prices làm đối số
# và trả về vector ký tự chứa tên các mặt hàng vừa túi tiền


# Gọi hàm và in ra kết quả
result <- what_to_buy(budget, prices)
print(result)

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 R online