욕실 보안
코드 출현 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일 차를 시작하세요... 전반적으로 재미있고 상대적으로 빠르게 해결된 한 해를 힘차게 마무리하시기 바랍니다!
Reference
이 문제에 관하여(욕실 보안), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rmion/bathroom-security-4cac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)