Mi piacerebbe essere superato... :-]
superato in:
1. cortezza? 2. inintelleggibilità? 3. complessità? 4. ottimizzazione?
Per quanto riguarda la 4., potresti includere questa modifica
import sys
def a(w): cs = [] if len(w)==1: yield w for i in range(len(w)): if w[i] in cs: yield '' else: cs.append(w[i]) c,r = w[i],w[:i]+w[i+1:] for ra in a(r): yield c+''.join(ra)
for w in a(sys.argv[1]): print w
Evita i doppioni, ottimizza ma non abbassa la complessità dell'algoritmo. Invece per la 3. non c'è nulla da fare, rimane n*n! (se non erro...)
Ora ragiono su 1. e 2.
:)
ciao tiziano -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx