使用集合论的字符串长度


20

摘自Wikipedia 对自然数的集合理论定义

自然数的集合N定义为包含0且在由S(n)= n∪{n}定义的后继函数S下闭合的最小集合。

用这种方式定义的前几个数字是0 = {},1 = {0} = {{}},2 = {0,1} = {{},{{}}},3 = {0,1,2 } = {{},{{}},{{},{{}}}}。

使用自然数的此定义计算字符串的长度。

输入 任意长度的a-zA-Z中的字符串

以设置符号输出字符串的长度,不带分隔符

例子

输入 空字符串

输出 {}

输入 一个

输出 {{}}

输入 aaaa

输出 {{} {{}} {{} {{}}} {{} {{}} {{} {{}}}}}

为了提高可读性,输出带有分隔符的“ aaaa”是

{ 
    {} 
    {{}} 
    {{} {{}} } 
    {{}   {{}}   {{} {{} } }   }
}

条件

  1. 代码中不会出现0到9的数字;
  2. 不使用字符代码转换生成数字;
  3. 不得将+-* /用于包括增量和减量在内的算术计算;
  4. 除布尔逻辑外,没有其他数学运算;
  5. 输入字符串不计入字节长度。

优胜者最短代码长度,以字节为单位。

由于这是我的第一个问题,我希望我已经说得足够清楚和严格。接受友好的建议。


嗯,您可以不调用而实现递归定义f(n-1)吗?
Martin Ender 2014年

1
我有一个不使用递归的解决方案(在字节长度方面不是最优的)。如果A是一个数组,则A.pop(); f(A)是递归的。
jing3142

那是个很好的观点。
Martin Ender 2014年

1
@ jing3142亲自实施解决方案以确保可行的荣誉。+1是个好问题。
Kyle Strand '04

对a-zA-Z的限制是什么意思?我们应该检测空白/红宝石吗?还是我们只希望这样并报告字符串的长度(关于内容)?
VX

Answers:


7

GolfScript(18 17字节)

'{'\{;.'}'++}/'}'

在堆栈上接受输入(因此,如果通过标准输入程序作为程序运行)。将输出保留为两个字符串在堆栈上(因此,如果作为程序运行,则将正确的输出发送到stdout)。

要在堆栈上保留单个字符串,请追加+到concat或使用替代方法

'{}'\{;.);\'}'++}/

解剖

# Stack: input-str
'{'\
# Stack: <0< input-str  where <0< means the string representing 0 without its final }
# Loop over each character of the input string
{
    # Stack: <n< char
    # Discard the input character
    ;
    # Concatenate two copies of <n< and a }
    .'}'++
}/
# Push the final } to the stack
'}'

选择:

# Stack: input-str
'{}'\
# Stack: <0> input-str  (where <0> means the string representing 0)
# Loop over each character of the input string
{
    # Stack: <n> char
    # Discard the input character
    ;
    # Duplicate <n> and remove the final '}'
    .);
    # Stack manipulations
    \'}'
    # Stack: <n>-less-final-'}' <n> '}'
    # Concatenate the three strings to get <n+1>
    ++
}/

限制的影响

如果允许递减,则将允许15字节的解决方案

