Tất cả thử thách
Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Shape Factory: tính diện tích

Tạo các hình từ mô tả văn bản bằng factory và trả về diện tích của từng hình.

Bạn sẽ học được gì

  • Tạo đối tượng từ mô tả dạng chữ
  • Giấu việc khởi tạo sau một hàm
  • Để mỗi hình tự tính diện tích của nó

Đề bài

Xem bản gốc (English)

Mẫu factory method che giấu cách các đối tượng được tạo: bạn yêu cầu factory tạo một hình theo tên và nhận lại một đối tượng biết tự tính diện tích của nó.

Mỗi mô tả là tên của một hình theo sau bởi các số của nó, cách nhau bởi dấu cách:

  • circle r: diện tích π·r²
  • square s: diện tích s²
  • rectangle w h: diện tích w·h
  • triangle b h: diện tích b·h / 2

Hãy cài đặt shape_factory_areas(shapes).

Input

shapes: Các mô tả. Các số có thể có phần thập phân.

Output

Trả về diện tích của từng hình, theo thứ tự. Chấp nhận các đáp án sai lệch trong phạm vi 1e-6.

Ràng buộc

1 ≤ số hình ≤ 1,000

0 < mọi số ≤ 1,000

Ví dụ

Ví dụ 1
Đầu vào:
shapes = ["square 3", "rectangle 2 5", "triangle 4 3"]

Kết quả mong đợi:
expected = [9.0, 10.0, 6.0]
Đầu vào:
std::vector<std::string> shapes = {"square 3", "rectangle 2 5", "triangle 4 3"};

Kết quả mong đợi:
std::vector<double> expected = {9.0, 10.0, 6.0};
Đầu vào:
string[] shapes = new string[] {"square 3", "rectangle 2 5", "triangle 4 3"};

Kết quả mong đợi:
double[] expected = new double[] {9.0, 10.0, 6.0};

Giải thích

3² = 9, 2·5 = 10 và 4·3/2 = 6.

Ví dụ 2
Đầu vào:
shapes = ["circle 1"]

Kết quả mong đợi:
expected = [3.141592653589793]
Đầu vào:
std::vector<std::string> shapes = {"circle 1"};

Kết quả mong đợi:
std::vector<double> expected = {3.141592653589793};
Đầu vào:
string[] shapes = new string[] {"circle 1"};

Kết quả mong đợi:
double[] expected = new double[] {3.141592653589793};

Giải thích

π·1² = π ≈ 3.141593.

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Đọc từ đầu tiên để biết cần tạo hình nào.

Gợi ý 2

Gắn mỗi tên hình với công thức diện tích của nó.

Gợi ý 3

Dùng π trong thư viện toán của ngôn ngữ và giữ nguyên độ chính xác.

Độ phức tạp mong đợi

thời gian O(số hình), bộ nhớ phụ O(số hình)

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.