2016-12-27 1 views
1

의사 결정 트리 기반의 양식을 작성했습니다. 이 양식은 4 가지 질문으로 구성된 페이지로 구성되어 있습니다. 각 페이지에는 새로운 질문으로 분기하는 질문 하나가있을 수 있습니다. 페이지는 분기 이름 및 페이지 번호에 대한 데이터 속성을 가진 div 형식입니다 (data-branch = "whatever"및 data-page-number = "1"). 새 분기, nextBranch 변수가 설정되고 네 가지 질문에 모두 응답하면 분기 이름과 페이지 번호 값이 로그에 추가되고 next() 메서드가 호출됩니다. 이 방법은 nextBranch 변수와 로그의 마지막 항목 (분기 이름 및 페이지 번호)을 기반으로 다음 페이지를 찾습니다. 의사 결정 트리 기반 양식 재귀

nextBranch가 currentBranch 같지 않으면

, 사용자는 nextBranch의 첫 페이지가되지만 nextBranch가 currentBranch 같으면 상기 PAGENUMBER가 증가되고, 사용자는 현재 다음 페이지로 이동합니다 분기. 결과가 없으면 반복의 분기 값이 currentBranch 값과 다를 때까지 페이지 로그를 역순으로 반복하는 메소드를 호출합니다. 이러한 값이 일치하지 않으면 현재 반복에서 pageNumber를 증가시키고 해당 페이지를 찾습니다.

이 방법은 원래 분기를 분기 할 때 잘 작동하지만 분기를 분기 할 때 로그를 역순으로 반복하면 더 이상 작동하지 않습니다.

나는 아래의 트리 구조를 갖고 있다고하자, 나는 A1에서 시작하여 C2에 저를 이끌어 질문에 대한 답변, 내 로그는 다음과 같이 표시됩니다

[{'A': '1'},{'A': '2'},{'A': '3'},{'B': '1'},{'B': '2'},{'C': '1'},{'C': '2'}] 

언제 도달 C2는 더 C3 없기 때문에 , 로그를 역순으로 반복합니다. 분기 이름이 마지막 항목과 같지 않은 첫 번째 항목은 B2이므로 페이지 번호를 증가 시키면 B3이 반환됩니다. 이는 유효합니다. 여기 페이지를 증가 C3 때를 반환 - 이제 로그가 다시 역으로 로그를 통해 B3의 I 루프를 마무리 한 후이

[{'A': '1'},{'A': '2'},{'A': '3'},{'B': '1'},{'B': '2'},{'C': '1'},{'C': '2'},{'B: '3'}] 

처럼 보이는 첫 번째 항목은 나는 그 지점 이름의 마지막 항목에없는 동일 C2이다 도달 실제로 A4를 반환해야합니다 ...

현재 제안 된 방법으로 해결책을 찾는데 어려움을 겪고 있습니다. 그래서 어떤 제안이라도 좋아할 것입니다 !! 내가 로그가 모든 페이지 뷰를 유지해야하는, 그래서 아마 로그를 검색하는 것이 할 수있는 일이 아니다 가정 https://jsfiddle.net/yphyk3sq/

enter image description here

답변

1

- 여기

내가 현재 가지고있는의 바이올린입니다.

대신이 역방향 검색을 위해 스택을 만들 수 있습니다. 지점 ID가 변경 될 때마다 이전 ID를 스택에 푸시합니다. C 페이지가 부족할 때 스택을보고 B가 이전 페이지임을 확인하면 B를 팝하고 다음 B 페이지로 계속 진행합니다. B 페이지가 부족하면 스택 맨 위에 A가 표시되고 원하는대로 이동합니다.

+0

때로는 두 번째 눈 쌍이 필요합니다. 현재 분기에 페이지가 더 이상 없을 때 A3, B2 및 C2를 기록한 다음 (이 예에서) 스택을 팝하는 것이 좋습니다. – Neil