문자열에서 고유 한 문자를 찾는 것이 매우 일반적인 유스 케이스 인 것처럼 보이기 때문에이 질문에 왔습니다. 그러나 우리가 그들을 제거하려면 어떻게해야합니까?
입력은 소문자 알파벳 만 포함합니다. 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
고유하지 않은 항목 만 출력 하는 동사 를 선언 합니다.
답변
답변
루비 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
답변
K, 18
{x@&x in&~1=#:'=x}