Этот вызов вдохновлен математикой является фактом. Программирование нет .
Математическая запись факториала или факта - восклицательный знак !. Восклицательный знак также является общим символом для notмногих языков программирования.
Вызов:
Возьмите строку, содержащую цифры и символы: в + !качестве ввода и вывода:
Все перед восклицательным знаком следует оценивать как математическое выражение, так 2+2будет 4.
Все, что после одного восклицательного знака, должно быть добавлено в качестве аксессуаров к тому, что находится перед ним, а значит: 2+2!5должно давать 45, потому что 2+2=4и 5является аксессуаром. 2+2!5+5должен дать 410.
Поскольку !также означает not, что все, что не является аксессуаром после факта, не должно быть добавлено. Итак, 2+2!!5следует дать 4, так как 5это не аксессуар. Теперь not(not(true))==trueтак 2+2!!!5следует дать 45. 2+2!!5!5+5должен дать:, 410потому что 2+2=4затем следует факториал и !5!5+5. Первый 5не факт, но 5+5после другого восклицательного знака, и поэтому факт, еще раз.
Разъяснения:
- Восклицательные знаки не будут соседствовать с
+любой из сторон. - Там не будет ведущих
+для чисел (это5не так+5). - При желании вы можете включить ведущий ноль, если это результат выражения перед первым
!. Оба4и04принимаются к выводу:0+0!4
Резюме: оцените каждую сумму (рассматривая !как разделители). Затем отбросьте все числа, которые появляются после четного числа !(считая от начала строки). Тогда удали все !.
Тестовые случаи:
!
<- 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
Это код-гольф, поэтому выигрывает самый короткий код в байтах (на каждом языке)! Пояснения настоятельно рекомендуется!
25(см. добавленный контрольный пример). Что еще важнее, 2!!3!5!7все равно даст 25, потому что есть четное число !слева от 7(так что вы не просто посчитаете пробег прямо перед номером, но все !слева от него).
Row?