문자열에서 고유 한 요소 제거 일반적인 유스 케이스 인 것처럼 보이기 때문에이

문자열에서 고유 한 문자를 찾는 것이 매우 일반적인 유스 케이스 인 것처럼 보이기 때문에이 질문에 왔습니다. 그러나 우리가 그들을 제거하려면 어떻게해야합니까?

입력은 소문자 알파벳 만 포함합니다. a에서 z까지의 문자 만 사용됩니다. 입력 길이는 1-1000 자입니다.

예 :
입력 : helloworld
출력 : llool

목표 : 코드가 가장 짧은
언어입니다. 언어 : TIOBE 언어 중 상위 20 개 언어



답변

Perl, 28 24 자 ( ‘p’옵션에 1 포함)

s/./$&x(s!$&!$&!g>1)/eg

용법:

> perl -pe 's/./$&x(s!$&!$&!g>1)/eg'
helloworld
llool

처음에 나는 부정적인 미리보기와 부정적인 표정으로 이것을 할 수 있다고 생각했지만, 부정적인 표정은 고정 길이를 가져야한다는 것이 밝혀졌습니다. 그래서 대신 중첩 정규 표현식을 사용했습니다. 팁에 대한 폭도 덕분 $&입니다.


답변

(GolfScript, 15 13 자)

:;{.;?);>?)},

GolfScript은 상위 20 중 하나지만, GolfScript없이 codegolf (없는 자신을 실행 )

이전 버전 : ( 스크립트 실행 )

1/:;{;\-,;,(<},

답변

J, 12 자

유효한 Perl 답변을 입력 한 후 잘못된 답변 (TIOBE 상위 20에없는 언어)이 있습니다.

a=:#~1<+/@e.

용법:

   a 'helloworld'
llool

a고유하지 않은 항목 만 출력 하는 동사 를 선언 합니다.


답변

GolfScript (14 자)

:x{{=}+x\,,(},

온라인 데모

이길 수는 없지만 척도를 갖는 것이 유용합니다.


답변

루비 46 40 36

gets.chars{|c|$><<c if$_.count(c)>1}

답변

펄 44

$l=$_;print join"",grep{$l=~/$_.*$_/}split""

실행:

perl -lane '$l=$_;print join"",grep{$l=~/$_.*$_/}split""' <<< helloworld
llool