O desafio
Dada uma sequência 2D que representa o fundo de um barco como uma entrada, você deve determinar se o barco irá ou não flutuar. Essa sequência 2D pode estar no formato que for mais conveniente. (Cadeia de caracteres com novas linhas, lista de cadeias, lista de caracteres, etc.) Imprima um valor verdadeiro, se ele flutuar, e um valor falsey, se afundar.
Um barco tombará se o fundo tiver uma densidade inconsistente; portanto, cada caractere deve ser o mesmo. Além disso, se um barco tiver orifícios grandes, representados por espaços, afundará, portanto, ele não deverá ter orifícios com área maior que 4. Aqui está um exemplo:
########
# ####
########
# ## ##
# #####
########
Este barco é válido porque o maior orifício possui uma área de 4. Este barco:
########
########
# ##
# #####
########
é inválido porque possui um orifício com uma área de 7. Você pode assumir com segurança que a parte externa de cada entrada será um retângulo sólido sem orifícios. Aqui estão mais alguns testes:
$$$$$$$$
***$$$$$
***$$$$$
***$$$$$
$$$$$$$$
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.
Regras
- O IO pode estar em qualquer formato razoável.
- Aplicam-se brechas padrão.
- A resposta mais curta em bytes vence.
- A sequência fornecida consistirá inteiramente em ASCII imprimível.
fonte
&
barco existeRespostas:
Matlab, 106 bytes
A entrada é uma matriz de caracteres, por exemplo, para o primeiro caso de teste:
Explicação:
fonte