완벽한 페어링 감지


25

문자열을 취하고 인접한 동일한 문자의 모든 쌍을 제거 하는 함수 를 보자 . 예를 들어에프

에프(에이에이기음기음)=에이에이

두 쌍이 겹치면 그중 하나만 제거합니다.

반복되는 응용 프로그램이 결국 빈 문자열을 생성하면 완벽하게 쌍을 이루는 문자열을 호출합니다. 예를 들어 위의 문자열 B의 B B C C는 우리가 적용하는 경우 때문에 완벽하게 연결되어 있지 f를 다시 우리는 여전히 얻을 b를 . 그러나 e a b b c c a d d e 와 같은 문자열 은 완벽하게 짝을 이룹니다. f를 세 번 적용 하면 빈 문자열이 생깁니다.에이에이기음기음에프에이에이이자형에이기음기음에이이자형에프

에프(이자형에이기음기음에이이자형)=이자형에이에이이자형

에프(이자형에이에이이자형)=이자형이자형

에프(이자형이자형)=


당신의 임무는 (인쇄 가능한 ASCII) 문자열을 취하여 완벽하게 쌍을 이루는지를 결정하는 완벽하게 쌍을 이룬 컴퓨터 코드를 작성하는 것입니다. 코드가 반드시 인쇄 가능한 ASCII로 제한 될 필요는 없지만 소스의 바이트 스트링 자체는 완벽하게 쌍을 이룬 string이어야합니다 .

입력이 완벽하게 쌍을 이루는 경우와 그렇지 않은 경우를위한 두 가지 고유 한 값을 출력 할 수 있습니다.

이것은 질문이므로 답변은 바이트 수가 적을수록 바이트 단위로 점수가 매겨집니다.


테스트 사례

에이에이기음기음에프에이에스이자형에이기음에이에프에이에스이자형에이에이에프에이에스이자형에이에이에이에이기음기음아르 자형이자형이자형에이기음기음에이이자형아르 자형이자형아르 자형이자형


1
지금 변경하기에는 너무 늦었지만 의견이나 유사한 "죽은"코드를 허용하면 문제의 "트위스트"부분이 거의 의미가없는 것처럼 느껴집니다.
Geobits

11
@Geobits 동의하지 않습니다. 하나는 죽은 코드를 허용하지 않는 것은 막연한 정의에 대한 열광이며 어쨌든 재미로 보이지 않는다고 생각합니다. 두 사람은 의견을 허용하면 입장이 낮아진다 고 생각합니다. 세 사람에게는 주석이없는 코드가 주석이 가득 찬 코드보다 필연적으로 더 나은 점수를 매길 것이라고 믿습니다. 어쩌면 왜곡이 재미는 없지만 대답을 특정 방식으로 수행 할 수 있도록 제한 할 수없는 제한을 추가하면 재미가 떨어질 것입니다.
밀 마법사

4
단항은 소스 제한 규칙 인 mwahahahaha에 대해 망설이지 않습니다 (즉, 대답에 짝수 바이트가있는 한).
Arnauld

2
@Geobits보다 창의적인 답변을 장려 할 수있는 한 가지는 빈 문자열에 도달하는 단계 수를 점수 매기기에 포함시키는 것입니다. 주석을 사용하면이 숫자가 상당히 높아지는 경향이 있습니다. 주석이 낮을수록 쌍을 약간 인터레이스해야하는 곳에 주석이 자연스럽게 중첩되기 때문입니다. 분명히 변경하기에는 너무 늦습니다.
밀 마법사

1
@dylnan 빈 문자열이 될 수 있지만, 영원히 반복되는 것은 유효하지 않은 출력입니다.
밀 마법사

답변:


10

하스켈, 146124 바이트

