Sua tarefa é encontrar o comprimento da costa de um mapa de ilhas fornecido em um mapa ASCII. O mapa de entrada será composto por 1 ou mais #
caracteres que indicam terra e espaços que indicam água. O litoral é considerado qualquer margem entre a terra e a água, incluindo lagos e ilhas do interior.
Sua solução deve ser um programa completo que leia um arquivo, uma string ou uma matriz de strings e produza um único inteiro na tela ou no stdout. Cada linha de entrada pode ter espaço à esquerda ou à direita e zero ou mais caracteres hash. As bordas do mapa são assumidas como espaço (água).
As linhas podem ter comprimentos diferentes.
Exemplos:
Input:
##
##
Output: 8
Input:
### ###
##### #
##
Output: 26
Input:
#####
# #
# # #
# #
#####
Output: 36
Isso é código de golfe, portanto, a menor contagem de bytes vence.
Respostas:
Caracóis , 8 bytes
A
A
opção significa contar todos os caminhos correspondentes em vez de quais pontos de partida os resultados são bem-sucedidos.\#
consome a#
,o
vira na direção cardinal e!\#
é uma afirmação negativa que obtém sucesso se não houver uma#
na nossa frente.fonte
Pitão -
2523 bytesPrimeiro, a entrada é retificada. Em seguida, conta as ocorrências
" #"
acima das 4 permutações de transposições e reversões da entrada + espaço.Experimente online aqui .
fonte
ES6,
123115114 bytesEditar: salvou 9 bytes graças a @ edc65.
fonte
a=>['',...a,''].map((s,i,a)=>s.replace(/#/g,(_,j)=>r+=(s[j-1]!=_)+(s[j+1]!=_)+(a[i-1][j]!=_)+(a[i+1][j]!=_)),r=0)|r
a=>a.map((s,i)=>s.replace(/#/g,(_,j)=>r+=(s[j-1]!=_)+(s[j+1]!=_)+((a[i-1]||'')[j]!=_)+((a[i+1]||'')[j]!=_)),r=0)|r
MATL , 42 bytes
Isso aceita a entrada como uma matriz de células de cadeias, no formato
Primeiro, converte a entrada em uma matriz de caracteres 2D, preenchendo espaços, e depois em uma matriz de zeros e uns. A convolução 2D é aplicada duas vezes, com duas máscaras diferentes: primeiro para expandir a matriz, depois para detectar arestas.
Experimente online!
fonte
Japonês,
2219 bytesAssume que a entrada é preenchida com espaços para formar um retângulo. Teste online!
Como funciona
fonte