어댑터 어레이
코드 출현 2020 10일차
NullDev의 알고리즘을 사용하여 Part 2의 시뮬레이터를 사용해 보십시오.
작업: X에 대해 풀기 여기서 X =
예시 입력
16
10
15
5
1
11
7
19
6
12
4
다음을 나타냅니다.
1 부
혼란, 그 다음 명료성, 그 다음 자신감
작동하는 알고리즘 작성
Process the input into a sorted array of numbers
Insert two values: one at the beginning and another at the end
Accumulate a 3-element array representing tallies for each 1-, 2- and 3-integer difference between each subsequent value
Return the product of the integers tallying all 1- and 3-integer differences
내 알고리즘의 시각화는 다음과 같습니다.
2 부
나는 그것이 오는 것을 보았어야 했다
내가 알아냈다고 생각했어
첫 번째 예제 입력을 참조로 사용하여 순서대로 번호는 다음과 같습니다.
1, 4, 5, 6, 7, 10, 11, 12, 15, 16, 19
내 잘못된 논리는 해결책을 향한 다음 경로를 따랐습니다.
Legend:
0 numbers in-between = 1
1 number in-between = 2
2 numbers in-between = 4
1 - 4: 0 -> 1
4 - 7: 2 -> 4
7 - 10: 0 -> 1
10 - 12: 1 -> 2
12 - 15: 0 -> 1
15 - 16: 0 -> 1
16 - 19: 0 -> 1
1 * 4 * 1 * 2 * 1 * 1 * 1
4 * 2
8
안타깝게도 두 번째 예에서 이 공식을 사용하면 19208이 아닌 ~2000이 생성됩니다.
나는 그것이 그렇게 간단하다는 것을 알고 있었다!
고맙게도 제가 즐겨 사용하는 JavaScript 솔버인 NullDev는 시뮬레이션을 사용하여 완전히 이해해야 한다고 느꼈던 우아한 하위 5줄 솔루션을 작성했습니다!
Create step, a 1-element array containing the value 1
For i from 0 to the maximum value in the sorted array of numbers from the input
Set j to i + 1
While the number at location j in the sorted array is less than or equal to i + 3
Set the item at location j in step equal to the sum of the item at location i in step and either the item at location j in step or 0
Increment j
Return the last value in step
NullDev의 알고리즘이 어떻게 작동하는지 머릿속으로 추리할 때 혼란스러웠습니다.
마지막에
console.log
를 사용하여 채워진 step
배열을 표시한 후에도 여전히 각 반복에서 수행하는 작업을 보지 못했습니다.각 반복을 시뮬레이션해야 한다는 것을 알았습니다.
나는 그것이 어떻게 작동하는지 봐야했다
if...else
및 for
루프 조합 대신 while
절로 리팩토링하는 것이 그리 어렵지 않았습니다Try the simulator for Part 2 using NullDev's algorithm
NullDev의 솔루션을 보면 내가 1-2-4 배가 논리에서 '무언가'에 있음을 알 수 있습니다. 하지만 분명히 내 접근 방식이 너무 얕았습니다.
파트 2를 풀지 못했을 수도 있지만 이 퍼즐을 풀고 다른 솔버의 알고리즘을 시뮬레이트하는 것이 즐거웠습니다.
Reference
이 문제에 관하여(어댑터 어레이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rmion/adapter-array-15ac텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)