[HW4req] Come ottenere ES da un verso

MRinaudo (3660 points)
18 40 50
asked Nov 6, 2020 in HW4 obbligatorio by MRinaudo (3,660 points)
closed Nov 9, 2020 by MRinaudo
Ciao a tutti,

se io ho, per esempio, il seguente verso: "Paperino andò al mare a pescare", che poi trasformo in "paperinoandoalmareapescare", come faccio ad ottenere un lista con tutte le parole ES: ["pa", "pe", "ri", "noa", "ndoa", "lma", "rea", "pe", "sca", "re"] ?

Grazie.

Saluti.
669 views
closed with note: Risolto.

5 Answers

Best answer
s
stefano.fantauzzi (2260 points)
3 6 17
answered Nov 8, 2020 by stefano.fantauzzi (2,260 points)
selected Nov 9, 2020 by MRinaudo

Riporto quello che ho scritto nel commento come risposta indipendente, scusami se faccio spam, ma penso sia più facile per tutti da individuare in questo modo, potrebbe essere d'aiuto ad altri.

Puoi anche pensare che il numero di ES non è in fondo altro che il numero di gruppi di vocali consecutive, aumentato di uno nel caso in cui il verso non termini con una vocale.

O equivalentemente è il numero di gruppi di consonanti, aumentato di uno nel caso in cui il verso inizi con una vocale.

Sono solo degli spunti di riflessione, valuta bene tutte le possibilità, potresti guadagnarne in efficienza!

EDIT

Faccio l'esempio che aiuta sempre: 'paperinoandoalmareapescare' ha i seguenti gruppi di vocali --> a,e,i,oa,oa,a,ea,e,a,e che sono in numero 10. Poiché il verso termina con una vocale queste sono esattamente in numero uguale agli ES

'paperinoandoalmareapescarer' ha gli stessi gruppi di vocali ma il numero di ES è 11, in quanto il verso termina con una consonante.

Puoi invertire e fare lo stesso con i gruppi di consonanti ovviamente!

MRinaudo (3660 points)
18 40 50
commented Nov 9, 2020 by MRinaudo (3,660 points)

Ciao stefano.fantauzzi,

ragionando sulla tua risposta, sono riuscito a trovare una soluzione .

Grazie mille! smiley

s
stefano.fantauzzi (2260 points)
3 6 17
commented Nov 9, 2020 by stefano.fantauzzi (2,260 points)
Ottimo, credo che tu ne abbia guadagnato molto in efficienza, o almeno così è stato per me!
g
gpdatu (1110 points)
0 0 9
answered Nov 8, 2020 by gpdatu (1,110 points)
Io ho fatto ragionando in questo modo: scorrendo per  "paperinoandoalmareapescare", se trovo una consonante e la lettera che la precede è una vocale, vuol dire che è appena terminato un ES
MRinaudo (3660 points)
18 40 50
commented Nov 8, 2020 by MRinaudo (3,660 points)

Grazie per la tua risposta gpdatu,

pensi che valga la pena controllare anche la lettera successiva, quindi nella posizione i + 1 ?

Saluti.

g
gpdatu (1110 points)
0 0 9
commented Nov 8, 2020 by gpdatu (1,110 points)
Non capisco perché dovresti farlo.
s
stefano.fantauzzi (2260 points)
3 6 17
commented Nov 8, 2020 by stefano.fantauzzi (2,260 points)
edited Nov 8, 2020 by stefano.fantauzzi
Puoi anche pensare che il numero di ES non è in fondo altro che il numero di gruppi di vocali consecutive, aumentato di uno nel caso in cui il verso non termini con una vocale.

O equivalentemente è il numero di gruppi di consonanti, aumentato di uno nel caso in cui il verso inizi con una vocale.

Sono solo degli spunti di riflessione, valuta bene tutte le possibilità, potresti guadagnarne in efficienza!

EDIT

Faccio l'esempio che aiuta sempre: 'paperinoandoalmareapescare' ha i seguenti gruppi di vocali --> a,e,i,oa,oa,a,ea,e,a,e che sono in numero 10. Poiché il verso termina con una vocale queste sono esattamente in numero uguale agli ES

'paperinoandoalmareapescarer' ha gli stessi gruppi di vocali ma il numero di ES è 11, in quanto il verso termina con una consonante.

Puoi invertire e fare lo stesso con i gruppi di consonanti ovviamente!
MRinaudo (3660 points)
18 40 50
commented Nov 8, 2020 by MRinaudo (3,660 points)

Pensavo di verificare la lettera nell'indice successivo per vedere se è dello stesso tipo (consonate o vocale) della lettera attuale. Tutto questo, per verificare le lettere dello stesso tipo.

Ma probabilmente non è l'approccio giusto frown.

MRinaudo (3660 points)
18 40 50
commented Nov 8, 2020 by MRinaudo (3,660 points)

Ciao stefano.fantauzzi,

grazie per la tua risposta.

Non avevo pensato a questo approccio, provo ad implementare wink.

Saluti

s
stefano.fantauzzi (2260 points)
3 6 17
commented Nov 8, 2020 by stefano.fantauzzi (2,260 points)

Fammi sapere come va a finire, sono curioso! wink

AdSum (16290 points)
9 20 134
answered Nov 8, 2020 by AdSum (16,290 points)

un 'elemento sonoro' (ES) è una successione massimale di 1 o più consonanti seguite da 1 o più vocali

Scorri la stringa e seguendo la logica sopra spezzi la stringa

N
NAT (1260 points)
0 0 6
answered Nov 8, 2020 by NAT (1,260 points)
Devi seguire attentamente il ragionamento che ti porta a fare questo: ["pa", "pe", "ri", "noa", "ndoa", "lma", "rea", "pe", "sca", "re"].

Tu già sai che quando trovi una consonante seguita dalla vocale o n vocali crei un elemento di ES.
gusgus (1730 points)
5 8 31
answered Nov 8, 2020 by gusgus (1,730 points)

citando proprio il testo dell'esercizio

- un'elemento sonoro' (ES) è una successione massimale di 1 o più consonanti seguite da 1 o più vocali

        - prima tutte le consonanti

        - poi tutte le vocali (aeiouyj)

        - ignorando eventuali caratteri non alfabetici come spazi, numeri e segni di interpunzione 

        - togliendo gli accenti dalle lettere accentate

        - e ignorando la differenza tra maiuscole e minuscole

        NOTA:   fanno eccezione il primo ES di un verso, che può essere composto da sole vocali

                e l'ultimo ES, che può essere composto di sole consonanti

esattamente come dice qui, poi dovrai trovarti tu il metodo più efficacie ed efficiente per farlo