combinazioni e permutazioni in Python

combinazioni di n elementi di un insieme S
tutti i sottoinsiemi di n elementi di S
Python: itertools.combinations()
permutazioni di n elementi di un insieme S
tutte le sequenze di n elementi di S
Python: itertools.permutations()

tutte le permutazioni

import itertools;

s = {1,2,3}

for p in itertools.permutations(s):
	print(p)

stampa delle permutazioni

import itertools;

s = {1,2,3}

for p in itertools.permutations(s):
	print(p)

risultato:

(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)

tutte le sequenze di tre elementi di s

sono sequenze, non insiemi
(1,2,3) è diversa da (1,3,2)
anche se contiene gli stessi numeri


permutazioni più brevi

itertools.permutations(s) sono tutte le sequenze
che contengono tutti gli elementi di s
senza ripetizioni

lunghezza: secondo argomento, opzionale

itertools.permutations(s, 2) sono tutte le sequenze
che contengono due elementi di s qualsiasi
senza ripetizioni


stampa delle permutazioni

for p in itertools.permutations(s, 2):
	print(p)

risultato:

(1, 2)
(1, 3)
(2, 1)
(2, 3)
(3, 1)
(3, 2)

tutte le sequenze di due elementi di s


combinazioni

itertools.combinations(s, 2)

tutti i sottoinsiemi di 2 elementi di s

insiemi invece che liste


stampa delle combinazioni

import itertools;

s = {1,2,3}

for p in itertools.combinations(s, 2):
	print(p)

risultato della stampa delle combinazioni

import itertools;

s = {1,2,3}

for p in itertools.combinations(s, 2):
	print(p)

risultato:

(1, 2)
(1, 3)
(2, 3)

sono insiemi, non sequenze
(1,2) e (2,1) sono lo stesso insieme
viene stampato solo uno dei due, l'altro sarebbe uguale


combinazioni: numero di elementi

itertools.permutations(s)
itertools.permutations(s, 2)
itertools.combinations(s, 2)

il numero di elementi è opzionale per le permutazioni
obbligatorio per le combinazioni

opzionale = grandezza di s, se non c'è

inutile per le combinazioni
l'unico sottoinsieme di s grande quanto s è s stesso


grandezza qualsiasi

scrivere un programma che stampa tutte le combinazioni
di grandezza qualsiasi
di elementi di s={1,2,3}


grandezza qualsiasi: soluzione

for l in range(len(s)):
	for p in itertools.combinations(s, l):
		print(p)

stessa cosa per le permutazioni