((""##))
a===bb=bb==a
((aa:bb))##((cc:dd))|aa===cc=bb##dd|1==1=((cc:aa:bb))##dd
a##""=""===a
""##cc=((cc!!00:cc!!00:""))##cc

의견이 없습니다. 반환하거나 True또는 False.

온라인으로 사용해보십시오!

편집 : @Cat Wizard 덕분에 -22 바이트


2
이것은 내가 본 것 중 하스켈과 같은 최소 하스켈입니다
Cubic


5

05AB1E , 26 24 22 20 18 바이트

ovs 덕분에 -2 바이트 . 출력 0 문자열이 완벽하게 페어링 된 경우, 1 그렇지.

ΔγʒgÉ}JJ}ĀqqĀÉgʒγΔ

온라인으로 사용해보십시오!

ΔγʒgÉ} JJ} ÂqqÂÉgʒγΔ – 전체 프로그램.
Δ} – 결과가 더 이상 변경되지 않을 때까지 :
 γʒ} – 문자열을 동일한 문자 청크로 분할하고 다음을 기준으로 필터링합니다.
   gÉ – 길이가 홀수입니까?
      JJ – 필터링 후 파트를 다시 결합하지만이 작업을 수행하십시오.
                     이전 버전과 같이 2 바이트를 절약하기 위해 두 번.
         – 결과가 비어 있는지 확인
          q – 실행을 종료합니다. 나머지 코드는 무시됩니다.
           qÂÉgʒγΔ – 소스 레이아웃을 돕기 위해 일치하지 않는 부분을 미러링합니다.

이전 버전

이것은 순전히 정의되지 않은 동작에 의존하므로 ( "데드 코드"는 없음) 완벽하게 짝을 이루는 문자열에 대해서는 [[ '0']] 을 출력 하고 완벽하게 일치하지 않는 문자열에는 [[ '1']] 을 출력합니다.

ΔγεDgÉ£}JJ}ĀĀ£ÉgDεγΔ 

그리고 22 바이트 버전은 위와 같지만 UB를 남용하지 않고 제정신의 값을 산출한다고 설명했습니다 .

ΔγεDgÉ£}JJ}ĀqqĀ£ÉgDεγΔ – Full program.
Δ         }            – Until fixed point is reached (starting from the input value):
 γε    }                 – Group equal adjacent values, and for each chunk,
   DgÉ                     – Duplicate, get its length mod by 2.
      £                    – And get the first ^ characters of it. This yields the
                             first char of the chunk or "" respectively for odd-length
                             and even-length chunks respectively.
         JJ                – Join the result to a string, but do this twice to help
                             us with the source layout, saving 2 bytes.
            Ā           – Check if the result is an empty string.
             q          – Terminate the execution. Any other commands are ignored.
              qĀ£ÉgDεγΔ – Mirror the part of the program that isn't otherwise removed
                          anyways. This part forgoes }JJ} because that substring will
                          always be trimmed by the algorithm anyway.

5

Cubix , 54 바이트

U#;!u1@.Oi>??>i..??O.@1^^...u--u.u!ww;..#..U..;..;!^^!

문자열이 완벽하게 쌍을 이루고 1그렇지 않으면 아무것도 출력하지 않습니다.
여기 사용해보십시오

Cubified

      U # ;
      ! u 1
      @ . O
i > ? ? > i . . ? ? O .
@ 1 ^ ^ . . . u - - u .
u ! w w ; . . # . . U .
      . ; .
      . ; !
      ^ ^ !

설명

대부분의 문자는 코드를 완벽하게 페어링하는 데 필요한 필러입니다. 그것들을 .(no-op)로 바꾸면

      U # ;
      ! u 1
      @ . O
i . ? . > i . . ? . . .
. . ^ . . . . u - . . .
. . . w ; . . . . . . .
      . ; .
      . ; !
      ^ ^ !

이것은 세 단계로 나눌 수 있습니다.

  • 빈 문자열 (왼쪽 i?)을 확인하십시오.
  • 반복하여 문자를 스택에 던지고 복제물이 튀어 나옵니다 (아래와 오른쪽의 모든 것).
  • 스택이 비어 있는지 확인하십시오 (맨 위의 물건).

4

