Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

come trovare il modulo

Light (5130 points)
55 181 229
in HW4 obbligatorio by (5.1k points)
nella mia idea io ho provato, a partire dalla prosodia, a iterare sia a destra che a sinistra contemporaneamente, ma a destra normalizzo sempre e questo mi fa fallire dei test perchè si ferma prima dato che trova sottosequenze uguali..allora ho provato con gli slice partendo solo da sinistra e incrementando le due lista di uno a uno e normalizzando quella a destra(che farlo ogni volta ci mette tanto tempo)... ma anche qua mi da problemi... come posso fare? mi sento davvero bloccato
783 views

4 Answers

AdSum (16290 points)
9 20 134
by (16.3k points)

Non ti incartare con ragionamenti troppo complessi. Come risolveresti il problema tu? Tu sai riconoscere una ripetizione e trovarne il modulo, devi solo riapplicare la stessa logica che tu utilizzi.

EDIT:

Rileggendo con attenzione ho notato una cosa:

ma a destra normalizzo sempre e questo mi fa fallire dei test perchè si ferma prima dato che trova sottosequenze uguali

Cosa intendi per normalizzare?

s
stefano.fantauzzi (2260 points)
4 6 17
by (2.3k points)
Ok, farò un ragionamento su quello che dici, ti ringrazio in anticipo per lo spunto di riflessione!
Light (5130 points)
55 181 229
by (5.1k points)
perchè usando sempre map e partendo dall'inizio facevo questa operazione un grandissimo numero di volte
Light (5130 points)
55 181 229
by (5.1k points)
oook adesso ho capito cosa vuol dire corrispondenza biunivoca grazie mille! ora il mio dubbio è come lavorare su questa lista ahhaahhah
AdSum (16290 points)
9 20 134
by (16.3k points)
Mettendoci le mani ti renderai conto che è più semplice di quel che sembra, buon lavoro!
Light (5130 points)
55 181 229
by (5.1k points)
ci sto quasi perchè mi sembra che va bene il controllo biunivoco perchè passa test ma il problema è che devo trovare la frequenza piu piccola...io divido sempre in due ma cosi non va perchè mi prende i multipli certe volte tipo mi prende 90 invece di 15...come faccio ad iniziare dalla piu grande divisione per farmi prendere le porzioni piu piccole??
s
stefano.fantauzzi (2260 points)
4 6 17
by (2.3k points)
Ma perché scorri contemporaneamente da destra e sinistra?Sei sicuro di guadagnarne in efficienza?
Light (5130 points)
55 181 229
by (5.1k points)
no perchè se è un ciclo che si ripete sicuro sta alla fine o all'inizio, ma non è cosi ahahah
cesare.giusti (360 points)
0 0 3
by (360 points)

Ciao, io personalmente ho avuto l'illuminazione leggendo proprio la definizione di corrispondenza biunivoca, che insiste molto sul concetto degli insiemi, che si può sfruttare bene in Python. 

s
stefano.fantauzzi (2260 points)
4 6 17
by (2.3k points)
Ciao, forse mi sfugge qualcosa, ma lavorando con gli insiemi non perdi l'ordine degli elementi, che potrebbe essere importante?

ad esempio a livello di insiemi set(0,1,1,2,3) == set(0,0,1,2,3) ma ovviamente le due sequenza non sono equivalenti
cesare.giusti (360 points)
0 0 3
by (360 points)
Sì, quello che dici tu è vero, però l'intuizione è questa:

partendo proprio dal tuo esempio, sequenza A = [0,1,1,2,3] e sequenza B = [0,0,1,2,3]

ricaviamo tre insiemi: insieme(A), insieme(B) e l'insieme formato dalle coppie di elementi di A e B che hanno lo stesso indice

per l'esempio considerato, l'ultimo insieme conterrà un elemento in più rispetto agli insiemi A e B, il che ci fa capire che non c'è corrispondenza biunivoca.

Se provi a visualizzare gli output delle operazioni descritte direttamente in Spyder dovrebbe essere più facile capire che cosa intendo
s
stefano.fantauzzi (2260 points)
4 6 17
by (2.3k points)
Grazie, mi hai dato modo di pensare in modo alternativo, ho implementato quello che dicie devo dire che, nonostante mi sarei aspettato performances migliori, sembrano essere equivalenti. Grazie comunque!
g
gpdatu (1110 points)
0 0 9
by (1.1k points)
edited by

Il commento che mi ha fatto capire come trovare il modulo è quello di 1937764 su questo post

In sostanza, nella prima sottosequenza "base" di lunghezza N devi trovare le posizioni delle rime. Se le rimanenti sottosequenze di lunghezza N della prosodia hanno rime nelle stesse posizioni, vuol dire che il periodo è N.