Turkcell | Geleceği Yazanlar

Soru & Cevap

Alt küme Hesaplama

21.10.2019 - 02:59

Diyelim bana böyle bir array veriliyor  =[-2,1,3,-4,5]  

Ve bende bunun altkümelerini oluşturmalıyım. Ama bu alt kümeler biribiriyle komşu olmamalı oda şöyle;

[-2, 3, 5]

[-2, 3]      

[-2, -4]    

[-2, 5]     

[1, -4]     

[1, 5]      

[3, 5]      

1690 Görüntülenme

4 Cevap

Yağız KURTOĞLU
04.11.2019 - 19:44

temp = []
mylist = [-2,1,3,-4,5]
def tempfunc(z):
    for i in range(z,len(mylist),2):
        if i+2 < len(mylist):
            temp.append(mylist[i+2])
            print(temp)
    temp.clear()

print("ALT KÜME -- TOPLAM")
for i in range(len(mylist)):
    for k in range(i,len(mylist)):
        if i == k or i+1 == k or i == k+1:
            continue

        else:
            print("[{:>2}, {:>2}] ".format(mylist[i],mylist[k]))
            if k+2 < len(mylist):
                temp.append(mylist[i])
                temp.append(mylist[k])
                tempfunc(k)

ihtiyacınız tam olarak bu sanırım [-2,1,3,-4,5] dizisi için çıktı;:
[-2, 3]
[-2, 3, 5]
[-2, -4]
[-2, 5]
[ 1, -4]
[ 1, 5]
[ 3, 5]

[-2,1,3,-4,5,6] dizisi için ise :
[-2, 3]
[-2, 3, 5]
[-2, -4]
[-2, -4, 6]
[-2, 5]
[-2, 6]
[ 1, -4]
[1, -4, 6]
[ 1, 5]
[ 1, 6]
[ 3, 5]
[ 3, 6]
[-4, 6]
çıtı bu şekilde hesaplanır. (Python ile çözümü)

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Özge
04.11.2019 - 21:30
Çok teşekkür ederim bir çözüm buldum ama tekrar deneyeceğim
Harun Doğan
30.06.2020 - 18:41
Bu soruyu c# dilinde de yapabilir misiniz?
Özge
30.06.2020 - 19:24
https://stackoverflow.com/questions/58484349/c-sharp-from-array-create-an-non-adjacent-subset burda böyle bi çözüm var
Harun Doğan
30.06.2020 - 21:46
Çok teşekkür ederim Özge Hanım :)
ibrahim mert
21.10.2019 - 13:29

Rica ederim tam istediğiniz konu nedir peki.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Özge
21.10.2019 - 14:17
Bu yazdığınız kodda bütün altkümeleri buluyor. Bunu zaten yaptım ben de. <code> int[] kume = { -3, 4, 5 ,6,7,-2}; String s = ""; for (int i = 0; i < Math.Pow(2, 6); i++) { int b = i; s += "["; for (int j = 0; j < kume.Length; j++) { if ((b & 1) == 1) { s += kume[j].ToString() + ","; } b = b >> 1; //bir sonraki } s += "]" ; } Console.WriteLine(s); </code> Yukarıdaki gibi yaptım. Ama ihtiyacım olan verilen dizinin elemanlarından oluşan ve birbiriyle komşu olmayacak. Mesela =[-2,1,3,-4,5] dizi bu şimdi. Ama [-2,1] diye bir altküme olmamalı. Dediğim şekilde de [-2, 3, 5] [-2, 3] [-2, -4] [-2, 5] [1, -4] [1, 5] [3, 5] Sadece bunlar oluşur.
ibrahim mert
21.10.2019 - 11:54

[1]
[2]
[3]
[4]
[3,4]
[2,3]
[2,4]
[2,3,4]
[1,2]
[1,3]
[1,4]
[1,3,4]
[1,2,3]
[1,2,4]
[1,2,3,4]
// çıktısı ise şu şekilde .

 

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

ibrahim mert
21.10.2019 - 11:53

public class Powerset {

    public static void main(String[] args) {
        final List<List<String>> allSubsets = powerSet(Arrays.asList(1, 2, 3, 4), 0);
        for (List<String> subsets : allSubsets) {
            System.out.println(subsets);
        }
    }

    private static List<List<String>> powerSet(final List<Integer> values,
                                               int index) {
        if (index == values.size()) {
            return new ArrayList<>();
        }
        int val = values.get(index);
        List<List<String>> subset = powerSet(values, index + 1);
        List<List<String>> returnList = new ArrayList<>();
        returnList.add(Arrays.asList(String.valueOf(val)));
        returnList.addAll(subset);
        for (final List<String> subsetValues : subset) {
            for (final String subsetValue : subsetValues) {
                returnList.add(Arrays.asList(val + "," + subsetValue));
            }
        }
        return returnList;
    }
}

// şu yöntemle alt kümeler oluşur powerset konusuna bakabilirsiniz.

Sitede yorum yapabilmek için giriş yapın ya da üye olun.

Özge
21.10.2019 - 11:58
Teşekkürler ama tam olarak istediğimi bulamadım bu konuda

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.