Ce défi est inspiré par les mathématiques est un fait. La programmation ne l'est pas .
La notation mathématique d'un factoriel ou d'un fait est un point d'exclamation !. Le point d'exclamation est également un symbole commun notdans de nombreux langages de programmation.
Défi:
Prenez une chaîne, contenant des chiffres et les caractères: + !comme entrée et sortie les éléments suivants:
Tout ce qui se trouve devant un point d'exclamation devrait être évalué comme une expression mathématique, ce 2+2serait le cas 4.
Tout ce qui se trouve après un seul point d'exclamation doit être ajouté en tant qu'accessoire à tout ce qui se trouve devant, donc: 2+2!5devrait donner 45, car 2+2=4, et 5est un accessoire. 2+2!5+5devrait donner 410.
Puisque !signifie également not, tout ce qui n'est pas un accessoire après coup ne doit pas être ajouté. Donc, 2+2!!5devrait donner 4, car 5n'est pas un accessoire. Maintenant, not(not(true))==trueil 2+2!!!5faut donc donner 45. 2+2!!5!5+5devrait donner:, 410car 2+2=4, puis suivi d'un factoriel et !5!5+5. Le premier 5n'est pas un fait, mais 5+5est après un autre point d'exclamation, et est donc un fait, encore une fois.
Clarifications:
- Les points d'exclamation ne seront pas adjacents à un
+de chaque côté. - Il n'y aura pas de leader
+pour les chiffres (c'est5, non+5). - Vous pouvez éventuellement inclure un zéro de tête si c'est le résultat de l'expression devant le premier
!. Les deux4et04sont acceptés en sortie pour entrée:0+0!4
Résumé analytique: évaluer chaque somme (traiter !comme des séparateurs). Ensuite, jetez tous les nombres qui apparaissent après un nombre pair de !(à compter du début de la chaîne). Retirez ensuite tout !.
Cas de test:
!
<- 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
C'est du code-golf donc le code le plus court en octets (dans chaque langue) gagne! Les explications sont fortement encouragées!
25(voir cas de test ajouté). Plus important 2!!3!5!7encore, donnerait 25, car il y a un nombre pair de !gauche du 7(donc vous ne comptez pas seulement la course juste devant le nombre, mais toute la !gauche).
Row?