맞춤 세관
코드 출현 2020 6일차
작업: X에 대해 풀기 여기서...
1 부:
X = the sum of each group's count of unique questions answered 'yes'
2 부:
X = the sum of each group's count of shared questions answered 'yes'
예시 입력
abc
a
b
c
ab
ac
a
a
a
a
b
나타내는
1 부
세트에서 고유한 값을 세는 것만큼 간단합니까?
주어진 그룹:
abcx
abcy
abcz
문자열로 표현:
'abcx\nabcy\nabcz'
개행 문자가 제거된 상태에서
'abcxabcyabcz'
문자 배열로 분할:
['a','b','c','x','a','b','c','y','a','b','c','z']
고유한 값 세트에 추가된 각 문자
abcxabcyabcz
++++xxx+xxx+
abcx y z
abcxyz
집합의 크기를 반환
6
예, 그렇게 간단했습니다!
Split the input at each double-new-line character to generate an array of strings
For each string, accumulate a sum - starting from 0
Add to the sum the result of these operations:
Remove any new-line characters in the current string
Split the string into an array of characters
For each character, accumulate a unique set of values - starting empty
Attempt to add the current character to the set
Return the set containing all unique characters added
Return the size of the unique set
Return the sum of all set sizes
다음은 JavaScript로 작성된 알고리즘입니다.
input
.split('\n\n')
.reduce((a,c) => a += c
.replaceAll('\n','')
.split('')
.reduce((a,c) => a.add(c), new Set()).size
,0)
다음은 해당 알고리즘의 시각화입니다.
2 부
순식간에 파트 1 리팩토링
Split the input at each double-new-line character to generate an array of strings
For each string, accumulate a sum - starting from 0
Add to the sum the result of these operations:
Store as the variable, groups:
Split each string at the new-line character to create an array of strings
Split each string into an array of characters
Checking only the first array in groups:
For each character, accumulate a unique set of values - starting empty
If the character exists in each of the arrays inside groups
Attempt to add the current character to the set
Return the set containing all unique characters added
Return the size of the unique set
Return the sum of all set sizes
JavaScript로 작성된 알고리즘은 다음과 같습니다.
stream
.split('\n\n')
.reduce(
(a1, c1) => {
let groups = c1
.split('\n')
.map(el => el.split(''))
return a1 += groups[0]
.reduce(
(a2,c2) => groups.every(i => i.includes(c2))
? a2.add(c2)
: a2, new Set()
)
.size
}, 0)
내 알고리즘의 시각화는 다음과 같습니다.
그 퍼즐은 쉽게 느껴졌다.
내가 얼마나 배웠는지에 대한 증거입니다.
거의 1년 전에 지침을 처음 훑어봤을 때 이 퍼즐을 건너뛴 것을 기억하기 때문입니다.
입증할 수 있는 자기 개선과 성취감에 만세!
Reference
이 문제에 관하여(맞춤 세관), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rmion/custom-customs-2mje텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)