O valor de uma palavra pode ser determinado somando os valores numéricos de cada caractere individual (excluindo espaços e pontuação): as letras recebem um valor de 1 ("a") a 26 ("z"), enquanto os números têm seus valores literais, de 0 a 9. O valor da frase é a soma dos valores das palavras.
sentence = "ABC ! abc ... @ 123"
# Remove spaces, punctuation and any symbol.
sentence = ["ABC", "abc", "123"]
words values = "ABC" = 1+2+3 = 6 | "abc" = 1+2+3 = 6 | "123" = 1+2+3 = 6
sentence value = 6 + 6 + 6 = 18Dada uma string sentence, implemente uma função que retorne:
Prime Sentence se o valor original da frase for primo.
Almost Prime Sentence (xxx) se o valor da frase não for primo, mas, após a remoção de uma única palavra, o novo valor for primo (consulte o exemplo #2 para uma explicação mais clara), sendo xxx a palavra removida. Se mais de uma palavra puder ser removida para obter um valor primo, retorne a primeira encontrada na frase original.
Composite Sentence se o valor da frase não for primo e for necessário remover mais de uma palavra para que o novo valor da frase seja primo (ou se isso não for possível).
Os valores das letras não diferenciam maiúsculas de minúsculas ("aZ" = "Az" = 1 + 26 = 27), enquanto os números são tratados como palavras ("123" = 1+2+3 = 6).
sentence_primeness("Help me!") ➞ "Prime Sentence"
# "Help" + "me" = 41 + 18 = 59 (prime)
sentence_primeness("42 is THE aNsWeR...") ➞ "Almost Prime Sentence (aNsWeR)"
# "42" + "is" + "THE" + "aNsWeR" = 6 + 28 + 33 + 80 = 147 (not prime)
# Without "42" new value is 141
# Without "is" new value is 119
# Without "THE" new value is 114
# Without "aNsWeR" new value is 67 (prime!)
# If the word "aNsWeR" is removed from sentence the new value is a prime.
sentence_primeness("Did you smoke?") ➞ "Composite Sentence"
# "Did" + "you" + "smoke" = 17 + 61 + 63 = 141 (not prime)
# Without "Did" new value is 124
# Without "you" new value is 80
# Without "smoke" new value is 78
# No single removals make the new sentence value a prime.