V , 20 , 18 바이트

òóˆ±òø‚

::‚øò±ˆóò

온라인으로 사용해보십시오!

16 진 덤프 :

00000000: f2f3 88b1 f2f8 820a 0a3a 3a82 f8f2 b188  .........::.....
00000010: f3f2                                     ..                   ....

진실은 0을, 거짓은 1을 출력합니다. 간접적으로 2 바이트를 절약 한 nmjcman101 덕분입니다.

ò        ò        " Recursively...
 ó                "   Remove...
  <0x88>          "     Any printable ASCII character
        ±         "     Followed by itself
          ø       " Count...
           <0x82> "   The number of non-empty strings

::<0x82>øò±<0x88>óò      " NOP to ensure that the code is paired

당신은 대체 할 수 ^$.및 falsy에 대한 다른, truthy 아무것도 0을 반환? 나는 이것을 잠시 동안하지 않으면 규칙에 약간 안개가 난다.
nmjcman101 2016 년

나는 규칙이 말한 것을 제외하고는 효과가 있다고 생각합니다 . 입력이 완벽하게 쌍을 이루는 경우와 그렇지 않으면 다른 두 가지 값을 출력 할 수 있습니다 . . 그것은 나에게 아이디어를 줄 것이다 ...
DJMcMayhem

3

R , 142126 바이트

@Giuseppe에 의해 더 엄격한 논리와 일부 주석 바이트

f=function(x,p="(.)\\1")"if"(grepl(p,x),f(sub(p,"",x)),!nchar(x))##x(rahcn!,x,,p(bus(f,)x,p(lperg("fi")"1\\).("=p,x(noitcnuf=f

온라인으로 사용해보십시오!

f=function(x,p="(.)\\1")"if"(nchar(x),"if"(grepl(p,x),f(sub(p,"",x)),0),1)##)1,)0,xp(bus(f,)x,p(lperg("fi",)x(rahcn("fi")"1).("=p,x(noitcnuf=f

기발한:

온라인으로 사용해보십시오!

재귀 감지기 기능 다음에는 함수의 모든 문자가 역순으로 주석으로 표시됩니다.


코드에서 현재 오류가 발생했습니다. 다음 은 142 바이트의 작업 버전입니다.
ovs

고맙습니다. 잘라 내기 및 붙여 넣기 사고 였을 것입니다.
ngm

126 바이트 -주석을 더 압축 할 수도 있습니다.
Giuseppe

