这项挑战是有关重复的两个挑战系列中的第一个。第二个即将到来。
在一种叫做重复的语言(我刚刚写的东西)中,包含一个无限的字符串12345678901234567890...,带有1234567890永远重复。
以下语法可用于输出数字:
+-*/:这会将运算符插入重复数字的字符串中。- 例子:
+->1+2=3(在和之间+插入一个)+12+*->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。
@RobertFraser糟糕,这是一个错误-c最初是〜,但看来我还没有完全解决。
—
clismique
@TonHospel哦,您的意思很对。本质上,“ s”符号从无限字符串中完全删除了与之关联的数字,因此在两种情况下都是“是”。
—
clismique
但是,您的规范说的
—
Ton Hospel
s+是2+3第一个示例。而且仍然s不断烦扰我。我想知道如何+s()+扩展。如果是1+(2)+4那么(来之前2可是s说来之前也(貌似还跳过3,不会2。但是,如果结果是结果,1+(3)+4则a的效果s取决于其后的结果(与进行比较+s+)
sc是23和s+是1+3?会s跳过1现在还是现在2?所有的例子都使用在操作数上第一操作1和2...所以sc应该是13。
~s呢?不要让我们挂了。