[Linuxtrent] Re: Anagrammi in Python

  • From: "tiziano @ work" <tiziano@xxxxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Mon, 09 Aug 2004 10:55:56 +0200


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


Other related posts: