2017-03-04 4 views
-3

증상에 따라 잠재적 인 질병을 식별하는 데 사용할 응용 프로그램을 만들려고합니까? 발생한 각 증상 옆에 체크 표시를하여 앱 사용자가 선택하는 증상 목록이 있습니다.SWIFT 3 - myUserSelectedArray로 사전 값 필터링

내 사전은 연관된 증상 (값)으로 20 개여 질병 (키)

myUserSelectedArray 사용자가 선택하는 것이다 증상을 나타내는 것이다.

선택할 수있는 사용자에게 표시 증상의 목록은 앱이 사용자에게 상위 5 병을 표시합니다

내 사전

에서 다양한 질병 (키)의 증상 (값) 모두의 조합이 그들은 잠재적으로 그들의 증상에 기초 할 수 있으며 각 질병에 맞는 증상의 백분율을 표시합니다. 예를 들어, 앱에서 사용자에게 다음을 표시 할 수 있습니다. 1) Flu : 50 % 증상 일치; 2) 부비동 감염 : 40 % 증상 일치; 3) Strep Throat : 증상 일치율 20 %; 4) 귀 감염 : 10 % 증상 일치; 5) 인후 암 : 5 % 증상 일치

이러한 결과를 얻으려면 어떻게 myDictionary를 myUserSelectedArray로 적절하게 필터링해야합니까?

모든 코드 제안은 매우 감사하겠습니다. 나는 앱 개발에 익숙하지 않지만 다양한 아이디어를 가지고있다.

답변

0

주어진 질병에 대한 모든 증상을 나열하고 myDictionary을 (를) 되돌리기위한 사전을 추가로 설정하는 것이 좋습니다. 따라서 총 데이터 구조는 illnessesToSymptoms, symptomsToIllnesses, userSymptoms입니다. 예를 들어

: 당신은 그 확률을 계산하는 데 사용할 수있는 정보와 새 사전을 생성 할 수 있습니다

let illnessesToSymptoms = [ 
    "flu" : ["fever", "runny nose", "chills"], 
    "strep throat" : ["fever", "aches", "sore throat"], 
    "ear infection" : ["ear pain"] 
] 

let symptomsToIllnesses = [ 
    "fever" : ["flu", "strep throat"], 
    "runny nose" : ["flu"], 
    "aches" : ["strep throat"], 
    "ear pain" : ["ear infection"] 
] 

let userSymptoms = ["fever", "runny nose"] 

이 방법.

var possibleIllnesses = [String : Int]() 

for userSymp in userSymptoms { 
    guard let ills = symptomsToIllnesses[userSymp] else { continue } 
    for ill in ills { 
     guard let _ = possibleIllnesses[ill] else { 
      possibleIllnesses[ill] = 1 
      continue 
     } 
     possibleIllnesses[ill]! += 1 
    } 
} 

그리고 거기에서 쉽게 기회를 찾을 수 있습니다. 위의 예를 들어

for (illness, count) in possibleIllnesses { 
    let chance = Double(count)/Double(illnessesToSymptoms[illness]!.count) * 100 
    print("There is a \(chance)% they have \(illness)") 
} 

이 인쇄 :

There is a 33.3333333333333% they have strep throat 
There is a 66.6666666666667% they have flu 
+0

안녕하세요 스티븐, 도움을 주셔서 감사합니다. 모바일 앱을위한 신속하고 안드로이드 코드를 배우는 데 도움이되는 학습 프로그램을 추천 해 주시겠습니까? – salanthonyc

+0

@salanthonyc 거기에 몇 가지 구체적인 가이드가 있지만, 당신 자신의에 뛰어 들어가려고하는 것이 좋습니다거야. 사용할 작은 앱을 찾아보세요. 그 과정에서 어려움을 겪게 될 것입니다. 그렇지만 이것이 가장 좋은 방법이라고 생각합니다. – Stephen