3면이 있는 정사각형
코드 출현 2016 3일차
1 부
3개의 합과 3개의 비교
어떤 삼각형이 유효한 삼각형인지 결정해야 합니다.
지침에 따라 유효한 삼각형에 대한 증명:
the sum of any two sides must be larger than the remaining side
이것은 최고인 것 같습니다. 아마도 유일한 것일까요? - 접근하다:
|\
| \
| \
A| \ B
| \
|_____\
C
A + B > C?
A + C > B?
B + C > A?
자바스크립트 내 알고리즘:
input.reduce((valids, triangle) => {
let [A,B,C] = [...triangle.matchAll(/\d+/g)].map(el => +el[0])
return valids += (
A + B > C &&
A + C > B &&
B + C > A
) ? 1 : 0
}, 0)
파트 1의 정답을 생성했습니다!
2 부
행 대신 열
단일
for
대신 중첩된reduce()
루프가 필요한 재미있는 트위스트입니다.의사 코드로서의 내 알고리즘 :
Extract the digits from each line
Generate a 3-element array in place of the string
Set valid count as 0
For each 3-element array except the last two, skipping two each time
For each element in the array
Generate a 3-element array containing the numbers in the same position as the element in the array...from the current and next two arrays
Increment valid count by 1 only if each pair of side lengths is greater than the non-included side
Return valid count
자바스크립트 내 알고리즘:
let sides = input.map(
line => [...line.matchAll(/\d+/g)].map(el => +el[0])
)
let valids = 0
for (let row = 0; row < sides.length - 2; row += 3) {
for (let col = 0; col < 3; col++) {
let [A,B,C] = sides.slice(row, row + 3).map(el => el[col])
valids += (
A + B > C &&
A + C > B &&
B + C > A
) ? 1 : 0
}
}
return valids
파트 2의 정답을 생성했습니다!
해냈어!!
regex
, reduce()
및 여러 배열 조작 기술을 활용했습니다! Reference
이 문제에 관하여(3면이 있는 정사각형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rmion/squares-with-three-sides-4hi0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)