Swift - Как проверить все подмножества и вернуть true, если каждый элемент присутствует в списке - PullRequest
0 голосов
/ 05 декабря 2018

Мне требуется помощь в подходе для проверки наборов в наборе, где каждый поднабор должен присутствовать в списке, прежде чем возвращать значение true.

init(){ 
    let list1 : Set<Int> = [1,2] 
    let list2 : Set<Int> = [3,4] 
    let list3 : Set<Int> = [5,6,7] 
    let list4 : Set<Int> = [8,9]

    listGroups = [list1,list2,list3,list4] 
}

func checklist(_ list: [Numbers]) -> Bool { 
    //I want to check that each sub set(list1-list4) elements exist 
    //E.G. if list contains 2, 3, 7, 8 it will return true 
    //and if list contain 1, 4, 7, freturn false as it doesn't contain a  
    //number from each set 
} 

Я не обязательно хочу, чтобы это было сделано для меня, нообъяснение того, как подходить и почему вы предлагаете этот подход.

Я сохранил простой пример кода, но если вам нужно больше, просто дайте мне знать.

1 Ответ

0 голосов
/ 05 декабря 2018

Swift 4.2

Вы должны проверить, содержит ли каждый list из listGroups хотя бы один Int из numbers массива.Если нет, верните false.Если да, верните true.Для этого вы можете использовать allSatisfy метод

func checklist(_ numbers: [Int]) -> Bool {
    return listGroups.allSatisfy { $0.contains(where: numbers.contains) }
}

Старые версии

Для более старых версий Swift вы можете создать для каждого цикла, который делает подобное, но только для нескольких строк

func checklist(_ numbers: [Int]) -> Bool {

    for list in listGroups {
        if !list.contains(where: numbers.contains) {
            return false
        }
    }
    return true
}
...