당신의 마당을 위한 GIF처럼
코드 출현 2015 18일차
4/4 별을 위해 노력
1 부
이 퍼즐 테마의 기원은?
작동하는 알고리즘 작성
중첩 배열 그리드로 입력 구문 분석:
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
}
}
인접한 셀의
on
및 off
표시등을 세십시오.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 부
또 다른 실망
각 반복에서 하나 이상의 루프
네 모서리 좌표 목록:
let corners = [[0,0],[99,0],[99,99],[0,99]]
각 반복이 끝날 때 각각이 남아 있는지 확인하십시오.
corners.forEach(coord => {
grid[coord[0]][coord[1]] = "#"
})
내 퍼즐 입력에 대한 정답을 생성했습니다!
해냈어!!!!
Reference
이 문제에 관하여(당신의 마당을 위한 GIF처럼), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rmion/like-a-gif-for-your-yard-1h52텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)