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}, 123 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]?
12Her ikisinin katları 3ve 4setlerimizin birbirini dışlamasını engellemek ": neden? Her 12iki 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?