`\\ ˋ가 주석에서 단순화되거나 복제되어야하는지 궁금합니다.
JayCe

@JayCe 당신은 그것이 의견에있을 필요는 없다고 생각하지만 이것을 시도하면 작동하지 않는 것 같습니다. 이유를 모르겠습니다.
ngm



2

브레인 플락 , 228 200 바이트

(()){{{}([]<<{{(({}<<>>)<<>>[({})]){{{{}(<<<<>>()>>)((<<>>))}}}{}{}<<>>{}<<>>}}{}<<>>>>[[]])}}{}(<<({{(())(<<()>>)}}<<>>)>>){{{{}{}}((){{}{}{}{}{}}(()())())[[]((){{}{}}())[]]((){{}{}}[[][]]()){{}{}}}}

온라인으로 사용해보십시오!

이것은 약간의 개념 증명입니다. 아마 더 짧을 수 있습니다. 그러나 주석은 사용하지 않습니다.

0,0입력이 완벽하게 쌍을 이루고 0,1입력이 아닌 경우 출력 합니다 .


2

sed 4.2.2 , 34 바이트

:;:t;ss((..??\??))\1ss1;t;/..??/cc

온라인으로 사용해보십시오!

짝을 이루는 문자열은 빈 출력을, 짝을 이루지 않은 문자열은 ct:

사소한 회문 버전은 32 :;ss(.)\1ss;t;/./cc/./;t;1\).(;:입니다. 오래된 해결책은 :;ss((..??\??))\1ss1;t;;/./cc/./t:(현재 하나가 c덜 남용했기 때문에 변경되었습니다 c.

( ;구문 구분 기호입니다)

: 빈 라벨을 선언

:t 라벨을 선언 t

ss((..??\??))\1ss1sed에서 구분 기호를 대체로 변경할 수 있으며 이것이로 변경하여 수행 한 작업 s이므로 첫 번째 대체입니다 ( 1마지막으로 표시됨)

  • ~의 일치 ((..??\??))\1

    • . 어떤 캐릭터
    • .?? 선택적인 선택적 문자가 뒤 따른다
    • \?? 그리고 선택 사항 ?
    • 바로 옆에 같은 것이 있습니다
  • 아무것도없이

이제이 대체는 그 자체와 짝을 이루기 때문에 그 ;전후 의 s도 취소됩니다.

t 더 이상 성공적인 대체가 없을 때까지 라벨로 되돌아갑니다.

/..?/만약 .다음 (와일드 카드) .?임의의 문자와 일치

  • cc 버퍼를 c

2

뇌 플랙 , 112 (110) 108 바이트

(()){{}({<<(({}<<>>)<<>>[({})]){{((<<>>)<<>>)}}{}{##{

}<<>>>>{}<<>>}<<>>)}{}((){{<<>>[[]]}})##}{}])}{([)}(}

온라인으로 사용해보십시오!

이를 기반으로 내 대답 에서 괄호가 일치하고 있는가?.

댓글을 사용하지 않으려 고했지만 팝 nilads ( {})를 페어링 하려고 시도 했습니다. 한 쌍의 브래킷을 페어링하는 가장 쉬운 방법은 같은 종류의 다른 쌍으로 묶는 것입니다. 이것은 다른 nilads에게는 쉽지만 {...}monad는 루프를 만듭니다. 루프를 끝내려면 0을 눌러야하지만 일단 루프를 나간 후에는 0을 팝해야 문제가 발생합니다.

66 바이트 사전 페어링 솔루션은 다음과 같습니다.

(()){{}({<(({}<>)<>[({})]){((<>)<>)}{}{}<>>{}<>}<>)}{}((){<>[[]]})

온라인으로 사용해보십시오!

출력 1또는 1,0입력이 완벽하게 페어링 된 0,0경우 그렇지 않은 경우.

코멘트 버전 없음, 156 바이트

(()){{{}({<<(({}<<>>)<<>>[({{}((<<[[]]>>)){}}{}(<<[]>>){{}{}}{})]){{((<<>>)<<>>)}}{{}{}{}}{}{}<<>>>>{}<<>>}<<>>)}}{{}{}}{}((){<<>>[[]]})(<<()()>>){{}{}{}}{}

온라인으로 사용해보십시오!

Cat Wizard가 지적했듯이 첫 번째 답변은 모든 해석자에게 적용되지는 않으며 모든 #의견을 처리하는 것은 아닙니다 . 이 버전에는 댓글이 없습니다.


이것은 루비 brainflak 인터프리터에서만 작동하므로 순수한 brainflak 답변이 아닙니다.
Wheat Wizard

@CatWizard 캐논 Brain-Flak 통역사가 있습니까? 내가 아는 한 Rain-Flak (루비)은 최초의 통역사입니다. (또한 의견없이 해결책을 찾고 있습니다)
Jo King

실제로는 아닙니다. Rain-Flak은 원래 해석기이지만 주석 구문은 고유합니다. 우리는 얼마 전 Brain-Flak 표준을 썼습니다.
밀 마법사

@CatWizard 댓글 없음 버전 완료
Jo King

2

apt, 24 22 바이트

출력 falsetruthy 및 truefalsey합니다.

&&!!e"(.)%1"PP"1%).("e

시도 해봐


시겠습니까 «e"(.)%1일?
Oliver

@Oliver, 그것이 소스 제한이 제 관심을 끌기 전에 원래 가지고 있었던 것입니다. 그래도 여전히 작업 할 수있는 방법을 찾으려고 노력 «하고 있습니다.
얽히고 설킨

@Oliver, 슬프게도 작동하지 않습니다 .
얽히고 설킨

난 당신이 도전 @Oliver 의 제한된 소스 / 소스 레이아웃 부분을 놓친 것 같아요 .
얽히고 설킨

나는 ... 나의 나쁜 짓을했다.
Oliver



2

++ , 146 바이트 추가

D,g,@~~,L2_|*;;*|_2L,@,g,D
D,ff,@^^,BG€gBF;;FBg€GB,@D1:?:

xx:?

aa:1
`bb
Bxx;;B
Waa*bb,`yy,$ff>xx,`aa,xx|yy,`bb,Byy,xx:yy

O;;O:,B,`,|,`,>$,`,*W`

온라인으로 사용해보십시오!

재미있는 사실 : 이것은 설명이 시작되기 오래 전에 272 바이트였으며 이제는 Java를 능가합니다.

출력 True완벽하게 균형 문자열과 False달리

만족 스럽게도 결과가 두 번 인쇄되는 것을 방지하기 위해 지루한 palindromize 버전2 바이트만큼 능가합니다 . 또한 가능한 한 적은 죽은 코드를 사용하는 것을 목표로했지만 여전히 주석 처리 된 섹션이 있으며 올바른 값을 인쇄 한 후 코드가 오류 코드 1로 종료됩니다 .

주의 : 이 답변이 개발되는 동안 BF명령 관련 버그 가 수정 되었습니다.

작동 원리

ffgffffgSff(S)S

Sabbbaabacc[[a],[bbb],[aa],[b],[a],[cc]]g하위 목록을 함수 결과로 바꿉니다.

g2x[a][bb][ccc]

[a][a,1]
[bb][b,b,0]
[ccc][c,c,c,1]

xx>2x2x*

g(s)sBF^D,ff,@^^,grr;;

ffgff

  • xxff
  • yyff
  • aa
  • bbyy

gxyabg

abc{...}g{...}ggffg

D,gg,@~~,L2_|*;;*|_2L,@D             (NB: -2 bytes)
D,ff,@^^,BG€{gg}BF;;FB}gg{€GB,@D?:   (NB: +6 bytes)

4 바이트 더 깁니다.

x=5x=15

x+10 ; Explicit argument
+10  ; Implicit argument, as x is active

x`

