Esta es mi cabeza:
\ /-- -|
/ -\ | | |
\ \ \ \ |
--\ | \ | |
/ |--| / / |
/|- //--| / |
| | || //\ |
| \ /| // \ |
Se compone de exactamente ocho pelos. Mi pelo es demasiado largo. Corte cada hebra individual a la longitud que especifique.
Entrada
La atracción principal en esta sección es el cabello real. Aquí hay una representación gráfica codificada por colores, junto con una animación , para los perezosos:
Y aquí hay una especificación completa de lo que es un conjunto de pelos:
- Los pelos individuales, que llamaremos hebras , se pueden hacer fuera de las
/
,\
,|
, y-
caracteres ASCII, de ahora en adelante conocido como átomos . - La cabeza de audición completa (todos los hilos combinados) serán
c
columnas porr
filas, dondec
≥ 1 yr
≥ 2. - Cada hebra ...
- comience en la última fila de la cabeza (fila
r
- 1). - tener una longitud
l
dondel
≥ 2.
- comience en la última fila de la cabeza (fila
- Los hilos se pueden analizar con el siguiente método:
- Comience en la parte inferior del hilo. Esto será un
/
,|
o\
átomo, que llamaremos la raíz . (Los hilos se analizan de izquierda a derecha, ordenados por la raíz). - Encuentra el átomo que apunta hacia la raíz.
- Un
|
átomo apunta hacia arriba y hacia abajo. Un-
átomo apunta a izquierda y derecha (pero nunca puede apuntar a la raíz ya que solo las raíces pueden estar en la fila inferior). Un/
átomo apunta hacia la izquierda hacia abajo y hacia la derecha, y un\
átomo hace lo contrario. - Siempre habrá exactamente un átomo que apunte hacia el átomo raíz.
- Un
- Encuentre un átomo no utilizado (uno que aún no sea parte de ninguna hebra) que apunte hacia este átomo y que tampoco esté debajo de este átomo (el cabello no puede crecer hacia abajo, pero de lado está bien).
- Si hay cero, ¡has llegado al final del hilo!
- Si hay uno, este es el siguiente átomo de la cadena. Repita el paso 3 con este átomo. (Este átomo ahora está marcado como "usado" para los fines del paso 3, ya que es parte de un filamento).
- Nunca habrá múltiples átomos no utilizados aquí en ningún punto de la cabeza.
- Comience en la parte inferior del hilo. Esto será un
El formato de entrada será:
- Una cabellera. Se puede ingresar como está (entrada multilínea con nuevas líneas literales), o con un delimitador de su elección en lugar de nuevas líneas. Tenga en cuenta que la cabeza siempre será un rectángulo; es decir, se agregará espacio en blanco al final según sea necesario (el extraño cabello en línea recta a la derecha es solo para eliminar el espacio en blanco adicional para evitar confusiones).
- Un número ≥ 1 que especifica cuánto pelo cortar. Esto se describirá en detalle en la siguiente sección.
Puede aceptar la entrada a una función, usar STDIN / STDOUT, etc. (cualquier cosa razonable ).
Salida
Su salida será la cabeza del cabello con el corte de pelo aplicado. Para realizar un corte de pelo, simplemente reduzca la longitud de cada mechón de cabello en la cantidad especificada (que siempre será 1 o mayor), comenzando desde el punto final del cabello que se mueve hacia la raíz. Sin embargo, ¡ siempre deja la raíz intacta!
Aquí hay un ejemplo simple. Digamos que la entrada para la cabeza es
\
/
|
|
Con una segunda entrada de 2
, cortarías dos átomos de la cadena y obtendrías un resultado de
|
|
Y con una entrada de 42
, la salida sería
|
Tenga en cuenta que los espacios en blanco antes y después de la cabeza son completamente irrelevantes; puede recortar nuevas líneas adicionales o puede agregar más relleno. No importa, siempre y cuando la cabeza permanezca intacta. (También puede hacer lo que quiera con espacios en blanco al final).
Casos de prueba
Para todos los casos de prueba, se utilizará el ejemplo presentado al comienzo de esta publicación.
Longitud de corte de pelo = 1:
/- |
/ \ | |
\ \ \ \ |
--\ | \ | |
/ |-- / / |
|- //--| / |
| | || // |
| \ /| // \ |
Longitud de 3:
|
\ |
--\ | \ |
/ |-- / / |
|- // | / |
| || // |
| \ /| // \ |
Longitud de 7:
|- / |
| | / |
| \ /| // \ |
Longitud de 1337:
| \ /| // \ |
Puntuación
Este es el código de golf , por lo que el código más corto en bytes ganará
-
en el tercer filamento desde los puntos izquierdos en el cuarto fila desde la |
izquierda
-
, no es lo que apunta . Por ejemplo, el |
no apunta a /
en el primer capítulo, pero es señalado por el /
. (Sí, sé que es confuso; ¡tuve que rehacer el GIF varias veces porque incluso me confundí a mí mismo!) Una forma más fácil de entender esto podría ser simplemente mirar la parte superior del segundo capítulo.
-
deberían unirse al cuarto capítulo, no al tercero.