세트 이론을 사용한 문자열 길이


20

Wikipedia 에서 자연수의 이론 이론적 정의

자연수의 집합 N은 0을 포함하는 가장 작은 집합으로 정의되며 S (n) = n ∪ {n}에 의해 정의 된 후속 함수 S에서 닫힙니다.

이 방법으로 정의 된 처음 몇 숫자는 0 = {}, 1 = {0} = {{}}, 2 = {0,1} = {{}, {{}}}, 3 = {0,1,2 } = {{}, {{}}, {{}, {{}}}}.

이 자연수 정의를 사용하면 문자열 길이를 계산합니다.

길이가 a-zA-Z 인 문자열을 입력하십시오 .

구분 기호없이 세트 표기법으로 문자열의 길이를 출력 합니다

빈 문자열 입력

출력 {}

입력

출력 {{}}

입력 aaa

출력 {{} {{}} {{} {{}}} {{} {{}} {{} {{}}}}}

구분 기호가있는 'aaaa'에 대한 가독성 출력은

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

정황

  1. 코드에 숫자 0 ~ 9가 나타나지 않습니다.
  2. 숫자를 생성하기 위해 문자 코드 변환을 사용하지 않습니다.
  3. 증분 및 감소를 포함한 산술 계산에 +-* /를 사용하지 않습니다.
  4. 부울 논리 이외의 수학 연산이 없습니다.
  5. 입력 문자열은 바이트 길이를 결정할 때 계산되지 않습니다.

우승자 가장 짧은 코드 길이 (바이트)입니다.

이것이 첫 번째 질문이므로 명확하고 엄격하게 작성했으면합니다. 친절한 조언을 받아 들였습니다.


흠, 당신은 호출하지 않고 재귀 정의를 구현할 수 f(n-1)있습니까?
Martin Ender

1
재귀를 사용하지 않는 솔루션 (바이트 길이 측면에서 비 최적)이 있습니다. A가 배열이면 A.pop (); f (A)는 재귀 적입니다.
jing3142

그건 좋은 지적이야.
Martin Ender

1
@ jing3142 솔루션을 직접 구현하여 가능한지 확인하십시오. 좋은 질문은 +1입니다.
Kyle Strand

a-zA-Z에 대한 제한은 무엇을 의미합니까? 공백 / 잔해를 감지해야합니까? 또는 우리는 이것을 기대하고 내용에 관한 끈의 길이를보고해야합니까?
VX

답변:


7

GolfScript ( 18 17 바이트)

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

스택에서 입력을받습니다 (따라서 stdin을 통해 프로그램으로 실행되는 경우). 출력을 스택에 두 개의 문자열로 남겨 둡니다 (따라서 프로그램으로 실행하면 올바른 출력이 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

하스켈 기능, 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 자, 그렇지 않으면 총 48 자 putStr대신 사용하십시오 print)

하스켈 프로그램, 51 50 자

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

순서를 바꾸어도 괜찮다면, 세트이므로 f [] = "{}"; f (_ : x) = '{': f x ++ (tail.f) x 캐릭터.
isaacg

@isaacg 좋은 하나. 그래도 OP는 마음이 있는지 알려줘야합니다.
John Dvorak

설정 순서가 중요하지 않으므로 @isaacg의 제안이 좋습니다
jing3142

5

파이썬 3-64

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

입력을 인라인 할 수있는 경우 :

파이썬 2-54

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

입력 문자열 자체가 아닌 입력 방법은 raw-input ()이 아닙니다. 가능한 언어 범위에 익숙하지 않아서 코드 내에 w = 'aaaaaaaaaaaa'와 같은 것이 필요한 경우 문자열 길이를 허용하지 않았습니다. 명확하지 않으면 죄송합니다. 단어를 다시 작성하는 데 도움이 필요합니다.
jing3142

내가 참조. 그에 따라 코드를 다시 작성하겠습니다. 그러나 일반적으로 그 줄을 그대로 두어야한다고 생각합니다. 기본적으로 모든 언어에는 I / O 시스템이 있습니다.
isaacg

o[-1]o.pop()
aland

1
"코드에 숫자 0-9가 나타나지 않습니다."
isaacg

1
이상한 문자 저장을위한 첫 번째 : 초기화 o=[],진다 o=['{}']한 단계 이후에, 그리고 그것을 대체하여 하나의 입력을 연장 '_'+input()한 후 공간을 절단 in.
xnor

3

