부유할까요?


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로 구성됩니다.

바닥 은 무엇입니까 ? 프레임 은 무엇입니까 ?
flawr

@flawr 맨 아래 는 입력으로 사용하는 문자열입니다. 프레임은 내가 밖으로 편집 것을 표현의 빈약 한 선택입니다.
제임스

"2d 문자열"? 문자열 목록을 의미합니까?
기금 모니카의 소송

나는 생각 &보트가 존재
l4m2

"바닥에 밀도가 일치하지 않으면 보트가 뒤집 히므로 모든 특성이 동일해야합니다." 외부 경계가 한 문자이고 내부가 다른 문자라면 밀도가 일치하지 않지만 넘어지지는 않습니까?
Jerry Jeremiah

답변:


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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.