#swift #firebase #firebase-realtime-database #swift5
# #swift #firebase #firebase-база данных в реальном времени #swift5
Вопрос:
Как мне сравнить ответы двух людей и рассчитать процент сходства? Например, в моей базе данных ниже Кевин ответил на QuestionID «да», а на questionId1 — «нет». Джон ответил «да» и «да». Я бы хотел, чтобы вывод показывал 50%, учитывая, что у них один и тот же ответ для 1 и другой ответ для другого.
Я пытаюсь это сделать, но не уверен, как сравнивать других пользователей:
func calculatePercentage(completion: @escaping ([String])->()) {
let postRef = self.databaseRef.child("responses").child("Kevin")
postRef.observeSingleEvent(of: .value, with: { (snapshot) in
var userIdArray = [String]()
for topic in snapshot.children.allObjects as! [DataSnapshot] {
let question1 = topic.childSnapshot(forPath: "questionId").value
let question2 = topic.childSnapshot(forPath: "questionId1").value
userIdArray.append(topic as! String)
}
completion(userIdArray)
})
}
Комментарии:
1. Взгляните на алгоритм Левенштейна для вычисления процента сходства
2. Я не знаю о Левенштейне, но не сработало бы следующее (questionsWithSameAnswer / totalNumberOfQuestions) * 100
3. Спасибо! Существует ли простая формула для вычисления questionswithsameanswer? У меня есть массив [«вопрос1: да», «вопрос2: нет»] — как мне сравнить и посчитать те же ответы с другим массивом [«вопрос1: да», «вопрос2: да»]?
Ответ №1:
- извлеките все ответы, которые вы хотите сравнить, в виде словаря, массивов или объектов. Для получения дополнительной информации и примера см. Документ firebase read_data.
- Сравните каждый вопрос, он одинаковый или нет. затем подсчитайте количество одинаковых ответов.
- Как писал Йоаким Даниельсон, вычисление
percentageOfSameAnswer = (numberOfSameAnswers/numberOfAllQuestions)*100
Комментарии:
1. Спасибо! Я застрял на части «сравнить каждый вопрос». У меня есть массив [«вопрос1: да», «вопрос2: нет»] — как мне сравнить и посчитать те же ответы с другим массивом [«вопрос1: да», «вопрос2: да»]?