자바 스크립트 (ECMAScript를 6) - 148 개 139 135 문자
버전 2 :
배열 이해를 사용하도록 업데이트되었습니다.
[a[i][0]for(i in a=[].concat(...s.split('\n').map(x=>x.split(/ */).sort().map((x,i,a)=>x+(a[i-1]==x?++j:j=0)))).sort())if(a[i-1]<a[i])]
버전 1 :
[].concat(...s.split('\n').map(x=>x.split(/ */).sort().map((x,i,a)=>x+(a[i-1]==x?++j:j=0)))).sort().filter((x,i,a)=>a[i-1]!=x).map(x=>x[0])
다음을 가정합니다.
- 입력 문자열은 변수에 있습니다
s
.
- 우리는 입력의 경우를 무시할 수 있습니다 (질문에 의해 지정된대로 – 그것은 모두 대문자 또는 소문자입니다);
- 출력은 문자 배열입니다 (JavaScript가 문자 목록에 대한 OP의 요구 사항에 근접 할 수있는 정도). 과
- 출력이 콘솔에 표시됩니다.
의견으로 :
var l = s.split('\n') // split the input up into sentences
.map(x=>x.split(/ */) // split each sentence up into letters ignoring any
// whitespace
.sort() // sort the letters in each sentence alphabetically
.map((x,i,a)=>x+(a[i-1]==x?++j:j=0)))
// append the frequency of previously occurring identical
// letters in the same sentence to each letter.
// I.e. "HELLO WORLD" =>
// ["D0","E0","H0","L0","L1","L2","O0","O1","R0","W0"]
[].concat(...l) // Flatten the array of arrays of letters+frequencies
// into a single array.
.sort() // Sort all the letters and appended frequencies
// alphabetically.
.filter((x,i,a)=>a[i-1]!=x) // Remove duplicates and return the sorted
.map(x=>x[0]) // Get the first letter of each entry (removing the
// frequencies) and return the array.
원하는 경우 :
- 문자열로 반환
.join('')
하고 끝에 추가 하십시오.
- 사용자로부터 입력을받은 다음
s
변수를 prompt()
; 또는
- 함수로 작성 하고 시작 부분에
f
추가 f=s=>
하십시오.
달리는:
s="HELLO\nI LOVE CAT\nI LOVE DOG\nI LOVE MOMMY\nMOMMY LOVE DADDY";
[].concat(...s.split('\n').map(x=>x.split(/ */).sort().map((x,i,a)=>x+(a[i-1]==x?++j:j=0)))).sort().filter((x,i,a)=>a[i-1]!=x).map(x=>x[0])
출력을 제공합니다.
["A","C","D","D","D","E","G","H","I","L","L","M","M","M","O","O","T","V","Y","Y"]
v
출력에 문자가 있어야합니다 ;)