질문 목록이 있습니다. 모든 질문에는 즉 4 개의 답변이 있고 모든 답변은 답변이없는 "끝"까지 다음 질문과 연결된 4 개의 답변이있는 다음 질문에 연결됩니다.Ruby (레일 위) 트리가 원형이 아닌지 확인하십시오.
이것은 나무와 같은 구조이며, 나는 그 방식으로 머물러 있기를 원합니다. 답변이 없으면 이미 묻은 질문에 연결됩니다.
이 작업을 수행하는 유일한 방법은 재귀 함수를 사용하는 것이라고 가정합니다. 이 같은
내가 생각 뭔가 :
MQ = [question.id] Q = question.id
def not_circular(q, mq)
mother_questions = mq
sister_questions = []
question = Question.find(q)
question.answers.each do |a|
if mother_questions.include?(a.next_question)
return a.content
else
if !a.endlevel
sister_questions << a.next_question
end
end
end
mother_questions = mother_questions + sister_questions
question.answers.each do |a|
if !a.endlevel
return not_circular(a.next_question, mother_questions)
end
end
return false
end
하지만 몇 가지 문제를 참조 - 나는의 배열을 생각하고 있었는데 "parent-Questions"와 "next_question"이이 배열에 있는지 확인합니다 (함수를 중지하고 "circular"next_question을 반환합니다). 그러나 예제 코드에서는 "자매 - 다음 질문 "(같은 질문에 대한 대답이 같은 질문을 가리킬 때)이 같을 수 있고 같아야합니다.
누구나 올바른 방향으로 나를 가리킬 수 있습니까?
편집 :
질문에 많은 답변이 있습니다. 대답은 질문에 속합니다. Answer에는 다음 질문을 가리키는 next_question 변수가 있습니다.
EDIT 2 : 트리의 적어도 하나의 분기를 올바르게 테스트하는 기능이 있습니다 (위의 새 코드 참조). 이제는 모든 지점을 테스트하는 방법을 알아 냈습니다.
게시물에 질문 및 답변 연결을 추가 할 수 있습니까? –