당신의 마당을 위한 GIF처럼

코드 출현 2015 18일차



4/4 별을 위해 노력


  • 오늘의 퍼즐을 건너뛰고 6일차를 완료했습니다
  • 다행히 6일차는 비교적 쉬웠고 별 2개를 받았습니다
  • 오늘도 별 두 개 벌 수 있으면 좋겠어요
  • 해보자!

  • 1 부


  • 이 퍼즐 테마의 기원은?
  • 작업 알고리즘 작성

  • 이 퍼즐 테마의 기원은?


  • 지난 몇 년 동안 이 퍼즐 테마는 거의 같은 시기에 발생했습니다. Days 15-25
  • 이 퍼즐의 지침은 포괄적이고 입문용으로 느껴집니다
  • .
  • 오늘의 퍼즐은 퍼즐의 원년
  • 에서 최초의 퍼즐이라는 생각이 들게 합니다.
  • 처음 접하는 것이 아니라 다행입니다
  • 반대로, 이전의 모든 성공적인 만남을 고려할 때 매우 실행 가능해 보입니다
  • .

    작동하는 알고리즘 작성



    중첩 배열 그리드로 입력 구문 분석:

    input.split('\n')
         .map(line => line.split(''))
    


    인접한 8개 셀 모두의 상대 좌표:

    adjacents = [
      [-1,-1],
      [-1, 0],
      [-1, 1],
      [ 0,-1],
      [ 0, 1],
      [ 1,-1],
      [ 1, 0],
      [ 1, 1]
    ]
    


    그리드의 각 10,000개 셀을 반복합니다.

    for (let row = 0; row < grid.length; row++) {
      for (let col = 0; col < grid[row].length; col++) {
        // access each cell
      }
    }
    


    인접한 셀의 onoff 표시등을 세십시오.

    let neighbors_on = adjacents.map(coord => 
      grid[row + coord[0]] == undefined || 
      grid[row + coord[0]][col + coord[1]] == undefined
      ? 0 : grid[row + coord[0]][col + coord[1]] == '#'
      ? 1 : 0
    ).reduce((lights_on, current) => lights_on + current)
    


    변경해야 하는 각 조명을 대기합니다.

    let changers = []
    
    if (grid[row][col] == "#" && ![2,3].includes(neighbors_on)) {
      changers.push([row, col, "."])
    } else if (grid[row][col] == "." && neighbors_on == 3) {
      changers.push([row, col, "#"])
    }
    

    on인 조명의 수를 반환합니다.

    return [
      ...grid.map(
        el => el.join('')
      ).join('\n')
      .matchAll(/#/g)
    ].length
    


    내 퍼즐 입력에 대한 정답을 생성했습니다!

    2 부


  • 또 다른 실망
  • 각 반복에서 하나 이상의 루프

  • 또 다른 실망


  • 6일차와 마찬가지로 조명이 바뀌는 일정 수의 라운드 후에 메시지나 사진이 표시되기를 바랐습니다
  • .
  • 대신, 규칙에 대한 간단한 변경과 동일한 반복 횟수 후 다른 계산

  • 각 반복에서 하나 이상의 루프



    네 모서리 좌표 목록:

    let corners = [[0,0],[99,0],[99,99],[0,99]]
    


    각 반복이 끝날 때 각각이 남아 있는지 확인하십시오.

    corners.forEach(coord => {
      grid[coord[0]][coord[1]] = "#"
    })
    


    내 퍼즐 입력에 대한 정답을 생성했습니다!

    해냈어!!!!


  • 두 부분을 모두 해결했습니다!
  • 따라서 두 날의 각 부분에서 별 4개를 모두 얻었습니다!
  • 또 다른 인접 셀 확인, 대기 및 변경 알고리즘을 작성했습니다!
  • 내가 built a simulator 라이트 쇼를 재현!
  • 좋은 웹페이지 즐겨찾기