Su tarea es encontrar la longitud de la costa de un mapa de islas provisto en un mapa ASCII. El mapa de entrada constará de 1 o más #
caracteres que indican tierra y espacios que indican agua. Se considera que la costa es cualquier borde entre la tierra y el agua, incluidos los lagos interiores y las islas.
Su solución debe ser un programa completo que lea en un archivo, una cadena o una matriz de cadenas, y genere un solo entero en la pantalla o stdout. Cada línea de entrada puede tener espacio inicial o final, y cero o más caracteres hash. Se supone que los bordes del mapa son espacio (agua).
Las líneas pueden ser de diferentes longitudes.
Ejemplos:
Input:
##
##
Output: 8
Input:
### ###
##### #
##
Output: 26
Input:
#####
# #
# # #
# #
#####
Output: 36
Este es el código de golf, por lo que gana el conteo de bytes más pequeño.
Respuestas:
Caracoles , 8 bytes
La
A
opción significa contar todas las rutas coincidentes en lugar de los puntos de partida desde los que una coincidencia tiene éxito.\#
consume a#
,o
gira en una dirección cardinal y!\#
es una afirmación negativa que tiene éxito si no hay una#
frente a nosotros.fuente
Pyth -
2523 bytesPrimero rellena la entrada a un rect. Luego cuenta las ocurrencias de
" #"
más de 4 permutaciones de transposiciones y reversiones de la entrada + espacio.Pruébelo en línea aquí .
fuente
ES6,
123115114 bytesEditar: Guardado 9 bytes gracias a @ edc65.
fuente
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
Esto acepta la entrada como una matriz de celdas de cadenas, de la forma
Primero convierte la entrada en una matriz de caracteres 2D, rellena con espacios, y luego en una matriz de ceros y unos. La convolución 2D se aplica dos veces, con dos máscaras diferentes: primero para expandir la matriz, segundo para detectar bordes.
Pruébalo en línea!
fuente
Japt,
2219 bytesAsume que la entrada se rellena con espacios para formar un rectángulo. ¡Pruébalo en línea!
Cómo funciona
fuente