La concha del caracol
- O(n²) · Muy difícil
- Plan completo
- Python
- JavaScript
- textos
- ciclos
- índices
Enunciado
La concha del caracol cono crece por el borde, una línea de pigmento a la vez: cada célula nueva se pinta según sus vecinas de la línea de antes, y así salen los triángulos que la decoran. Leilani Kahale, malacóloga, quiere predecir cómo será el borde tras varias generaciones. Escribe una función que reciba fila, un texto de # (célula pintada) y . (sin pintar) con al menos un carácter, y k, un entero de 0 en adelante. En cada generación todas las células cambian al mismo tiempo, mirando la fila anterior: una queda # si exactamente una de sus dos vecinas (la de la izquierda o la de la derecha) era #, y . si eran las dos o ninguna; su propio estado no importa. Fuera de las orillas todo cuenta como .. Regresa la fila, del mismo largo, después de k generaciones; con k igual a 0 regresa la fila tal cual.
Con "...#..." y 3: la primera generación da "..#.#..", la segunda ".#...#." (el centro tenía # a los dos lados) y la tercera "#.#.#.#", así que regresa "#.#.#.#".
Ejemplos
El ejemplo
"...#...", 3 → "#.#.#.#"
Cero generaciones
"..#..", 0 → "..#.."
Una sola célula se apaga
"#", 1 → "."
Toda la fila pintada
"#####", 1 → "#...#"
Empieza en la orilla
"#....", 2 → "#.#.."
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def pinta_borde(fila, k):
passJavaScript
function pintaBorde(fila, k) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.