delucidazione hw4obb

s
simone.lioy (1420 points)
21 30 39
asked Nov 11, 2019 in HW4 obbligatorio by simone.lioy (1,420 points)
Non ho capito bene cosa vuole la traccia, noi gli diamo la lunghezza della parola nascosta, come facciamo a capire qual'è la parola nascosta
574 views

5 Answers

Best answer
g
gian.uni (1510 points)
2 6 11
answered Nov 11, 2019 by gian.uni (1,510 points)
selected Nov 11, 2019 by simone.lioy
semplicemente esiste una sottostringa comune a tutte la parole del testo e che si ripete esattamente 1 volta sola,il che significa che se una parola ha meno o più di 1 occorrenza di una sottostringa allora tale sottostringa puoi scartarla perchè non rispetta i requisiti.Alla fine troverai che solo 1 sottostringa rispetta questo requisito e quella sottostringa sarà proprio la parola segreta.A quel punto devi solo trovare l'indice in qui inizia quella sottostringa in ogni parola del testo.
s
simone.lioy (1420 points)
21 30 39
commented Nov 11, 2019 by simone.lioy (1,420 points)
qualche dritta per iniziare si può avere?
M
MatteoB (1690 points)
8 16 21
commented Nov 12, 2019 by MatteoB (1,690 points)

Ti consiglio vivamente di rileggere con attenzione la traccia... Soprattutto questo pezzo :


Progettare una funzione es1(ftesto) che prende in input  un file contenente la lunghezza della parola nascosta e le n stringhe di caratteri e restituisce una lista di n interi.
 L'intero in  posizione i della lista e' la posizione dove compare il primo carattere della parola nascosta nella stringa i. 

F
Felipe.Maciel (360 points)
0 0 2
commented Nov 12, 2019 by Felipe.Maciel (360 points)
Prova a scomporre il problema, prima di tutto potresti porti come macro-obiettivo di trovare le possibili sottostringhe della lunghezza che il txt ti fornisce come "prima riga" magari solo nella prima parola (e quindi prima ancora, se non l'hai già fatto potrebbe esserti necessario capire quali siano le parole presenti visto che potrebbero essere separate da "a capi"),

poi prova in qualche modo a cercare quale di esse si ripete effettivamente solo una volta in ogni parola.

Insomma prova a dividerti (se non come ti ho suggerito io, a modo tuo) il problema in tanti piccoli problemi più facilmente risolvibili e verificabili magari con dei print...

Poi una volta raggiunto l'obiettivo finale pensa a come ottimizzarlo per passare tutti i test
NB97 (4300 points)
0 0 13
answered Nov 11, 2019 by NB97 (4,300 points)
Ragiona con le sottostringhe
E
Edward (25950 points)
2 4 172
answered Nov 11, 2019 by Edward (25,950 points)
edited Nov 11, 2019 by Edward

Come scritto nella traccia:

Sappiamo con certezza che la parola si ripete uguale esattamente una volta in ciascuna stringa ma non sappiamo dove. 

Della parola conosciamo la lunghezza M e sappiamo che non ci sono altre sottostringhe di lunghezza M che si ripetono una sola volta in tutte le stringhe. 

Quindi la parola nascosta sai la lunghezza, ed inoltre sai che è l'unica sottostringa che è presente in TUTTE le stringhe, e che si ripete una sola volta.

Alla fine devi restituire una lista, contenente l'indice nella quale ha inizio la parola segreta, in ogni sottostringa

Andrea Sanchietti (3100 points)
4 6 40
answered Nov 11, 2019 by Andrea Sanchietti (3,100 points)

la traccia chiede di restituire la lista contenente le posizioni della parola segreta all'interno di ogni parola del testo.

la parola segreta è una serie di caratteri di lunghezza n (specificata nella prima stringa) che si ripete in ogni parola per una volta, non di più e non di meno.

le parole sono invece distanziate nel testo da una riga formata da '\n'

spero che la descrizione ti sia di aiuto

Tommaso Sgroi (12990 points)
6 11 91
answered Nov 11, 2019 by Tommaso Sgroi (12,990 points)

La parola nascosta sarà all'interno di ogni stringa, separata da spazio, UNA SOLA VOLTA PER STRINGA.

Nell'esempio del professore infatti, per le 6 stringhe con parola nascosta di lunghezza 3:
    
    moneta
    maratoneta
    pitone
    onesto
    storione
    sonetto
    
    la parola nascosta è 'one' e le posizioni sono nell'ordine: 1, 5, 3, 0, 5, 1

Questo vuol dire che cercando in ogni stringa tutte le sottostringhe di lunghezza 3, 'one' apparirà SOLO 1 volta in ogni stringa. Dopodiché dovrai ritornale la lista delle posizioni di 'one' all'interno delle tue stringhe.