Yo estoy resolviendo los ejercicios con Lua 5.4 actualmente, por lo que las soluciones estarán explicadas sobre ese lenguaje de programación.
Parte 1
Para resolver este ejercicio se necesita iterar a través de cada línea de la entrada del rompecabezas.
En cada iteración hay que buscar 2 números, lo que yo hice fue buscar el primer dígito buscando caracter
por caracter de izquierda a derecha, y luego el segundo dígito buscando caracter por caracter de derecha a izquierda.
Dicho esto, comenzamos declarando una función que obtenga la entrada del rompecabezas y convierta cada línea
en un elemento de un array.
Ahora solo se realiza la busca de los números de una línea para eso declaro una función foundCalibrationValue()
Ahora solo se itera por cada línea y se suman los números
Parte 2
En la parte dos nos piden encontrar además de digitos números escritos, a esto solo le agregamos una condición a la función foundCalibrationValue para indicar que busque también esos números.
Para lograr esto, lo que pensé fue simplemente agregar los dígitos en caso de existir un número en palabra, debido a que los números se mezclan entre sí, para evitar inconvenientes se puede duplicar la palabra e insertar el dígito
en medio, por ejemplo, si se encuentra la palabra “one”, cambiar esa palabra por “one1one” y se aplicaría luego lo mismo que la primera parte.
Listo, ya solo adaptamos la solución 1 agregando false a la función y creamos la función para obtener la segunda parte.