apro questo thread per una richiesta al quanto insolita: devo scrivere un programma in python che dato un'insieme di x elementi, calcoli quanti sottoinsiemi nati dalla combinazione di un numero y di elementi (che varia da 1 al numero di elementi) si possono creare. Fino a qua non ho avuto problemi. Lo scoglio reale è che python non tiene conto che {1,2,3} e {3,2,1} sono lo stesso insieme, aggiungendo quindi, un sacco di insiemi che invece io non devo considerare. Sapete aiutarmi? Qua sotto posto il codice che ho già scritto. Grazie in anticipo!
Marco
Codice: Seleziona tutto
#!/usr/bin/python
# -*- coding: utf8 -*-
# Copyright (c) 2015, marco2
from sys import stdout
from itertools import product
print "#"*70
print "InsiemCounter"
print "Realizzato per dimostrare scientificamente teorie matematiche"
print "#"*70
print ""
stdout.write("Inizzializzo la lista...")
l = []
print " [OK]"
def create(n):
a = 0
l = []
t = "Genero un insieme l di %s elementi..." %(n)
stdout.write(t)
while a <= n-1:
s = "%s" %(a)
l += [s]
a += 1
if len(l) != n:
print " [ERROR]"
print "Log: "
print "Richiesti %s elementi" %(n)
print "Generati %s elementi" %(len(l))
l
else:
print " [OK]\nGenerato un insieme di %s elementi" %(len(l))
return l
print "Non superare il 9 o potrebbero ricorrere degli errori"
l = create(input("Numero di elementi da inserire: "))
n = len(l)-1
ins = [l,[]]
while n != 0:
combo_pack = product(l, repeat = n)
for combo in combo_pack:
c = 0
a = "".join(combo)
now = []
while c != len(a):
if a[c] not in now:
now += a[c]
c += 1
c = 0
d = len(ins)
ins += [now]
n = n-1