En terminología de montañismo, un "14er" es cualquier montaña con una elevación de 14 000 pies o más. Sin embargo, hay otra distinción. Para que un pico cuente como un 14er, también debe tener una "prominencia geográfica" de 300 o más pies. Esto significa que para pasar de un 14er a otro, primero debe descender al menos 300 pies antes de volver a subir. Toma este ejemplo. La línea 1 cuenta como 14 000 pies, y cada línea cuenta como 100 pies.
/\__/\
/ \
/ \
Ahora, ambos picos tienen suficiente elevación para contar, pero no hay suficiente caída en la elevación entre ellos para contar como dos picos separados. Por lo tanto, uno de estos cuenta como un 14er, y el otro es solo un "pico parcial". Aquí hay un ejemplo donde los dos picos cuentan como dos 14er separados:
/\ /\
/ \ / \
/ \/ \
/ \
También puede haber un pico parcial en la disminución entre dos 14ers. Aquí hay una versión ligeramente modificada de la última cordillera:
/\ /\
/ \/\ / \
/ \/ \
/ \
Esta cordillera también cuenta como dos 14ers.
Debe escribir un programa o función que tome una representación ascii-art de una cordillera y devolver cuántos 14ers hay en la cordillera. Puede tomar la entrada en el formato que sea más conveniente para usted, ya sea una matriz 2D de caracteres, una cadena con nueva línea o una cadena con algún otro delimitador. Puede suponer que todas las entradas solo contendrán los caracteres /\_
y que la longitud de cada línea será la misma (incluidos los espacios finales). También puede suponer que la cordillera comienza en la esquina inferior izquierda con a /
o a _
.
Si la última sección de una montaña no está en la línea de fondo, puede suponer que la montaña solo disminuye después de eso, p. Ej.
/
/
/
Cuenta como un solo 14er.
No tiene que manejar cadenas montañosas inválidas.
Aquí hay algunos ejemplos de E / S:
/\___/\_
/ \ /\
/ \ / \
_/\/ \/ \
/ \
/ \
/ \_
2
/\ /\
/\ / \ /
/\ / \ / \/
/ \ / \ /
/ \/ \/
4
/\
_/\__/ \
/ \
1
/\
/ \ /\
/ \_/ \
/ \
/ \
/ \
/ \
1
/\
/\_/\ / \_
/ \ / \ /\
/ \/ \ /
/ \_/
/
3
_
cuenta como 100 pies más bajo que un corte en la misma línea. Al menos eso es lo que sugiere su último caso de prueba./ / / _ \ \ \
? Además, supongo que el punto más alto en la entrada siempre debe contarse como un pico, pero esto no se especifica explícitamente; uno podría comenzar en un pico más bajo y terminar con un conteo diferente.Respuestas:
JavaScript (ES6), 133 bytes
Explicación
Dado que las especificaciones no se establecen claramente, esto hace un par de suposiciones:
Itera sobre el carácter
c
de cada columna (específicamente, itera hacia abajo cada columna hasta que encuentra un carácter). La altitud actual se almacena ena
. Se sujeta a un mínimo de0
y un máximo de3
. La dirección necesaria para moverse para contar el siguiente pico se almacena end
(false
= arriba,true
= abajo). Sia
alcanza3
yd
esfalse
, el número de picosp
se incrementa yd
se establece entrue
(abajo). Una vez quea
alcanza0
,d
se establece de nuevo afalse
(arriba).fuente
C, 174 bytes
Requiere una nueva línea final en la entrada, de lo contrario +4 bytes.
fuente
JavaScript (ES6), 154 bytes
Donde
\n
representa el carácter de nueva línea literal. Sin golf:fuente