Bir kümenin yinelenmeden sırasız olduğunu unutmayın.
Tanım Bir N -Eşsiz katkı grubu S uzunluğu olan K bir dizi gibi olduğu, tüm N olarak uzunlukta alt-gruplar G farklı sayılara toplamı. Başka bir deyişle, S'nin N- uzunluk alt kümelerinin toplamlarının hepsi farklıdır.
Amaç girdi olarak bir dizi / seti ve bir dizi göz önüne alındığında Nherhangi bir makul biçimde bir fonksiyona ya da tam bir program bulmak ve dönüş ya da çıkış truthy veya Falsey değeri giriş olup olmadığını gösteren (Falsey için erroring tamam) , N - benzersiz katkı.
Her öğenin en fazla bir kez göründüğünü ve her sayının dilinizin yerel veri türünde olduğunu varsayabilirsiniz. Gerekirse, girişin sıralandığını da varsayabilirsiniz. Son olarak, bunu varsayabilirsiniz 0 < N <= K.
Örnekler
Seti S = {1, 2, 3, 5}ve düşünelim N = 2. İşte tüm benzersiz çiftlerin toplamları S(benzersiz olanlar toplamlar için sadece ilgi alanlardır):
1 + 2 = 3
1 + 3 = 4
1 + 5 = 6
2 + 3 = 5
2 + 5 = 7
3 + 5 = 8
Çıktıda herhangi bir kopya olmadığını görebiliriz, bu yüzden S 2 benzersiz bir katkı maddesidir.
Şimdi seti düşünelim T = {12, 17, 44, 80, 82, 90}ve N = 4. Dört uzunluktaki tüm olası toplamlar:
12 + 17 + 44 + 80 = 153
12 + 17 + 44 + 82 = 155
12 + 17 + 44 + 90 = 163
12 + 17 + 80 + 82 = 191
12 + 17 + 80 + 90 = 199
12 + 17 + 82 + 90 = 201
12 + 44 + 80 + 82 = 218
12 + 44 + 80 + 90 = 226
12 + 44 + 82 + 90 = 228
12 + 80 + 82 + 90 = 264
17 + 44 + 80 + 82 = 223
17 + 44 + 80 + 90 = 231
17 + 44 + 82 + 90 = 233
17 + 80 + 82 + 90 = 269
44 + 80 + 82 + 90 = 296
Hepsi benzersizdir ve bu nedenle T 4 benzersiz bir katkı maddesidir.
Test Durumları
[members], N => output
[1, 4, 8], 1 => true
[1, 10, 42], 1 => true ; all sets trivially satisfy N = 1
[1, 2, 3, 4], 3 => true
[1, 2, 3, 4, 5], 5 => true
[1, 2, 3, 5, 8], 3 => true
[1, 2, 3, 4, 5], 2 => false ; 1 + 4 = 5 = 2 + 3
[-2, -1, 0, 1, 2], 3 => false ; -2 + -1 + 2 = -1 = -2 + 0 + 1
[1, 2, 3, 5, 8, 13], 3 => false ; 1 + 2 + 13 = 16 = 3 + 5 + 8
[1, 2, 4, 8, 16, 32], 3 => true
[1, 2, 4, 8, 16, 32], 4 => true
[1, 2, 4, 8, 16, 32], 5 => true
[1, 2, 4, 8, 16, 32], 6 => true
[3, 4, 7, 9, 12, 16, 18], 6 => true
[3, 4, 7, 9, 12, 16, 18], 3 => false ; 3 + 4 + 12 = 19 = 3 + 7 + 9
falsey?
N <= K?