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() 및 여러 배열 조작 기술을 활용했습니다!
  • 11일째를 제외하고 22일째부터 2연승 행진을 이어가고 있습니다!
  • 좋은 웹페이지 즐겨찾기