Extracción segura de valores de una cadena de opcionales

Swift Medium optionals

Tarea «Extracción segura de valores de una cadena de opcionales»

Se le da una cadena que contiene números enteros separados por espacios. Algunos números pueden faltar (reemplazados por '?'). Escriba una función que reciba la cadena, la divida en componentes, convierta cada componente en un Int opcional usando Int($0). Si el componente es '?', debe convertirse en nil. Luego, del arreglo de opcionales resultante, se deben extraer y sumar todos los valores que no sean nil, utilizando una cadena compacta de opcionales (por ejemplo, mediante compactMap y reduce). Si después del procesamiento no queda ningún número, devolver nil. De lo contrario, devolver la suma como Int. Datos de entrada: una sola cadena. Datos de salida: un número entero o la cadena "nil".

Formato de entrada

Una sola cadena que contiene números enteros y/o caracteres '?', separados por espacios.

Formato de salida

Un número entero (la suma de todos los números no nulos) o la cadena "nil" si no hay números.

Ejemplos

Ejemplo 1

ENTRADA
3 ? 7 ? 2
SALIDA
12

Ejemplo 2

ENTRADA
? ? ?
SALIDA
nil

Ejemplo 3

ENTRADA
3 cat apple dog
SALIDA
3
main.swift