Nó sẽ nổi?


10

Các thách thức

Cho một chuỗi 2d đại diện cho đáy thuyền làm đầu vào, bạn phải xác định xem thuyền có nổi hay không. Chuỗi 2D này có thể ở bất kỳ định dạng nào thuận tiện nhất. (Chuỗi có dòng mới, danh sách chuỗi, danh sách danh sách ký tự, v.v.) In một giá trị trung thực nếu nó sẽ nổi và giá trị falsey nếu nó bị chìm.

Một chiếc thuyền sẽ lật nếu đáy có mật độ không nhất quán, vì vậy mọi nhân vật đều phải giống nhau. Ngoài ra, nếu một chiếc thuyền có lỗ lớn trong đó, được biểu thị bằng khoảng trắng, nó sẽ chìm, vì vậy thuyền của bạn không có lỗ nào có diện tích lớn hơn 4. Dưới đây là một ví dụ:

########
#   ####
########
#  ## ##
#  #####
########

Thuyền này hợp lệ vì lỗ lớn nhất trong nó có diện tích 4. Thuyền này:

########
########
#     ##
#  #####
########

không hợp lệ vì nó có một lỗ có diện tích 7. Bạn có thể giả định một cách an toàn rằng bên ngoài của mọi đầu vào sẽ là một hình chữ nhật chắc chắn không có lỗ. Dưới đây là một số bài kiểm tra khác:

$$$$$$$$
***$$$$$
***$$$$$
***$$$$$
$$$$$$$$
Invalid density. Sink.

%%%%%%%%
%    % %
%%%%%  %
%    % %
%%%%%%%%
None of the holes are larger than 4. Float.

OOOOOOOO
OOOOOOO 
OOOOOOOO
OOOOOOOO
OOOOOOOO
The outside border is not solid. Undefined.

&&&&&&&&&&&&&
& & & & & & &
&& & & & & &&
& & & & & & &
&& & & & & &&
& & & & & & &
&&&&&&&&&&&&&
Although I would not be comfortable riding in this boat myself, 
none of the holes are larger than 4. It floats.

@@@@@
@   @
@   @
@   @
@@@@@
It sinks.

Quy tắc

  • IO có thể ở bất kỳ định dạng hợp lý.
  • Tiêu chuẩn áp dụng.
  • Câu trả lời ngắn nhất trong byte thắng.
  • Chuỗi đã cho sẽ hoàn toàn bao gồm ASCII có thể in được.

Là gì đáy ? Là gì khung ?
flawr

@flawr Phía dưới là chuỗi bạn lấy làm đầu vào. Các khung là một sự lựa chọn nghèo của từ ngữ mà tôi sẽ sửa ra.
James

Một "chuỗi 2d"? Bạn có nghĩa là một danh sách các chuỗi?
Vụ kiện của Quỹ Monica

Tôi nghĩ rằng &con thuyền tồn tại
l4m2

"Một chiếc thuyền sẽ lật nếu đáy có mật độ không nhất quán, vì vậy mọi nhân vật đều phải giống nhau." Nếu đường viền bên ngoài là một ký tự và bên trong là một ký tự khác thì nó sẽ có mật độ không nhất quán nhưng nó sẽ không vượt qua phải không?
Jerry Jeremiah

Câu trả lời:


3

Matlab, 106 byte

s=input('');im=~(s-32);c=bwconncomp(im,4);disp(~nnz(cellfun(@nnz,c.PixelIdxList)>3)&nnz(unique(s(~im)))<2)

Đầu vào là một ma trận các ký tự, ví dụ cho trường hợp thử nghiệm đầu tiên:

`['$$$$$$$$';'***$$$$$';'***$$$$$';'***$$$$$';'$$$$$$$$']`

Giải trình:

s=input('');           %read input
im=~(s-32);            %convert input to bw image (space = black)
c=bwconncomp(im,4);    %calculate the connected components (4 connectivity)

disp(
     ~nnz(cellfun(@nnz,c.PixelIdxList)>3) %find out whether we have components that have more at least 4 pixels
     &nnz(unique(s(~im)))<2)              %find out if we have more than 1 non-space character
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.