성냥개비
코드 출현 2015 8일 차
1 부
escape
방, 응? reduce()
, replaceAll()
및 eval()
우승! 방 탈출, 응?
reduce() , replaceAll() 및 eval() 승리!
원시 텍스트의 문자 수를 세는 것은 간단합니다.
input.replaceAll('\n','').length
eval()
를 사용하면 인메모리 문자를 쉽게 계산할 수 있습니다.eval()
로 전달될 때따라서
"aaa\"aaa"
와 같은 문자열 ......다음과 같이
eval
uated 후:eval("aaa\"aaa")
...되다
aaa"aaa
거기에서 길이가 필요합니다.
reduce()
안에 래핑하면 JavaScript의 내 메모리 내 문자 계산 알고리즘은 다음과 같습니다.input.split('\n')
.reduce(
(sum, str) => sum += eval(str).length
, 0)
전자의 합계에서 후자의 합계를 뺀 후 정답을 생성했습니다!
2 부
regex
및 수학입력: 정규식 및 수학
regex
각 문자열\
및 "
의 모든 항목을 계산합니다.regex
는 다음과 같습니다./\\|\"/g
\\
는 모든 백슬래시 문자|
는 \"
는 모든 큰따옴표 문자수학은 다음과 같습니다.
Set specials to the count of all \ and " characters
Set others to the difference between all characters and specials
Set total to 2 + others + specials times 2
예:
"aaa\"aaa"
specials = ",\,"," -> 4
others = a,a,a,a,a,a -> 6
total = 2 + 6 + (4 * 2) => 16
reduce()
안에 래핑하면 JavaScript에서 인코딩된 문자 계산 알고리즘은 다음과 같습니다.input.split('\n')
.reduce(
(sum, str) => {
let specials = [...str.matchAll(/\\|\"/g)].length
let others = str.length - specials
return sum + 2 + others + specials * 2
}
, 0)
원래 합계에서 새 합계를 뺀 후 정답을 생성했습니다!
JavaScript의 두 부분에 대한 전체 알고리즘:
let codeChars = input.replaceAll('\n','').length
let memoryChars = input.split('\n')
.reduce(
(sum, str) => sum += eval(str).length
, 0)
let encodedChars = input.split('\n')
.reduce(
(sum, str) => {
let extra = [...str.matchAll(/\\|\"/g)].length
let others = str.length - extra
return sum + 2 + others + extra * 2
}
, 0)
console.log("Part 1", codeChars - memoryChars)
console.log("Part 2", encodedChars - codeChars)
내 알고리즘, 애니메이션:
해냈어!!
reduce()
, regex
, replaceAll()
, eval()
를 사용하고 약간의 산술! 그것은 소프트볼 퍼즐처럼 느껴졌습니다.
하지만 시리즈의 첫 해이고 첫 10일에 접어들었습니다.
끝까지 별 두 개를 버는 날이 되기를 바랍니다!
Reference
이 문제에 관하여(성냥개비), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rmion/matchsticks-1mgl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)