这项挑战是有关重复的两个挑战系列中的第一个。第二个即将到来。
在一种叫做重复的语言(我刚刚写的东西)中,包含一个无限的字符串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
。
@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呢?不要让我们挂了。