Эта задача является первой в серии из двух задач о повторении. Второй скоро будет.
В языке под названием «Повторение» (то, что я только что придумал), есть бесконечная цепочка 12345678901234567890...
, 1234567890
повторяющаяся вечно.
Следующий синтаксис доступен для выходных чисел:
+-*/
: Вставляет оператор в строку повторяющихся цифр.- Примеры:
+
->1+2
=3
(+
вставляет+
между1
и2
)+*
->1+2*3
=1+6
=7
(То же, что и выше, за исключением того, что сейчас используются два оператора)/
->1/2
=0
(Повторение использует целочисленное деление)//
->1/2/3
=0/3
=0
(Повторение использует «левую ассоциацию» с несколькими вычитаниями и делениями)
- Каждый оператор вставляется так, что слева от него стоит одна цифра, если только нет
c
(см. Ниже).
- Примеры:
c
: Объединяется со следующей цифрой в строке.- Примеры:
c+
->12+3
=15
(c
«продолжает»1
и объединяет его со следующей цифрой2
, чтобы сформировать12
)+c
->1+23
=24
ccc
->1234
- Примеры:
()
: Скобки для обработки номеров.- Примеры:
(c+)*
->(12+3)*4
=15*4
=60
(Повторение использует порядок операций)(c+)/c
->(12+3)/45
=15/45
=0
(cc+c)/
->(123+45)/6
=168/6
=28
- Примеры:
s
: Пропустить число (удаляет число из бесконечной строки).s+
->2+3
=5
(s
пропускает1
)csc
->124
(Первыеc
concats1
и2
, вs
скачет3
, а окончательныйc
concats12
к4
)+s+
->7
(Первый+
добавляет1
и2
сделать3
,s
скачет3
, а окончательный+
добавляет3
к4
делать7
)cs*(++)
->12*(4+5+6)
=12*15
=180
В приведенных выше примерах используется только конечное количество цифр в бесконечной строке. Количество используемых цифр эквивалентно number of operators, concats and skips + 1
.
Ваша задача при выдаче строки кода повторения вывести результат.
Примеры ввода и вывода:
++ -> 6
- -> -1
(-)* -> -3
cscc -> 1245
(cc+c)/ -> 28
cc+c/ -> 130
cs*(++) -> 180
Это код гольф, поэтому выигрывает самый короткий код в байтах!
Технические характеристики:
- Вам гарантировано, что результат никогда не будет выше
2^31-1
. - Вам также гарантируется, что ввод будет состоять только из символов
+-*/cs()
. - Пустая программа выведет
1
.
s+
, 2+3
что это первый пример. И до сих пор s
продолжает беспокоить меня. Интересно, как +s()+
расширяется. Если это 1+(2)+4
то (
приходит , прежде чем , 2
но s
что приходит еще до того , (
казалось бы , все еще скачет 3
, не 2
. Однако если результат является результатом, 1+(3)+4
эффект s
зависит от того, что последует за ним (сравните это с +s+
)
sc
есть 23
и s+
есть 1+3
? Есть ли s
пропустить в 1
настоящее время или 2
? Все примеры используют первую операцию над операндами 1
и 2
... так и sc
должно быть 13
.
~
с? Не оставляй нас в покое.