ffgxxxx:?xxaaaa:11xxbb

`bb
Bxx

엑스엑스에이에이: =1: =¬¬엑스엑스

그런 다음 while 루프에 들어갑니다.

Waa*bb,`yy,$ff>xx,`aa,xx|yy,`bb,Byy,xx:yy

while 루프는 Add ++ 의 구조 입니다. 변수가 아니라 코드에서 직접 작동합니다. 구조체 ,는 작동하는 코드 문을 분리하여 사용합니다. while 및 if 문은 ,변수가 포함 된 infix 명령과 같은 하나의 유효한 문으로 구성된 첫 번째 조건 바로 직전에 조건을 갖습니다. 주목할 사항 : 활성 변수는 조건에서 생략 할 수 없습니다.

aa*bb에이에이와이와이에프에프(엑스)

`yy,$ff>xx

에이에이

  • 1) 새로운 값이 이전 값과 같지 않습니다 (유일한 루프)
  • 2) 새로운 값은 빈 문자열이 아닙니다.

Add ++의 가장 큰 단점 중 하나는 복합 문이 없기 때문에 두 번째 루프 변수가 필요하다는 것입니다. 우리는 두 가지 변수를 할당합니다 :

에이에이: =엑스엑스와이와이
: =¬¬(와이와이)

코드로

`aa,xx|yy,`bb,Byy

|B 엑스엑스와이와이xx:yy

에프에프에이에이

에이에이엑스=와이에이에이와이와이에이에이

그런 다음 최종 진술에 도달합니다.

O

  • 에이에이=1=에프에이에스이자형에프에이에스이자형
  • 에이에이=아르 자형이자형=에프에이에스이자형에프에이에스이자형
  • 에이에이=에프에이에스이자형=아르 자형이자형아르 자형이자형

아르 자형이자형에프에이에스이자형


1

자바 스크립트 (ES6), 76 바이트

부울을 반환합니다.

ff=ss=>ss==(ss=ss.replace(/(.)\1/,''))?!ss:ff(ss)//)(:!?,/1\).(/(ecalper.=(>

온라인으로 사용해보십시오!

@Shaggy에서 제안 : 완벽하게 쌍을 이루기 위해 빈 문자열을 반환 하거나 그렇지 않으면 오류를 발생 시켜 58 바이트 .


1
"반환 값"중 하나가 오류 일 수 있으면 (확인을 기다리는 중) 66 바이트 일 수 있습니다 .
얽히고 설킨

프로그램은 기본적으로 종료 코드를 통해 출력 할 수 있습니다 . 이 답변의 특정 경우에 가능한 결과는 완벽하게 쌍을 이룬 문자열의 경우 종료 코드 0 이고 완벽하게 쌍을 이루지 않은 문자열의 경우 종료 코드 1 입니다. 이는 두 가지 고유 한 값이므로 기준을 충족합니다. 따라서 58 인치는 완벽하게 유효해야합니다.
Mr. Xcoder 2016 년


1

루아 , 178 바이트

p=...S={}for a in p:gmatch"."do E=S[#S]~=a;S[E and#S+1 or#S]=E and a or X end;print(#S==0)--)0S#(tnirp;dne X ro a dna E=]S#ro 1+S#dna E[S;a=~]S#[S=E od"."hctamg:p ni a rof}{=S.=p

온라인으로 사용해보십시오!

그것은 매우 긴 해결책이지만, 이것은 루아 특유의 단점을 상당히 많이 사용합니다. 이것은 실제로 축소 된 무차별 스택 알고리즘입니다. 이 프로그램은 루아의 패턴이 페어 교체를 허용하지 않으며 정규 표현식이 내장되어 있지 않기 때문에 복잡해집니다.

설명:

p=... -- command-line argument
S={} -- the stack
for c in p:gmatch"." do -- shorter than "for i=1,#p do ..."
    E=S[#S]~=c -- check whether we have the right letter on top of stack
    -- could've saved some bytes by doing == instead of ~=
    -- but the double negation is necessary for ternary operator
    -- to work with nil values
    S[E and #S+1 or #S]=E and c or X -- Lua's awesome "ternary operator"
end
-- i'm sure there is a better way to output this (table indexing?)
print(#S==0)

1

Gol> <> , 30 바이트

1ll1**F:}}:{=Q{~~||lzBBzl{Q={F

온라인으로 사용해보십시오!

첫 번째 이후의 모든 것은 B초과 코드이며 실행되지 않습니다. 1입력이 완벽한 페어링 인 것처럼 스택의 최상위를 반환하는 함수입니다 0.

설명:

1       Push 1 as the end string marker
 ll1**  Push n, where n (len+1)*(len+2), 
        This is larger than the amount of steps needed to determine pairing
      F           |  Repeat that many times
       :}}:{=        Compare the first two characters of the string
             Q   |   If they are equal
              {~~    Pop both of them
        String is also rotated by 1
        If the string becomes empty, the 1 is compared to itself and removed.
                   lzB   Return whether the length of the stack is 0
                      Bzl{Q={F  Excess code to match unpaired symbols

1

Cubix , 30 바이트

1O@;??;@ii??O;>>;;;..1Wcc1??1W

온라인으로 사용해보십시오!

1문자열이 완벽하게 쌍을 이루고 그렇지 않으면 아무것도 출력 하지 않습니다.

Cubified

      1 O @
      ; ? ?
      ; @ i
i ? ? O ; > > ; ; ; . .
1 W c c 1 ? ? 1 W . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

쉽게 한

      1 O @
      ; ? .
      . @ .
i ? . . . . > ; ; ; . .
. W c . . . ? 1 W . . .
. . . . . . . . . . . .
      . . .
      . . .
      . . .

논리와 일반 구조는 Mnemonic의 답변과 동일하지만 빈 문자열을 명시 적으로 확인하지 않습니다.



0

파이썬 2 , 114 바이트

import re

e=lambda i,nn=1:e(*re.subn('(.)\\1','',i))if nn else''==i##ieslef'1).('(nbus.er*(e:1=,i adbmal=r tropmi

온라인으로 사용해보십시오!

반환 True완벽하게 짝 문자열 False이 없습니다.

( (.)코드의 줄 바꿈과 일치하지 않기 때문에 실제로 자체를 확인하지 못합니다 ! 그러나 @Cat Wizard는 줄 바꿈이 인쇄 가능한 ASCII 문자가 아니기 때문에 괜찮습니다. 그래서 내 프로그램에서 처리 할 필요가 없습니다.)


이것은 완벽하게 쌍을 이룬 버전입니다.

import re;p=lambda s,n=1:p(*re.subn('(.)\\1','',s))if n else''==i

"게으른"완벽 화 code + '##' + f(code[::-1])는 120 바이트를 제공합니다. (즉, 변수의 이름을 바꾸면 코드 의 주석 절반 안에 더 축소 된 쌍이 도입되어 6 바이트가 절약됩니다.)


re.subnre.subtuple을 반환 하는 약간 알려진 변형입니다 (new_string, number_of_substitutions_made). 정규식 대체 수정 점을 찾는 데 매우 좋습니다!


0

젤리 , 26 24 22 바이트

ẠƬµF€ḂLḣgŒŒgḣLḂ$$€FµƬẠ

온라인으로 사용해보십시오!

거꾸로 코드를 사용하지 않는 링크로 옮기지 않고 제대로 작동하는 것 같습니다.

반환 0을 입력이 완벽하게 페어링 된 경우, 1 그렇지.

활성 코드 :

ŒgḣLḂ$$€FµƬẠ
Œg            Group runs 'abbbcc'->['a','bbb','cc']
       €      For each of these strings:
      $       Monad{
     $            Monad{
   L                  Find the length...
    Ḃ                 ...mod 2. 
                      } -> [1, 1, 0] in this example.
  ḣ               Take this many characters from the string.
                  } -> [['a'], ['b'], []]
        F     Flatten -> ['a', 'b']
          Ƭ   Repeat...
         µ    The last monadic chain until a fixed point is reached.
           Ạ  All. If it is not a perfectly paired string, all elements in the 
              result of Ƭ will be nonempty and 1 is returned.
              If it is perfectly paired, the last element is [] which is falsy
              and 0 is returned.


0

자바 (8) 158 156 154 바이트

n->{for(;n.matches(".*(.)\\1.*");n=n.replaceAll("(.)\\1",""));return  n.isEmpty();}//};)(ytpmEsi.ruter;,"1).("(Aecalper.n=n;)"*.1).(*."(sehctam.n;(rof{>-n

부울 ( true/ false)을 반환합니다 .

@raznagul 덕분에 -2 바이트 .

온라인으로 사용해보십시오.

설명:

n->{                              // Method with String parameter and boolean return-type
  for(;n.matches(".*(.)\\1.*");   //  Loop as long as the String still contains pairs
    n=n.replaceAll("(.)\\1","")); //   Remove all pairs
  return  n.isEmpty();}           //  Return whether the String is empty now
//};)(ytpmEsi.ruter;,"1).("(Aecalper.n=n;)"*.1).(*."(sehctam.n;(rof{>-n
                                  // Comment reversed of the source code,
                                  // minus the pairs: '\\';'ll';'\\';'""))';'n  n';'//'

1
이름 s을 바꾸고 n두 번째 공백을 추가 하면 주석에서 return s.isEmpty제거 s n하여 총 2 바이트를 절약 할 수 있습니다 .
raznagul 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.