它会漂浮吗?


10

挑战

给定代表船只底部的2d字符串作为输入,您必须确定船只是否会漂浮。该2D字符串可以采用最方便的任何格式。(带换行符的字符串,字符串列表,字符列表列表等。)如果真值浮动,则打印真实值,如果不正确,则打印假值。

如果底部的密度不一致,则船将翻倒,因此,每个字符都必须相同。另外,如果船上有大洞(用空格表示),它将下沉,因此您的船上不得有面积大于4的洞。这是一个示例:

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

这艘船是有效的,因为其中最大的孔的面积为4。这艘船:

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

无效,因为它有一个面积为7的孔。您可以放心地假设每个输入的外部都是没有孔的实心矩形。这是更多测试:

$$$$$$$$
***$$$$$
***$$$$$
***$$$$$
$$$$$$$$
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.

规则

  • IO可以采用任何合理的格式。
  • 有标准漏洞。
  • 以字节为单位的最短答案将获胜。
  • 给定的字符串将完全由可打印的ASCII组成。

底部是什么?什么是镜框
瑕疵的2016年

@flawr 底部是您作为输入的字符串。该框架是措辞,我将编辑出一个糟糕的选择。
詹姆斯

一个“二维字符串”?您的意思是字符串列表?
Fund Monica的诉讼

我认为&这条船存在
l4m2

“如果船底的密度不一致,船会翻倒,因此船的每个字符都必须相同。” 如果外部边框是一个字符而内部边框是另一个字符,则密度会不一致,但是不会翻倒吗?
杰里·耶利米

Answers:


3

Matlab,106个字节

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

输入是字符矩阵,例如对于第一个测试用例:

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

说明:

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.