集合論を使用したスト​​リングの長さ


20

ウィキペディアより自然数の集合論的定義

自然数の集合Nは、0を含む最小集合として定義され、S(n)= n defined {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)か?
マーティンエンダー14

1
再帰を使用しないソリューション(バイト長の点で最適ではない)があります。Aが配列の場合、A.pop(); f(A)は再帰的です。
jing3142 14

それは良い点です。
マーティンエンダー14

1
@ jing3142解決策を自分で実装して実現できることを称賛します。すばらしい質問には+1。
カイルストランド14

a-zA-Zの制限はどういう意味ですか?空白/ゴミを検出する必要がありますか?または、これを期待して、文字列の長さ、コンテンツに関する敬意を報告する必要がありますか?
VX 14

回答:


7

GolfScript(18 17バイト)

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

スタックで入力を取得します(したがって、stdinを介してプログラムとして実行する場合)。出力をスタック上の2つの文字列のままにします(したがって、プログラムとして実行する場合は、正しい出力が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)

ハードコーディングされた入力を持つHas​​kellプログラム、 48または49 47または48文字

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

(出力を囲む余分な引用符を気にしない場合は47文字。そうする場合は、合計48文字のputStr代わりに使用しますprint

Haskellプログラム、 51 50文字

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

セットであるため、順序を逆にしても問題ない場合は、f [] = "{}"; f(_:x)= '{':f x ++(tail.f)xを使用して保存できます。キャラクター。
isaacg 14

@isaacgいいね。しかし、OPは彼が気にするかどうかを教えてくれるはずです。
ジョンドヴォルザーク14

セットの順序は重要ではないので、@ isaacgの提案は良いです
jing3142 14

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 = 'aaaaaaaaaaaa'のようなものが必要な場合、文字列の長さを許可しませんでした。明確でない場合は申し訳ありません。言い直しの質問の助けは受け入れました。
jing3142 14

そうですか。それに応じてコードを書き直します。ただし、一般的には、その行はそのままにしておくべきだと思います。基本的に、すべての言語にI / Oシステムがあります。
isaacg 14

o[-1]代わりにo.pop()
aland 14

1
「コードに0〜9の数字は表示されません。」
isaacg 14

1
最初の文字の奇妙な文字保存:Initializeはo=[]o=['{}']1つのステップの後になり、で置き換えて入力を1つ長くし、の'_'+input()後のスペースを切り取りinます。
XNOR

3

Javascript 70(文字)

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

これは質問を設定する前の私の努力でした。私はおそらく、JavaScriptを熟知している人よりもJavascriptの知識が豊富な人を想定しています。

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のキャラクターをpop()して、s = s {s}を後継者としてリセットすることもできます。

出力電流sを設定ブラケットで囲む必要があります。


中括弧は必要ありませんwhile(1文字を保存します)。
ジョンドヴォルザーク14

1
JSの知識がなくても7文字の節約がありますs='{'。2つを初期化して捨て'{'+ます。(これは私のGSソリューションのように動作します)。forループの初期化に2つの初期化のいずれかを使用するfor代わりに使用することにより、さらに1文字節約できwhileます。
ピーターテイラー14

@ peter-taylorは、forループを適用する意味がわからない。私はこれまで数えただけです。
jing3142 14

3
for(a;b;c){d}a;while(b){d;c}両方を持つほとんどの言語と直接同等です。したがって、実質的にfor(;b;)同じwhile(b)で文字数は同じですが、for(a;b;)1文字を節約しa;while(b)、実質的に同じです。
ピーターテイラー14

@ peter-taylor +1コメント内の非常に明確で簡潔な説明
ing3142 14

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おっと。もう違います。
カロルS 14

2

Python 3(44)

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

各ステップsで、最後を}削除したセットを表す文字列です。関係f(n + 1)= f(n)∪{f(n)}を介してn+1表すセットから表すセットを作成しますn。文字列を使用してユニオンを実装するには、{f(n)}に文字列を追加します。これは、正確にs、しかし最終結果が}返さ}れ、結果に最終結果を含めることを無視します。最後に、'}'印刷する前に最終版を追加します。

文字列をハードコーディングできる場合、文字カウントは35文字に削減され、Python 2に切り替えて、のパラセートを保存しprintます。

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

reverseの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 14

1

27歳のルビー

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

疑わしいもの:

  1. 出力は次のようになります [[], [[]], [[], [[]]], [[], [[]], [[], [[]]]]]
  2. rubyへの入力のほとんどのメソッドには、末尾の改行が含まれ、カウントが1増加します。

1
inspect手動で配列を作成しtr、結果を取得する場合は、完全に合法です。
ジョンドヴォルザーク14

1

ピュアバッシュ、54

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

出力:

$ ./strlenset.sh
{}
$ ./strlenset.sh a
{{}}
$ ./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

Delphi XE3(264)

[OK]を私は他の近くに来ることはありませんが、それを行うのは楽しかったです:)
おそらくそれを考え直しました。これを行うためのより良い方法があるかどうかを見に行きます。

ゴルフ

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 14

0

Perl 5:33文字

どの文字をソリューションの一部として数えるべきかは明確ではありません。おそらく、そうではありません。echo ... |なぜなら、それは標準入力に行を送るためだけに使用されるからです。おそらく、perlバイナリの名前ではないでしょう。あなたが好きな名前に変更することができるからです。

そのため、perlに渡されるコマンドラインスイッチ、Perlコードを囲む引用符、およびPerlコード自体をカウントしました。

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

また、関連


1
pl標準としてカウントする必要がありますが-e、コードの周りの引用符は無料で取得できます。参照
ピーターテイラー

0

Perl 6:37文字

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

またはSTDINから:

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

{"\{@_.join()\}"}...*自然数の集合形式の怠laなリストを作成し、必要なものを取得し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、 "}")) ;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.