Эта задача является первой в серии из двух задач о повторении. Второй скоро будет.
В языке под названием «Повторение» (то, что я только что придумал), есть бесконечная цепочка 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=24ccc->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(Первыеcconcats1и2, вsскачет3, а окончательныйcconcats12к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.
~с? Не оставляй нас в покое.