Do you need any help?

HW4 - Vocali accentate

alessiodellasanta (11830 points)
8 13 34
asked Nov 6, 2020 in HW4 obbligatorio by alessiodellasanta (11,830 points)
recategorized Nov 8, 2020 by andrea.sterbini
Cosa conviene fare per gestire le lettere accentate secondo voi?

Un dizionario che associa ad ogni vocale accentata la sua vocale senza accento, una sostituzione o qualche altro modo?
501 views

4 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 alessiodellasanta
Anche se andiamo OT cerco di darti una mano, questo forum nasce per questo no?

immagina una funzione che faccia questo: input --> sequenza numeri prosodia con lunghezza modulo, output --> prosodia normalizzata

diciamo che per salvare gli elementi potresti usare un dizionario con le associazioni numeri in input  --> interi non negativi in range(0, lunghezza_modulo). Quindi primo passo il tuo dizionario conterrà l'associazione primo_numero:0 e la prosedia di output il valore 0.

Cicli sugli altri numeri della sotto prosodia (passami il termine) in input e se quel numero è presente come chiave nel dizionario vai ad appendere alla prosedia il valore corrispondente, altrimenti aggiungi al dizionario l'elemento con chiave il tuo numero e valore il massimo dei valori del dizionario + 1 (se è un valore nuovo devi assegnargli l'intero successivo all'ultimo utilizzato) e appendi alla prosedia di output questo valore appena calcolato. Dunque la funzione ti restituisce la prosedia normalizzata.

A questo punto da qualche parte ciclerai sulle sotto prosedie della tua prosedia originaria di lunghezza il modulo che stai analizzando passandole in input alla funzione descritta. Se il risultato per anche solo una di queste sotto prosedie è diversa da quella base, allora quello che stai analizzando non è il modulo, altrimenti potrebbe esserlo.

Per efficientare potresti pensare di cercare il modulo solo sui divisori della lunghezza della prosodia ovviamente, e se li ordini ed escludi i valori 1 e 2, allora il primo modulo che trovi è automaticamente quello corretto (N.B. se x è modulo anche i multipli di x lo sono, ma il minimo è proprio x).

A questo punto non ti rimane che fare le cose in maniera intelligente, non ho scritto pseudocodice, che sarebbe ammesso, ma ho cercato di descriverti il funzionamento e penso che potresti estrarre pseudocodice molto facilmente.

Spero di essere stato chiaro e di aiuto.
AdSum (16290 points)
9 20 134
answered Nov 6, 2020 by AdSum (16,290 points)
La maniera più comoda è creare tramite un dizionario una corrisponzenda tra l'accentata e la forma normale. Non ti assicuro che sia l'unico modo ed il più veloce ma di cerco è efficace
D
DanielLopez (350 points)
0 1 4
commented Nov 8, 2020 by DanielLopez (350 points)

Concordo con @AdSum, sicuramente usando un dizionario inserendo ogni carattere accentato con il rispettivo carattere (non) è la soluzione.
 La maniera più facile invece penso sia quella di utilizzare i metodi :   unicode.normalise('NFD', nomedellavariabile).encode('ascii', 'ignore')   ovviamente da scartare visto che non si può utilizzare l'import unicodedata.

  

Tommaso.Lopedote (1340 points)
3 9 24
answered Nov 7, 2020 by Tommaso.Lopedote (1,340 points)

Potresti usare anche, tramite generatore "map", una funzione che assegna i codici UTF-8 delle vocali non accentate con le loro rispettive versioni accentate, probabilmente risulterà molto efficiente in termini di velocità.

map
Definition : map(func: Callable[[_T1], _S], iter1: Iterable[_T1], /) -> Iterator[_S]

map(func, *iterables) --> map object

Make an iterator that computes the function using arguments from each of the iterables. Stops when the shortest iterable is exhauste.

Oppure utilizza il metodo delle stringhe str.maketrans che il prof. ci ha mostrato venerdi.

Python maketrans () method

description

Python maketrans () method is used to create character mappings conversion table, for taking two parameters, the easiest way is called, the first argument is a string that represents the character to be converted, the second parameter is the string representation of the conversion aims.

Note: The two strings must be the same length as a one to one relationship.

N
NAT (1260 points)
0 0 6
answered Nov 8, 2020 by NAT (1,260 points)
Ciao Alessio, io ti consiglio di completare prima il codice e poi vedere cosa dovresti modificare per ottimizzare il tempo..
alessiodellasanta (11830 points)
8 13 34
commented Nov 8, 2020 by alessiodellasanta (11,830 points)
hai ragione, infatti sono fermo sul calcolo del periodo, farei un post chiedendo una mano ma so che mi verrebbe chiuso dal professore perché sarebbe il duplicato di altri post (che non mi hanno risolto il problema)
s
stefano.fantauzzi (2260 points)
3 6 17
commented Nov 8, 2020 by stefano.fantauzzi (2,260 points)

Ciao, non se se hai già letto la mia risposta al riguardo, nel dubbio te la linko

Calcolo periodo

alessiodellasanta (11830 points)
8 13 34
commented Nov 8, 2020 by alessiodellasanta (11,830 points)
l'ho letto, l'ho anche capito, ma non saprei come fare la "normalizzazione" (aka assegnazione di ogni numero ad un valore/lettera) in python, ma in realtà nemmeno in pseudocodice...