Esse desafio é inspirado na matemática, é fato. Programação não é .
A notação matemática para um fatorial ou um fato é um ponto de exclamação !. O ponto de exclamação também é um símbolo comum notem muitas linguagens de programação.
Desafio:
Pegue uma sequência, contendo números e os caracteres: + !como entrada e saída, o seguinte:
Tudo na frente de um ponto de exclamação deve ser avaliado como uma expressão matemática, assim 2+2seria 4.
Tudo depois de um único ponto de exclamação deve ser anexado como acessório ao que estiver à sua frente, portanto: 2+2!5deve fornecer 45, porque 2+2=4e 5é um acessório. 2+2!5+5deve dar 410.
Como !também significa not, qualquer coisa que não seja um acessório após o fato não deve ser anexada. Então, 2+2!!5deve dar 4, já que 5não é um acessório. Agora, not(not(true))==trueentão 2+2!!!5deve dar 45. 2+2!!5!5+5deve dar:, 410porque 2+2=4, então seguido por um fatorial e !5!5+5. O primeiro 5não é um fato, mas 5+5está atrás de outro ponto de exclamação e, portanto, é um fato, mais uma vez.
Esclarecimentos:
- Os pontos de exclamação não serão adjacentes a um
+dos lados. - Não será levando
+para os números (é5, não+5). - Opcionalmente, você pode incluir um zero à esquerda se esse for o resultado da expressão antes do primeiro
!. Ambos4e04saída aceita para entrada:0+0!4
Resumo executivo: avalie cada soma (tratando !como separadores). Em seguida, descarte todos os números que aparecerem após um número par de !(contados desde o início da sequência). Depois remova tudo !.
Casos de teste:
!
<- Empty string
5
5
12!
12
!87
87
!!5
<- Empty string
5+5!2+2
104
5+5!!2+2
10
1!2!3!4!5!6!7!8!9
12468
10+10!!2+2!!3+3!4+4
208
2!!3!5
25
2!!3!5!7
25
10!!!!!!!5
105
Isso é código-golfe, e o código mais curto em bytes (em cada idioma) vence! As explicações são fortemente encorajadas!
25(veja o caso de teste adicionado). Mais importante 2!!3!5!7ainda daria 25, porque existe um número par de !esquerdas do 7(para que você não conte apenas a corrida na frente do número, mas toda a !esquerda dele).
Row?