Alice là một thực tập sinh trong một công ty sử dụng Brainfuck làm ngôn ngữ chính cho cả phát triển phía máy khách và phía máy chủ. Alice vừa mới viết mã đầu tiên của mình và cô ấy hơi lo lắng khi cô ấy đã sẵn sàng cho lần đánh giá mã đầu tiên của mình.
Alice muốn làm cho mã của mình được định dạng đúng và trông đẹp mắt, nhưng cô ấy không có thời gian để đọc hướng dẫn về kiểu mã công ty gồm 328 trang, vì vậy cô ấy đã quyết định định dạng nó như một hình vuông hoàn hảo . Than ôi, chiều dài mã có thể không đủ để tạo thành một hình vuông, vì vậy cô quyết định để lại một khoảng trống hình chữ nhật ở giữa. Khoảng trống phải được căn giữa hoàn hảo và càng gần hình vuông càng tốt.
Ví dụ
++++++ +++++ +++++ +++++ +++++ +++++
++++++ +++++ +++++ + ++ ++ ++ +++++
++++++ ++ ++ + + + ++ + +
++++++ +++++ +++++ +++++ ++ ++ +++++
++++++ +++++ +++++ +++++ +++++ +++++
Perfect OK Acceptable Unacceptable No way! Nope.
Viết một chương trình hoặc một chức năng để giúp Alice. Cho mã của Alice là một chuỗi đầu vào, đầu ra mã được định dạng chính xác như được mô tả dưới đây nếu có thể. Nếu định dạng là không thể, xuất biểu tượng cảm xúc khóc :~(
.
Đây là môn đánh gôn để các câu trả lời được tính theo byte với ít byte hơn là mục tiêu.
Những ràng buộc
- Chương trình hoặc hàm của bạn nên lấy một chuỗi đơn làm đầu vào và đầu ra một hoặc nhiều dòng văn bản (hoặc trả về chuỗi nhiều dòng hoặc mảng chuỗi, nếu bạn triển khai một hàm).
- Chuỗi đầu vào có thể chứa bất kỳ ký tự ASCII nào kể cả khoảng trắng.
- Tất cả các khoảng trắng trong đầu vào phải được bỏ qua. Chúng không nên tính chiều dài mã và chúng không nên được sử dụng trong đầu ra.
- Chuỗi đầu vào chứa ít nhất một ký tự không phải khoảng trắng.
- Mã được định dạng phải có cùng các ký tự không phải khoảng trắng theo cùng thứ tự như trong mã đầu vào.
- Mã được định dạng phải là một hình vuông hoàn hảo, tức là tất cả các dòng phải có cùng độ dài và số dòng phải bằng với độ dài của các dòng.
- Mã được định dạng có thể chứa một khoảng trống ở giữa.
- Chỉ các ký tự khoảng trắng (mã ASCII 32) có thể được sử dụng trong khoảng trống.
- Khoảng trống (nếu có) phải là hình chữ nhật.
- Mỗi dòng mã được định dạng phải chứa ít nhất một ký tự không phải khoảng trắng, nghĩa là chiều rộng khoảng cách phải nhỏ hơn chiều rộng hình vuông (khoảng cách 5x1 không được chấp nhận cho hình vuông 5x5).
- Khoảng cách nên nằm ngang, tức là chiều rộng khoảng cách nên lớn hơn hoặc bằng chiều cao khoảng cách.
- Khoảng cách phải được tập trung hoàn hảo.
- Do đó, khoảng cách giữa chiều rộng và chiều cao phải bằng với độ rộng của hình vuông (ví dụ: khoảng cách hình vuông 5x5 có thể là 1x1, 3x1 hoặc 3x3).
- Nếu có thể, đầu ra vuông không có khoảng cách nào cả.
- Trong trường hợp có nhiều giải pháp, hãy chọn một giải pháp có khoảng cách gần nhất với hình vuông, nghĩa là sự khác biệt giữa chiều rộng khoảng cách và chiều cao khoảng cách là tối thiểu (ví dụ: khoảng cách 10x10 thích hợp hơn so với 8x6 và 8x6 thích hợp hơn 6x2).
- Nếu vẫn có một cà vạt, hãy chọn giải pháp có diện tích khoảng cách tối thiểu (ví dụ: khoảng cách 2x2 được ưu tiên hơn so với 4x4).
- Nếu không thể định dạng mã ở tất cả, đầu ra
:~(
. - Dòng mới sau dòng cuối cùng là tùy chọn.
- [Mới] Bạn có thể cho rằng một cách an toàn rằng bất kỳ ký tự nào có mã dưới 33 là khoảng trắng. Tôi hy vọng nó sẽ giúp bạn chơi golf.
Xét nghiệm
Input Output Code length Comment
+++++++++ +++ 9 Alice is lucky,
+++ her code perfectly fits a square.
+++
++++++++ +++ 8 Though code length isn't enough for a square,
+ + a small gap fixes it.
+++
++++++ :~( 6 No luck, code cannot be formatted.
Hello, Hell 12 Input may contain any ASCII characters,
World! o , but whitespaces in input should be ignored.
W o
rld!
+++++ + +++++ +++++ 22 Gap is not required to be a square,
+++++ + +++++ +++++ it can be a rectangle.
+ +
+++++
+++++
+++ + +++ ++++++++ 28 There exists another solution:
+++ + +++ + + 6x6 square with 4x2 gap,
+++ + +++ + + but in Alice's opinion square gap
+++ + +++ + + makes code more readable.
+ +
+ +
+ +
++++++++
Trắc nghiệm
This must be Thism 24 7x7 with 5x5 gap looks good,
5x5 with 1x1 ustbe but 5x5 with 1x1 gap is better,
gap. 5x 5w because gap area is smaller.
ith1x
1gap.
+++ +++ +++ :~( 18 In case you tried 5x5 square
+++ +++ +++ with 7x1 gap ;)
Tài nguyên
Để tiết kiệm dung lượng, bạn có thể tìm mã mẫu và các trường hợp thử nghiệm bổ sung trên tio.run
[Mới] Bạn có thể xem bảng các giải pháp được chấp nhận cho đầu vào tối đa 100 ký tự . Tôi hoán đổi chiều rộng và chiều cao bởi vì nó có vẻ trực quan hơn.
Lấy cảm hứng từ: Một hình vuông của văn bản
Thay đổi
Đã thêm 2 bài kiểm tra, sửa lỗi trong mã mẫu.
Đã thêm bảng giải pháp lên tới 100, thêm vào làm rõ khoảng trắng.