구불구불한 트램폴린의 미로, 모두 똑같음
코드 출현 2017 5일차
1 부
이것은 매우 친숙한 것 같습니다 ...
내 작업 알고리즘 작성
Split the input at each newline character into an array of strings
Coerce each string to a number
Set pointer to 0
Set steps to 0
Do as long as pointer references an index within the bounds of the array of jumps
Save the number of the current jump instruction
Increment that number by 1
Update pointer to the sum of pointer and the prior number of the current jump instruction
Increment steps by 1
Return steps
JavaScript로 다음과 같은 간결한 프로그램을 작성했습니다.
let jumps = input.split('\n').map(Number)
const part1 = () => {
let pointer = 0, steps = 0
while (pointer >= 0 && pointer < jumps.length) {
pointer += jumps[pointer]++
steps++
}
return steps
}
예제 입력과 내 퍼즐 입력 모두에서 실행하면 예상되는 정답이 생성되었습니다!
2 부
반전은..그렇게 어렵지 않다
이제 포인터를 업데이트하기 전에 포인터에서 값을 업데이트할 때 조건이 필요한 것 같습니다.
내 작업 알고리즘 업데이트
Split the input at each newline character into an array of strings
Coerce each string to a number
Set pointer to 0
Set steps to 0
Do as long as pointer references an index within the bounds of the array of jumps
Save the number of the current jump instruction
If that number is 3 or more
Decrement that number by 1
Else
Increment that number by 1
Update pointer to the sum of pointer and the prior number of the current jump instruction
Increment steps by 1
Return steps
예제 입력에서 실행하면 오답이 생성됩니다!
무슨 일이야?
알겠어요:
part1
및 part2
함수part2
함수가 사전 처리된 점프 목록에서 작동했습니다해당 명령문을 각 함수로 이동하고 다시 실행한 후:
JavaScript로 거의 동일하고 간결한 프로그램을 작성했습니다.
const part2 = () => {
let jumps = input.split('\n').map(Number)
let pointer = 0, steps = 0
while (pointer >= 0 && pointer < jumps.length) {
pointer += jumps[pointer] >= 3 ? jumps[pointer]-- : jumps[pointer]++
steps++
}
return steps
}
해냈어!!
Reference
이 문제에 관하여(구불구불한 트램폴린의 미로, 모두 똑같음), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rmion/a-maze-of-twisty-trampolines-all-alike-2hdp텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)