Extração segura de valor de uma cadeia de opcionais

Swift Medium optionals

Tarefa «Extração segura de valor de uma cadeia de opcionais»

Você recebe uma string contendo números inteiros separados por espaços. Alguns números podem estar ausentes (substituídos por '?'). Escreva uma função que receba uma string, a divida em componentes, converta cada componente em um Int opcional usando Int($0). Se o componente for igual a '?', ele deve ser convertido para nil. Em seguida, a partir do array de opcionais obtido, é necessário extrair e somar todos os valores que não são nil, usando uma cadeia compacta de opcionais (por exemplo, através de compactMap e reduce). Se após o processamento não restar nenhum número, retornar nil. Caso contrário, retornar a soma como Int. Dados de entrada: uma string. Dados de saída: um número inteiro ou a string "nil".

Formato de Entrada

Uma string contendo números inteiros e/ou caracteres '?' separados por espaços.

Formato de Saída

Número inteiro (soma de todos os números diferentes de nil) ou a string "nil" se não houver números.

Exemplos

Exemplo 1

ENTRADA
3 ? 7 ? 2
SAÍDA
12

Exemplo 2

ENTRADA
? ? ?
SAÍDA
nil

Exemplo 3

ENTRADA
3 cat apple dog
SAÍDA
3
main.swift