Giả sử lưới không gian này và X
's đại diện cho mặt cắt ngang của một số khay đá rỗng có hình dạng kỳ lạ :
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Các cột không có X
lỗ đại diện cho các lỗ hoặc khoảng trống trong các khay không thể chứa nước, chảy vào một bể chứa dung lượng vô hạn. Nước rơi ra từ rìa ngoài cùng bên phải hoặc bên phải của lưới cũng đi vào bồn rửa vô tận này.
Nếu chúng ta đặt một vòi bên trên các khay và để chúng đổ đầy nước cho đến khi mực nước trong tất cả các ngăn vẫn ổn định, các ngăn chính xác được đổ đầy sẽ phụ thuộc vào chính xác vị trí của dòng nước bên trên các khay. (Giả sử một dòng nước mỏng, đều đặn mà không bị bắn tung tóe.)
Ví dụ: nếu vòi của chúng tôi F
ở trên cột lưới bên trái
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
nước sẽ rơi xuống đỉnh cao nhất X
trong cột đó và lan sang trái và phải, nửa bên trái tràn vào bồn rửa bên dưới và nửa bên phải lấp đầy khoang 2 × 1. Khi khoang chứa đầy, một nửa dòng nước bên phải không có nơi nào chảy nhưng vào bồn và mực nước ở mọi nơi về cơ bản là ổn định.
Tắt vòi, khay bây giờ trông như thế này: (với ~
nước)
X X X
X~~X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Tương tự, nếu chúng ta định vị vòi như thế này:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Nó sẽ lấp đầy hai ngăn ngoài cùng bên trái nhưng phần còn lại của nước sẽ chảy ra:
X X X
X~~X~X XX X XX X
XXXXXX XXXXXXXXXXXXX
Nếu chúng ta định vị vòi như thế này:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Nửa bên trái của dòng chảy sẽ chảy vào bồn nhưng nửa bên phải cuối cùng sẽ lấp đầy ba khoang ngoài cùng bên phải vì không có giới hạn về việc nước có thể di chuyển theo chiều ngang trên một mặt phẳng:
X X~X
X X X XX~X~~XX~~~X
XXXXXX XXXXXXXXXXXXX
Định vị như thế này, tuy nhiên:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Tất cả các nước thoát ra và không có ngăn chứa đầy:
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Thử thách
Viết chương trình hoặc hàm có trong một lưới hình chữ nhật gồm các khoảng trắng X
, và một F
. Hàng trên cùng sẽ luôn chứa F
và nếu không chỉ chứa khoảng trắng. Các X
cột trong mỗi cột (nếu có) sẽ kéo dài thành một đường liền mạch từ gốc của lưới, tức là sẽ không có hang hoặc phần nhô ra.
In hoặc trả lại lưới sau khi vòi F
đã đổ đầy nước có thể ~
như mô tả ở trên. Để hàng trên cùng F
ra khỏi đầu ra.
Lưới ngoài hàng vòi sẽ tối thiểu 1 × 1
F X
là đầu vào nhỏ nhất bạn cần hỗ trợ.
Các đầu vào sẽ đi vào như một hình chữ nhật văn bản hoàn chỉnh. Không gian hàng đầu và dấu làm quan trọng trong đầu vào và đầu ra. ví dụ đầu vào
F X X XXXX
nên dẫn đến
X~~X XXXX
(lưu ý các không gian hàng đầu và dấu)
Có một dòng mới duy nhất trong đầu vào hoặc đầu ra là tốt.
Bạn có thể sử dụng bất kỳ bốn biệt ASCII in ký tự ở vị trí của không gian,
X
,F
,~
.
Mã ngắn nhất tính bằng byte thắng.
Ví dụ lớn:
Đầu vào:
F
X X
X X X
X XXX X X X X X
X X XXXXXXX X XXX XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
Đầu ra:
X~~~~~~~~~~~~~X
X~~~~~~~~~~~~~X~X
X~~~~~~~~~~~~XXX~~~~~~~X~~~~X~X~~~~~~~~~~~X X
X~~~X~~~~~XXXXXXX~~~~~~X~~~~XXX~~~~~XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
zip()
<3