Эта задача является первой в серии из двух задач о повторении. Второй скоро будет.
В языке под названием «Повторение» (то, что я только что придумал), есть бесконечная цепочка 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
.
code-golf
math
code-golf
string
number
arithmetic
code-golf
ascii-art
kolmogorov-complexity
code-golf
number-theory
code-golf
math
code-golf
stack-exchange-api
code-golf
ascii-art
code-golf
string
code-golf
number
integer
code-golf
number
arithmetic
code-golf
puzzle-solver
code-challenge
quine
palindrome
polyglot
clismique
источник
источник
~
с? Не оставляй нас в покое.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
.Ответы:
JavaScript (ES6), 110 байт
Очень простое, но целочисленное деление добавляет 25 байтов. По какой-то причине регулярное выражение в JS не может соответствовать как началу строки, так и первому символу, поэтому также добавляется несколько байтов.
Как это работает
)
), который находится не сразу перед a(
.c
цифру +s
в начале (1s2
->2
) и каждуюs
цифру + (3s4
->3
).1/2
->(1/2|0)
).источник
ss+
возвращается6
, когда она должна вернуться7
(дваs
пропускаются,1
а2
значит+
добавляет3
и4
)./^|,|$/g
будет совпадать только один раз в начале, потому что оба совпадения будут иметь одинаковый индекс.$
не имеет той же проблемы, потому что совпадение имеет больший индекс, чем любое другое возможное совпадение.Пакетный, 332 байта
Поведение
s
делает это очень неловко. (Можетcs
стоит оценить13
и-s
до-2
?) Переменные:s
входная строка (явно отключена, потому что set / p не меняет переменную, если вы ничего не вводите)e
частичное выражение в нормальной целочисленной арифметике (которую мы можем передатьset/a
как формуeval
)d
следующая цифра из бесконечной цепочки цифрr
правая сторона последнего оператора. Мы не можем объединить это сразу, потому что(
должны быть на первом месте, но мы должны хранить его, чтобыs
не увеличивать его. К счастью, это в конечном итоге делает обработку)
немного легче.c
текущий персонажисточник