'{}'\{;..,(/*}/

12

Haskell函数 35 34个字符

f[]="{}";f(_:x)='{':f x++tail(f x)

具有硬编码输入的Haskell程序, 48或49 47或48个字符

 f[]="{}";f(_:x)='{':f x++tail(f x);main=print$f"aaaa"

(如果您不介意输出周围的引号,则为47个字符;如果这样做,请使用putStr代替,print总共使用48个字符)

Haskell程序, 51 50个字符

f[]="{}";f(_:x)='{':f x++tail(f x);main=interact f

如果您可以颠倒顺序,因为它是一组,所以可以使用:f [] =“ {}”; f(_:x)='{':f x ++(tail.f)x保存字符。
isaacg 2014年

@isaacg好一个。不过,OP应该告诉我们他是否介意。
John Dvorak 2014年

由于设置顺序并不重要,因此@isaacg的建议很好
jing3142 2014年

5

Python 3-64

o=['{}']
for a in input():o+=['{'+''.join(o)+'}']
print(o.pop())

如果允许内联输入:

Python 2-54

o=['{}']
for a in'whatever':o+=['{'+''.join(o)+'}']
print o.pop()

不是raw-input()而不是输入字符串本身的输入方法。如果代码中需要w ='aaaaaaaaaaaaaa之类的内容,可能我不熟悉可能的语言范围,因此我不允许使用字符串长度。对不起,如果不清楚。接受重新措词问题的任何帮助。
jing3142

我懂了。我将相应地重写代码。但是,总的来说,我认为您应该只删除该行。基本上每种语言都有一个I / O系统。
isaacg 2014年

您可以通过使用节省符号o[-1]来代替o.pop()
奥兰

1
“代码中没有0到9的数字;”
isaacg 2014年

1
第一个字符保存很奇怪:Initialize o=[]o=['{}']在第一步之后变为),并用替换为输入,并'_'+input()在后面切开空格,以加长输入in
xnor

3

Javascript 70(字符)

s='';c=prompt().split('');while(c.pop()){s+='{'+s+'}'}alert('{'+s+'}')

这是我提出问题之前的努力。我假设有人比我更了解Java语言,可能无法胜过它。

谢谢Jan Dvorak和Peter Taylor的进一步削减

现在62

s='{';c=prompt().split('');while(c.pop())s+=s+'}';alert(s+'}')

现在61

s='{';for(c=prompt().split('');c.pop();)s+=s+'}';alert(s+'}')

原始代码说明

将s设置为空

将字符串输入c并拆分为数组

虽然可以从c中弹出()一个字符,然后将s = s {s}重置为后继字符

输出电流s,但需要用固定支架包围。


之后不需要大括号while(节省一个字符)。
John Dvorak 2014年

1
节省了7个字符,无需任何其他JS知识:初始化s='{'和放弃这两个'{'+。(这就像我的GS解决方案一样)。通过使用for代替while和拉入两个初始化之一到for循环初始化中,进一步节省了1个字符。
Peter Taylor

@ peter-taylor不知道您申请循环申请的意思。我只用它来计数。
jing3142 2014年

3
for(a;b;c){d}a;while(b){d;c}与具有两种语言的大多数语言直接等效。因此,虽然在效果和字符数上for(;b;)相同while(b),但for(a;b;)节省一个字符a;while(b)并在效果上相同。
彼得·泰勒

@ peter-taylor +1在评论中非常清晰简洁地进行了解释
jing3142

3

J- 22 20个字符

'{','}' '{'&(,,~)~#

如何得出:

   #'123'                      NB. string length
3
   'Left' (,,~) 'Right'        NB. dyad to concat L,R,R
LeftRightRight
   '{' (,,~) '}'               NB. using braces
{}}
   '{'&(,,~) '}'               NB. bind left argument, now it's a monad
{}}
   '{'&(,,~) '{'&(,,~) '}'     NB. twice
{{}}{}}
   '{'&(,,~)^:2 '}'            NB. ^: is monad functional power
{{}}{}}
   '{'&(,,~)^:3 '}'            NB. any integer
{{{}}{}}{{}}{}}
   3 '{'&(,,~) '}'             NB. convenient feature of dyadic &
{{{}}{}}{{}}{}}
   '}' '{'&(,,~)~ 3            NB. swap argument order
{{{}}{}}{{}}{}}
   '}' '{'&(,,~)~ #'123'       NB. using string length
{{{}}{}}{{}}{}}
   '{', '}' '{'&(,,~)~ #'123'  NB. add final brace
{{{{}}{}}{{}}{}}
   ('{','}' '{'&(,,~)~#) '123' NB. works as a verb
{{{{}}{}}{{}}{}}

另外,也可以写成'{','{'&(,,~)&'}'@#相同的意思。

用法:

   '{','}' '{'&(,,~)~# 'aaaa'
{{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}
   f =: '{','}' '{'&(,,~)~#  NB. can be assigned to a function
   f 'VeryBig'
{{{{{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}{{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}{{{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}{{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}{{{{}}{}}{{}}{}}{{{}}{}}{{}}{}}

2

Haskell-35个字符

g[]="{}";g(_:x)=(init.g)x++g x++"}"

解决方案受Jan Dvorak的解决方案影响,但不取消顺序。


2

Scala,64个字符

def f(s:String):String=s"{${s.tails.toSeq.tail.map(f)mkString}}"

请注意s在此代码中括号和扮演的双重角色。

编辑:删除了一个数字


代码中有一个数字
jing3142

@ jing3142糟糕。不再。
Karol S

2

的Python 3(44)

s='{'
for _ in input():s+=s+'}'
print(s+'}')

在每个步骤中,s代表集的字符串都将}被删除。我们n+1n通过关系f(n + 1)= f(n)∪{f(n)} 表示的集合中创建表示的集合。要使用字符串实现并集,我们为{f(n)}附加了字符串,该字符串恰好s与但}返回了final ,并且忽略了将final包含}在结果中。最后,我们'}'在打印之前添加一个决赛。

如果我可以对字符串进行硬编码,那么字符数将减少到35个字符,并切换到Python 2以将括号保存在上print

s='{'
for _ in'string':s+=s+'}'
print s+'}'

print通过执行print'{'+s反向操作s,可能有一种节省空间的方法,但这与+=右侧的附加操作混淆了。


2

gs2,12个字节

7b 7d 05 27 a0 42 30 30 e4 43 2e 32

助记符:

"{}"
right-uncons @0 swap + + b5
rot length times

1

Mathematica,115个字符

StringReplace[ToString@Function[s,NestWhile[#~Append~#&,{},(s~Read~Character//StringQ)&]]@StringToStream@"test",", "->""]

所示的完整代码包含121个字符,但其中6个用于输入字符串("test"),根据规则,该字符串不计算在内。

如果没有分隔符的要求,则可以将代码长度进一步减少24个字符。无需显式转换为字符串,则可以删除另外9个字符。


1
我以为不再需要使用集合符号中必需的分隔符,因此我正在帮助减小代码大小。因此,如果使用它们减小了代码大小,请继续使用它们。
jing3142'4

1

Ruby,27岁,有点作弊

a=*a
gets.chars{a=*a,a}
p a

有问题的事情:

  1. 输出看起来像 [[], [[]], [[], [[]]], [[], [[]], [[], [[]]]]]
  2. 输入红宝石的大多数方法都将包含尾随换行符,该末尾换行符会将计数增加1。

1
如果您inspect手动排列阵列和tr结果,那应该是完全合法的。
John Dvorak

1

纯净重击,54岁

f()([ $@ ]&&(a=`f ${@%?}`
echo $a{$a}))
echo {`f $@`}

输出:

$ ./strlenset.sh
{}
$ ./strlenset.sh一个
{{}}
$ ./strlenset.sh aa
{{} {{}}}
$ ./strlenset.sh aaa
{{} {{}} {{} {{}}}}
$ ./strlenset.sh aaaa
{{} {{}} {{} {{}}} {{} {{}} {{} {{}}}}}
$ 

1

朱莉娅43

f(z)="{"foldl((x,y)->"$x{$x}","",{z...})"}"

构造{z ...}将字符串z扩展为数组。折叠遍历数组的所有元素,而忽略内容,而是从空字符串开始构建。函数foldl在Julia 0.30中可用。

样本输出

julia> f("")
"{}"
julia> f("aa")
"{{}{{}}}"
julia> f("aaaa")
"{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}"
julia> f("aaaaaa")
"{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}"


1

Mathematica,45 57 48字节

"{"~~Fold[#~~"{"~~#~~"}"&,"",Characters@#]~~"}"&

36字节的解决方案:

Fold[{##{##}}&@@#&,{},Characters@#]&

但是,它使用一些算术计算。


0

德尔福XE3(264)

好吧,我什至没有接近对方,但是这样做很有趣:)
可能是考虑得太深了。看看是否有更好的方法可以做到这一点。

打高尔夫球

uses System.SysUtils;var s,f:string;a:TArray<char>;b:TArray<string>;i,x:integer;begin readln(s);a:=s.ToCharArray;f:='{';setlength(b,Length(a));for I:=Low(a)to High(a) do begin s:='{';for x:=Low(b)to High(b)do s:=s+b[x];b[i]:=s+'}';f:=f+b[i];end;writeln(f+'}');end.

不打高尔夫球

uses
  System.SysUtils;
var
  s,f:string;
  a:TArray<char>;
  b:TArray<string>;
  i,x:integer;
begin
    readln(s);
    a:=s.ToCharArray;
    f:='{';
    setlength(b,Length(a));
    for I:=Low(a)to High(a) do
    begin
      s:='{';
      for x:=Low(b)to High(b)do
        s:=s+b[x];
      b[i]:=s+'}';
      f:=f+b[i];
    end;
    writeln(f+'}');
end.

测试结果

测试长度为0..10的字符串

{}
{{} }
{{} {{}} }
{{} {{}} {{}{{}}} }
{{} {{}} {{}{{}}} {{}{{}}{{}{{}}}} }
{{} {{}} {{}{{}}} {{}{{}}{{}{{}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}} }
{{} {{}} {{}{{}}} {{}{{}}{{}{{}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}} }
{{} {{}} {{}{{}}} {{}{{}}{{}{{}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}} }
{{} {{}} {{}{{}}} {{}{{}}{{}{{}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}} }
{{} {{}} {{}{{}}} {{}{{}}{{}{{}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}}} }
{{} {{}} {{}{{}}} {{}{{}}{{}{{}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}}} {{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}{{}{{}}{{}{{}}}{{}{{}}{{}{{}}}}}}}}}} }

感谢您的尝试。在我看来,我将长度视为一种数学运算,因为它返回一个数字,并且使用涉及计数的“ for”循环。
jing3142

0

Perl 5:33个字符

目前尚不清楚应该将哪些字符算作解决方案的一部分。可能不是该echo ... |部分,因为那只是用来向stdin输入一行。可能不是perl二进制文件的名称,因为您可以根据需要将其重命名。

因此,我已经计算了传递给perl的命令行开关,环绕Perl代码的引号以及Perl代码本身。

#                                1         2         3
#                     12  3456789012345678901234567890123
$ echo "aaaa" | perl -ple'$s.="{$s}"while s/.//;$_="{$s}"'

另外,相关


1
您应该算作标准pl,但是您可以-e免费获得代码周围的引号。参考
Peter Taylor

0

Perl 6:37个字符

say ({"\{@_.join()\}"}...*)["(input string)".chars]

或来自STDIN:

say ({"\{@_.join()\}"}...*)[get.chars]

{"\{@_.join()\}"}...*列出自然数的设置形式的惰性列表,而我们只需要使用即可get.chars

惰性列表可能更易于阅读:

-> *@prev { '{'~ @prev.join ~'}' } ... *

读起来与定义非常相似。


0

飞镖:85个字符

a(p,i)=>(--i).isNegative?p:a("$p{$p}",i);
main(s){print("{${a("",s.first.length)}}");}

(带有额外的换行符以提高可读性)。

不使用“ 0”的要求确实.first会引起误解,否则将会是[0]并且(..).isNegative将会是..<0



0

的Javascript,171个 149 147 142字节

(稍后可能会打高尔夫球)

n = prompt()。split(“”); for(a = []; n.pop();)a.push(a.slice()); alert(JSON.stringify({a:a})[ R =“ replace”](/ [^ \ [\]] / g,“”)[R](/ \ [/ g,“ {”)[R](/ \] / g,“}”)) ;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.