욕실 보안

코드 출현 2016 2일차



1 부


  • 데이터 구조 설정
  • 더블-reduce() 퍼즐을 푸는 r

  • 데이터 구조 설정



    방향에 따라 배열을 탐색하기 위한 내 지도:

    {
      'U': [-1,0],
      'R': [0,1],
      'D': [1,0],
      'L': [0,-1]
    }
    

    keypad에 대한 내 데이터 구조:

    [
      [1,2,3],
      [4,5,6],
      [7,8,9]
    ]
    

    5[1,1]에 있습니다.

    퍼즐을 풀기 위한 double-reduce() r



    의사 코드 내 알고리즘의 반복 부분:

    For each line from the input
      Accumulate a code - starting as an empty string
      For each character in the line
        Accumulate a 2-element array of coordinates
        If the next location is a valid cell
          Return the coordinate of the next location
        Else
          Return the coordinate of the current location
      Add the value at the final cell to the string
    


    JavaScript에서 내 알고리즘의 반복 부분:

    input.reduce(
      (code, line) => {
        key = line.reduce(
          (coords, path) => 
            keypad[coords[0] + map[path][0]] &&
            keypad[coords[0] + map[path][0]][coords[1] + map[path][1]]
            ? [ coords[0] + map[path][0],
                coords[1] + map[path][1] ]
            : coords,
            key.slice()
        )
        return code += keypad[key[0]][key[1]]
      }, ""
    )
    


    파트 1: 해결!

    2 부



    세 가지 업데이트 및 완료!



    업데이트 1: 데이터 구조 확장


    keypad에 대한 내 데이터 구조:

    [
      [0,  0,  1,  0,  0],
      [0,  2,  3,  4,  0],
      [5,  6,  7,  8,  9],
      [0, 'A','B','C', 0],
      [0,  0, 'D', 0,  0]
    ]
    


    업데이트 2: 시작 위치 조정


    5는 현재 [2,0]에 있습니다.

    업데이트 3: 배열 셀 확인 조건에 절 추가 - 값 0 확인



    JavaScript에서 내 알고리즘의 반복 부분:

    input.reduce(
      (code, line) => {
        key = line.reduce(
          (coords, path) => 
            keypad[coords[0] + map[path][0]] &&
            keypad[coords[0] + map[path][0]][coords[1] + map[path][1]] &&
            keypad[coords[0] + map[path][0]][coords[1] + map[path][1]] !== 0
            ? [ coords[0] + map[path][0],
                coords[1] + map[path][1] ]
            : coords,
            key.slice()
        )
        return code += keypad[key[0]][key[1]]
      }, ""
    )
    


    파트 2: 해결!

    해냈어!!


  • 두 부분 모두 해결했습니다!
  • 중첩된 reduce() s를 다시 사용합니다!
  • 그리고 내 검증된 진정한 어레이 통과 기술을 사용합니다!

  • 1일 차를 시작하세요... 전반적으로 재미있고 상대적으로 빠르게 해결된 한 해를 힘차게 마무리하시기 바랍니다!

    좋은 웹페이지 즐겨찾기