자바 스크립트 70 (문자)

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

이것은 질문을 설정하기 전에 나의 노력이었습니다. 나는 아마 내가 이길 수있는 것보다 더 많은 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}를 후속 문자로 재설정하는 것이 가능합니다.

출력 전류이지만 세트 브래킷으로 둘러싸 야합니다.


뒤에 중괄호가 필요하지 않습니다 while(한 문자 저장).
John Dvorak

1
JS의 더 많은 지식없이 저장 7 문자 거기가 필요합니다 : 초기화 s='{'두 도랑 '{'+. (이것은 내 GS 솔루션처럼 동작합니다). 두 개의 초기화 중 하나 를 for대신 사용 while하여 for-loop 초기화 로 추가하여 1 문자 절약 이 가능합니다.
피터 테일러

@ peter-taylor는 루프를 어떻게 적용할지 잘 모르겠습니다. 나는 계산에만 사용했습니다.
jing3142

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

하스켈-35 문자

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

해결책은 Jan Dvorak의 영향을 받지만 순서를 바꾸지 않습니다.


2

스칼라, 64 자

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

중괄호와 s이 코드에서 .

편집 : 숫자를 제거


코드에는 숫자가 있습니다
jing3142

@ Jing3142 죄송합니다. 더 이상은 아닙니다.
Karol S

2

파이썬 3 (44)

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

각 단계 s에서 최종이 }제거 된 세트를 나타내는 문자열 입니다. 우리 나타내는 세트 작성 n+1나타내는 세트로부터 n관계를 통해 F (N + 1) = F (N) ∪ {F (N)}. 문자열과의 통합을 구현하기 위해 {f (n)}에 대한 문자열을 추가합니다. {f (n)}은 정확히 반환 s되지만 }최종 값 }은 결과에 포함하지 않습니다. 마지막으로 '}'인쇄 전에 최종본을 다시 추가 합니다.

문자열을 하드 코딩 할 수 있다면 문자 수는 35 자로 줄어 파이썬 2로 전환하여의 패 리언 스를 저장합니다 print.

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

reversed와 print같은 작업을 수행 하여 공간을 절약 할 수있는 방법이있을 수 있지만 오른쪽 의 첨부 파일 이 엉망 입니다.print'{'+ss+=


2

gs2, 12 바이트

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

기억술:

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

1

매스 매 티카, 115 자

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

표시된 전체 코드에는 121자가 있지만 입력 문자열에 6 개가 사용됩니다 ("test" )에 사용되며 규칙에 따라 계산되지 않습니다.

구분 기호가 없어도 코드 길이를 24 자로 줄일 수 있습니다. 문자열로 명시 적으로 변환하지 않으면 다른 9자를 제거 할 수 있습니다.


1
나는 일반적으로 세트 표기법에 필요한 델리 미네 이터가 필요하지 않다고 생각하여 코드 크기를 줄이는 데 도움이되었다고 생각했습니다. 따라서 코드 크기를 줄이면 계속 사용하고 사용하십시오.
jing3142

1

루비, 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 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

매스 매 티카, 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

펄 5:33 자

어떤 문자를 솔루션의 일부로 계산해야하는지 명확하지 않습니다. 아마도 echo ... |stdin에 라인을 공급하는 데 사용되기 때문에 아마도 부품이 아닙니다 . 아마도 원하는 이름을 바꿀 수 있기 때문에 아마도 펄 바이너리의 이름이 아닐 것입니다.

그래서 나는 perl에 전달 된 명령 행 스위치, Perl 코드를 따옴표로 묶은 따옴표 및 Perl 코드 자체를 세었다.

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

또한 관련 .


1
pl표준으로 계산해야 하지만 -e코드 주위에 따옴표가 무료로 제공됩니다. Ref
Peter Taylor

0

펄 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

Pyth, 13 바이트

+u++GG\}z\{\}

이것은 @xnor의 Python 답변과 동등한 Pyth입니다. Pyth는이 ​​질문보다 새로운 것이므로이 답변은이 도전에서 이길 수 없습니다.

데모.



0

자바 스크립트, 171 149 147 142 바이트

(나중에 더 골프를 칠 것입니다)

n = prompt (). split ( ""); for (a = []; n.pop ();) a.push (a.slice ()); alert (JSON.stringify ({a : a}) [ R = "바꾸기"] (/ [^ \ [\]] / g, "") [R] (/ \ [/ g, "{") [R] (/ \] / g, "}")) ;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.