PPCG의 일부 전통은 일부 사용자가 아나그램 (이전 문자를 재정렬하여 형성된 새로운 이름)으로 일시적으로 이름을 변경하는 것이되었습니다.
때때로 누가 누구인지 찾기가 어려워집니다. 프로그램이나 함수를 사용하여 두 구가 서로의 표현인지 알 수 있습니다.
도전
프로그램 또는 함수는 두 개의 문자열을 가져 와서 서로의 아나그램 인 경우 진실한 결과를 만들어 내고 그렇지 않으면 거짓입니다.
규칙
- 입력은 문자 (ASCII 65-90 및 97-122), 숫자 (ASCII 48-57) 또는 공백 (ASCII 32) 만 포함합니다.
- 아나그램 관계는 경우와 관계가 없습니다. “Arm”과 “RAM”은 아나그램입니다.
- 공백도 계산하지 않습니다. “keyboard”와 “Barked Yo”는 아나그램입니다.
- 모든 내장 허용
- 입력 형식은 유연합니다 (두 개의 문자열, 두 개의 문자열 배열, 적합한 구분 기호가있는 두 구를 모두 포함하는 문자열).
코드 골프. 가장 적은 바이트가 이깁니다.
테스트 사례
Truthy :
Lynn, Nyl N
Digital Trauma, Tau Digital Arm
Sp3000, P S 3000
Manage Trash So, Those anagrams
거짓
Calvins Hobbies, Helka Homba
Android, rains odd
In between days, bayed entwine
Code golf, cod elf got
답변
05AB1E , 9 8 바이트
암호:
lvyð-{}Q
설명:
l # Lowercase the strings
vy } # Map over the list, for each...
ð- # remove spaces
{ # and sort
Q # Check equality
답변
망막, 25
i+`(\w)(.*,.*)\1
$2
^\W*$
온라인으로 사용해보십시오! 또한 수정 된 여러 줄 버전을 실행할 수 있습니다 .
쉼표 앞의 문자와 쉼표 뒤의 일치 문자를 삭제하십시오. 남은 글자가 없다면 그것은 아나그램입니다.
답변
Pyth, 11 10 바이트
나에게 힘을 가르쳐 준 @FryAmTheEggman에게 감사합니다 ;
!
qFmSr-d;0Q
두 개의 문자열 목록을 입력으로 사용합니다.
설명
qFmSr-d; 0Q # Q = 입력 람다 변수로서 d를 갖는 m Q # 맵 Q -디; # 문자열에서 필터 공간 r 0 # 소문자로 변환 S # 문자열의 모든 문자 정렬 qF # 결과 목록을 펼치고 동등성을 점검하십시오
답변
파이썬 2, 63 61 바이트
lambda*l:len({`sorted(s.lower())`[2::5].strip()for s in l})<2
사실, n 개의 인수를 취하고 모든 n 개가 상호 회문 인지를 결정 하는 익명 함수 ! f("Lynn", "Nyl N")
을 반환합니다 True
.
이 세트 이해 트릭은 xnor입니다. 두 바이트를 절약했지만 이전 접근법은 매우 깔끔했습니다.
exec"a=`sorted(input().lower())`[2::5].strip();a"*2;print a==aa
답변
젤리, 12 바이트
ḟ€⁶O&95Ṣ€QLḂ
작동 원리
ḟ€⁶O&95Ṣ€QLḂ Main link. Input: A (list of strings)
⁶ Yield ' '.
ḟ€ Filter it from each string.
O Apply ordinal to all characters.
&95 Take bitwise AND with 95 to make the ordinals case-insensitive.
Ṣ€ Sort each list of ordinals.
Q Deduplicate the list.
L Get the length.
Ḃ Compute the length's parity (1 -> 1, 2 -> 0).
대체 버전, 비경쟁 (9 바이트)
젤리의 대문자 원자에는 버그가 있었으며, 젤리는 여전히 목록의 평등을 테스트하기 위해 내장 기능이 없었습니다 …
ḟ⁶ŒuṢµ€⁼/
작동 원리
ḟ⁶ŒuṢµ€⁼/ Main link. Input: A (list of strings)
µ€ Map the chain to the left over A.
⁶ Yield ' '.
ḟ Filter it from the string.
Œu Cast to uppercase.
Ṣ Sort.
⁼/ Reduce by equality.
답변
CJam, 11 12 14 바이트
@FryAmTheEggman 덕분에 3 2 바이트가 제거되었습니다.
{lelS-$}2*=
{ }2* e# do this twice
l e# read line as a string
el e# make lowercase
S- e# remove spaces from string
$ e# sort
= e# compare strings
답변
자바 스크립트, 69 61 60 59 바이트
@ ӍѲꝆΛҐӍΛПҒЦꝆ 감사 합니다. 태닝와 오프 1 바이트 ( 지적 에 의해 @apsillers )
n=>m=>(G=s=>[]+s.toLowerCase().split(/ */).sort())(n)==G(m)
f=n=>m=>
(G=s=>[]+s.toLowerCase()
.split(/ */)
.sort()
)(n)==G(m)
F=(n,m)=>document.body.innerHTML+=`<pre>f('${n}')('${m}') -> ${f(n)(m)}</pre>`
F('Luis Mendo','Don Muesli')
F('Calvins Hobbies','Helka Homba')
F('Android','rains odd')
F('In between days','bayed entwine')
F('Code golf','cod elf got')
F('Lynn','Nyl N')
F('Digital Trauma','Tau Digital Arm')
F('Sp3000','P S 3000')
F('Manage Trash So','Those anagrams')