1'den büyük bir tamsayı kümesi alıp X diyelim . Biz tanımlayacak S (i) ' tüm üyelerinin grubu olduğu X- bölünebilir i i> 1 . Bu alt kümelerden bir grup kümesi seçmek ister misiniz?
Sendikaları küme X
Setlerin ikisinde X'in hiçbir elemanı yoktur .
Örneğin şu şekilde yeniden gruplandırabiliriz {3..11}
:
{3,4,5,6,7,8,9,10,11}
S(3): {3, 6, 9, }
S(4): { 4, 8, }
S(5): { 5, 10, }
S(7): { 7, }
S(11):{ 11}
Bazı kümeler bu şekilde ifade edilemez. Örneğin, alırsak {3..12}
, 12
3 ve 4'ün katları, setlerimizin karşılıklı olarak birbirini dışlamasını önler.
Bazı kümeler birden çok şekilde ifade edilebilir, örneğin {4..8}
şu şekilde temsil edilebilir:
{4,5,6,7,8}
S(4): {4, 8}
S(5): { 5, }
S(6): { 6, }
S(7): { 7, }
ama aynı zamanda şu şekilde de temsil edilebilir:
{4,5,6,7,8}
S(2): {4, 6, 8}
S(5): { 5, }
S(7): { 7, }
Görev
Amacımız girdi olarak bir set alacak ve bu şekilde onu kapsayan en az sayıda altkümeyi çıktılayacak bir program yazmaktır. Hiçbiri yoksa, pozitif bir tam sayı dışında bir değer çıkarmanız gerekir (örneğin 0
).
Bu bir kod golf sorusudur, bu nedenle cevaplar bayt cinsinden puanlandırılacak, daha az bayt daha iyi olacaktır.
Testler
{3..11} -> 5
{4..8} -> 3
{22,24,26,30} -> 1
{5} -> 1
[5..5]
? Gibi şeyler alabilir miyiz [8..4]
?
12
Her ikisinin katları 3
ve 4
setlerimizin birbirini dışlamasını engellemek ": neden? Her 12
iki alt kümeye gitmek gerektiren sorun ifadesinde başka bir şey görmüyorum .
[22,24,26,30]
hepsi katlarıdır 2
. Bunu silmek ve korumalı alana yerleştirmenin daha iyi olmayacağından emin misiniz?