[Python] funzione controllo anagrammi
-
- Imperturbabile Insigne
- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [Python] funzione controllo anagrammi
Dovremmo aprire un altro 3d comunque...
Per risparmiare spazio con il crivello, si potrebbe operare a livello di bitwise , piu' roba da c che python a dire il vero, ma il risparmio sarebbe notevole.
Credo si possa fare, faro' prove.
Un miliardo di bit ( range primi ) sarebbero " solo" 125 megabyte se non erro
Per risparmiare spazio con il crivello, si potrebbe operare a livello di bitwise , piu' roba da c che python a dire il vero, ma il risparmio sarebbe notevole.
Credo si possa fare, faro' prove.
Un miliardo di bit ( range primi ) sarebbero " solo" 125 megabyte se non erro
- crap0101
- Rampante Reduce
- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: [Python] funzione controllo anagrammi
come occupazione di memoria di sicuro va meglio, come velocità supponevo di no (e l'ho verificato, dettagli nell'ultima revisione del gist linkato prima). Purtroppo (o per fortuna ) alcuni metodi che non certi linguaggi - tipo il C - sono efficienti, non si rivelano altrettanto convenienti applicandoli ad altri.
Conoscere e "saper usare" un linguaggio (o un attrezzo in generale, che sia anche un trapano o una matita) significa anche sapere cosa puoi farci e come, i modi migliori per utilizzarlo (per dire puoi fare anche buchi con una matita in certi materiali, ma forse è meglio il trapano... e scrivere col trapano è ancora più complicato).
Giusto per, riporto qui la versione bitwise, decisamente lenta (ho anche fatto una prova utilizzando bytearray al posto delle liste, ma non dà grandi risultati
Conoscere e "saper usare" un linguaggio (o un attrezzo in generale, che sia anche un trapano o una matita) significa anche sapere cosa puoi farci e come, i modi migliori per utilizzarlo (per dire puoi fare anche buchi con una matita in certi materiali, ma forse è meglio il trapano... e scrivere col trapano è ancora più complicato).
Giusto per, riporto qui la versione bitwise, decisamente lenta (ho anche fatto una prova utilizzando bytearray al posto delle liste, ma non dà grandi risultati
Codice: Seleziona tutto
def is_primo__refact5(n):
if n <= 5:
return True if n in (2, 3, 5) else False
elif not n % 2:
return False
up = n + 1
a = 0
#a |= (1 << 0); a |= (1 << 1) # ignore this
#for i in range(4, up, 2): a |= (1 << i) # ... and this
lim = int(math.sqrt(n))
pivot = 3
while pivot <= lim:
for i in range(pivot+1, up):
if not i % pivot:
a |= (1 << i)
pivot += 2
return not bool((a >> n) & 1)
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
-
- Imperturbabile Insigne
- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [Python] funzione controllo anagrammi
Supponevo anche io fosse piu' lenta.
Sul fatto dei linguaggi mi trovo parecchio impanicato, faccio fatica a non fare parallelismi col c, anche se non lo conosco a fondo, sono solo un amatore.
Sta sera vorrei trarre due conclusioni su tutto il 3d.
P.S.: complimenti crap per la tua preparazione, era da un po' che notavo i tuoi post
Sul fatto dei linguaggi mi trovo parecchio impanicato, faccio fatica a non fare parallelismi col c, anche se non lo conosco a fondo, sono solo un amatore.
Sta sera vorrei trarre due conclusioni su tutto il 3d.
P.S.: complimenti crap per la tua preparazione, era da un po' che notavo i tuoi post
- crap0101
- Rampante Reduce
- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: [Python] funzione controllo anagrammi
giusto per: https://gist.github.com/crap0101/828f84 ... 527673be93
;-D
;-D
eh be, ma è normale... piano piano si riesce a entrare in ottiche "multiple" :-)
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
-
- Imperturbabile Insigne
- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [Python] funzione controllo anagrammi
Volevo fare un po' il punto, la conclusione. Abbiamo divagato parecchio (in modo molto interessante direi) però ora vorrei chiudere per mettere il risolto.
Abbiamo detto che l'ordinamento potrebbe essere superfluo, come pro si scrive in 2 righe.
Il metodo count potrebbe essere più veloce rispetto all'ordinamento in alcuni casi , in altri no.
Diciamo che se a priori sappiamo che le parole molto probabilmente non sono anagrammi, si potrebbe preferire all'ordinamento,
visto che alla prima incongruenza esce. A mio avviso un buon compromesso tra codice semplice e prestazioni.
E' stato proposto il metodo dei dizionari e io come Claudio (mi pare) non mi spiego come non possa essere gravoso.
Crap ha postato l'implementazione sottostante, ma per ora tralascio , visto che probabilmente sarà un po' un casino tra malloc, chiavi di hash, gestione delle collisioni e via dicendo. Interessante ma ai fini dello studio python per ora meglio lasciar perdere.
Il metodo "ibrido" tra dict e set devo ancora guardarlo bene.
Ora, considerato il mio basso livello attuale, senza star li troppo a guardare le prestazioni, che sono state analizzate, per altro cose veramente interessanti,
quale potrebbe essere in definitiva una scelta pythonica per appunto il mio livello ?
Colgo l'occasione per ringraziarvi tutti, sempre spunti interessanti, magari siamo andati un po' OT, ma io non sono rigido e cosa tira cosa
Abbiamo detto che l'ordinamento potrebbe essere superfluo, come pro si scrive in 2 righe.
Il metodo count potrebbe essere più veloce rispetto all'ordinamento in alcuni casi , in altri no.
Diciamo che se a priori sappiamo che le parole molto probabilmente non sono anagrammi, si potrebbe preferire all'ordinamento,
visto che alla prima incongruenza esce. A mio avviso un buon compromesso tra codice semplice e prestazioni.
E' stato proposto il metodo dei dizionari e io come Claudio (mi pare) non mi spiego come non possa essere gravoso.
Crap ha postato l'implementazione sottostante, ma per ora tralascio , visto che probabilmente sarà un po' un casino tra malloc, chiavi di hash, gestione delle collisioni e via dicendo. Interessante ma ai fini dello studio python per ora meglio lasciar perdere.
Il metodo "ibrido" tra dict e set devo ancora guardarlo bene.
Ora, considerato il mio basso livello attuale, senza star li troppo a guardare le prestazioni, che sono state analizzate, per altro cose veramente interessanti,
quale potrebbe essere in definitiva una scelta pythonica per appunto il mio livello ?
Colgo l'occasione per ringraziarvi tutti, sempre spunti interessanti, magari siamo andati un po' OT, ma io non sono rigido e cosa tira cosa
- crap0101
- Rampante Reduce
- Messaggi: 8242
- Iscrizione: martedì 30 ottobre 2007, 6:33
- Desktop: LXDE
- Distribuzione: Ubuntu 18.04.1 LTS
- Sesso: Maschile
- Località: TO
- Contatti:
Re: [Python] funzione controllo anagrammi
secondo me, inizialmente, non farti troppi problemi... usando python (o qualsiasi altro strumento), leggendo guide ecc, vedendo e provando codici di altri e scrivendone tu, piano piano comincierai a usarlo nel modo più "consono" ed efficiente. È una cosa graduale e - imho - non bisogna forzarla troppo da subito, applicandosi in genere viene da sè. Per dire, quando mi capita di rileggere degli script miei di dieci anni fa, mi viene da piangere
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
-
- Imperturbabile Insigne
- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [Python] funzione controllo anagrammi
Grazie crap, verissimo quello che dici.
A me purtroppo viene da piangere anche su miei script attuali, ah,ah!! Ma il mio e' un hobby.
Inteteressantissime le divagazioni e i metodi esposti.
Direi che posso concludere. Grazie a tutti
A me purtroppo viene da piangere anche su miei script attuali, ah,ah!! Ma il mio e' un hobby.
Inteteressantissime le divagazioni e i metodi esposti.
Direi che posso concludere. Grazie a tutti
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: [Python] funzione controllo anagrammi
Inoltre, algoritmi e linguaggio sono due cose che a un certo punto si dividono.
Credo che uno dei codici più pythonici sia quello che usa Counter del modulo itertools.
E' performante più degli altri? No.
Espone i dettagli dell'algoritmo usato? No.
Gli algoritmi si dovrebbero studiare a prescindere dal linguaggio e ragionando in termini di strutture dati e via dicendo.
Credo che uno dei codici più pythonici sia quello che usa Counter del modulo itertools.
E' performante più degli altri? No.
Espone i dettagli dell'algoritmo usato? No.
Gli algoritmi si dovrebbero studiare a prescindere dal linguaggio e ragionando in termini di strutture dati e via dicendo.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
-
- Imperturbabile Insigne
- Messaggi: 2739
- Iscrizione: mercoledì 16 gennaio 2013, 17:28
- Desktop: ubuntu-2d
- Distribuzione: Ubuntu 12.04.2 LTS i686
- Località: Airuno(Lecco)
Re: [Python] funzione controllo anagrammi
Certo, concordo. Gli algoritmi al di la del linguaggio vanno studiati. Sono tanti e molti non facili. Poi una volta appresi bisogna capire se sono adatti o meno al linguaggio in questione. Mondo vasto, infinito la programmazione. Ma e' il suo fascino
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 14 ospiti