Những cây chúng ta đang trồng có một số quy tắc xác định cách chúng phát triển:
Quy tắc tăng trưởng:
- Cây chỉ bao gồm các nhánh.
- Chi nhánh được tạo thành từ sự kết hợp của các ký hiệu sau:
_
,\
,|
,/
, &_
Một cây bắt đầu như một nhánh / thân thẳng đứng (
|
) trên mặt đất (_
):__________________|___________________
Thức ăn cho sự phát triển của chi nhánh đến từ ánh sáng.
- Ánh sáng bắt đầu ở cường độ 2 tại mỗi điểm trên bầu trời và đi thẳng xuống.
- Mỗi nhánh có thể ăn một nửa ánh sáng có sẵn cho nó và phần còn lại đi qua các nhánh thấp hơn.
- Do đó, một nhánh không có nhánh nào khác ở trên sẽ nhận được 1 đơn vị thức ăn nhẹ mỗi mùa, một nhánh có 1 nhánh ở trên sẽ nhận được 0,5 đơn vị thức ăn mỗi mùa và nói chung, một nhánh có n nhánh trên đó sẽ nhận được 1 / (2 ^ n) đơn vị thực phẩm mỗi mùa.
- Vào cuối mỗi mùa, thức ăn được tổng cộng bắt đầu từ thân cây và di chuyển lên và chuyển đổi thành cành và quả mới (áp dụng các quy tắc sau cho đến khi cành biến thành quả hoặc chỉ còn ít hơn 1 đơn vị thức ăn):
- Nếu một chi nhánh có ít hơn 1 đơn vị thực phẩm vào cuối mùa, tất cả thực phẩm cho chi nhánh đó được lưu trữ trong chi nhánh đó cho đến mùa tiếp theo.
- Nếu một nhánh có lớn hơn hoặc bằng 1 đơn vị thực phẩm và có chỗ để phát triển, nó sẽ phát triển ngẫu nhiên một nhánh mới bằng cách sử dụng các mô hình tăng trưởng có sẵn (xem bên dưới) và lưu trữ thực phẩm còn lại cho mùa tiếp theo.
- Nếu một nhánh có> = 1 đơn vị thực phẩm, không có nơi nào để phát triển và có các nhánh nhánh, nó sẽ phân phối đều thức ăn cho các nhánh nhánh của nó
- Nếu một nhánh có> = 1 đơn vị thực phẩm, không nơi nào phát triển và không có nhánh nhánh, nó sẽ trở thành quả (đại diện bởi
O
)
- Dưới đây là các cấu hình tăng trưởng có thể
Cấu hình tăng trưởng:
_ \ | / _ _ \ | / \ | / _
| | | | | \ \ \ \ / / / / __ \_ |_ _| _/ __
--- Vertical Branches --- --- Diagonal Branches --- --- Horizontal Branches ---
Cây ví dụ tiềm năng:
\
/ /
\/O |___//
\_/ \//O\_/
\__/|\|_/
\|/
__________________|__________________
Đầu vào:
Chương trình của bạn sẽ có thể lấy làm đầu vào một danh sách các ảnh chụp nhanh của cây bạn muốn xem. Ví dụ: [10,20,50] có nghĩa là bạn muốn nhìn thấy cây sau 10 mùa, 20 mùa và 50 mùa.
Đầu ra:
Đối với mỗi mùa đầu vào, chương trình của bạn sẽ xuất ra mùa và sau đó là hình ảnh của cây trong mùa đó. Nếu có ích, bạn có thể xác định tuổi tối đa cho cây, chẳng hạn như 60, để chiều cao tối đa của cây sẽ là 61 và chiều rộng tối đa sẽ là 121, và sau đó luôn hiển thị cây theo tỷ lệ đó. Nếu không, hãy thoải mái chia tỷ lệ hình ảnh của bạn thành bất kỳ cây có kích thước nào. Ví dụ: nếu đầu vào là [0,1,2,3], đầu ra của bạn có thể là:
Season 0:
_|_
Season 1:
\
__|__
Season 2:
_
\|
___|___
Season 3:
|_/ _
\|
____|___
Người chiến thắng
Mỗi giải pháp phải đăng kết quả đầu ra của chương trình yêu thích của lập trình viên với đầu vào [10,40]
, cùng với mã nguồn của họ. Ngoài ra, TẤT CẢ các tiêu chí trên phải được đáp ứng để đủ điều kiện.
Người chiến thắng sẽ là vòng loại có số phiếu bầu cao nhất.
Chúc may mắn và trồng cây vui vẻ !!!