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

Do you need help?

Come procedere HW4

Simone.A (3750 points)
15 16 26
in HW1 opzionale by (3.8k points)
Salve a tutti,

Come da titolo, chiedo un aiuto per capire come andare avanti con l'homework. Una volta trovate le parole singole, non riesco a creare la parte di codice che mi permette di unire le parole e trovare poi la parola nascosta.


Chiedo aiuto, poichè non si proprio come fare
897 views
closed

3 Answers

Best answer
E
Edward (25950 points)
3 4 172
by (26.0k points)
selected by

Una volta trovate le parole singole

Ok quindi sulla lettura del file ci siamo.

Per il resto, tu sai che la parola nascosta ha queste caratteristiche:

  • Ha lunghezza M
  • È presente in tutte le stringhe
  • Si ripete una sola volta

Con queste informazioni, un procedimento abbastanza semplice potrebbe essere questo:

Devi andare a trovare tutte le sottostringhe di lunghezza M nelle stringhe che hai letto dal file.
Mentre le vai ad analizzare, dovresti contarle... per vedere quale di esse si ripete una sola volta, qui ti consiglio un dizionario.
Infine ti rimane solo da vedere quale di queste sottostringhe si ripete una sola volta... ed è comune a tutte le sottostringhe (ossia si trova in tutti i dizionari che hai creato!)

Simone.A (3750 points)
15 16 26
by (3.8k points)
Molto utile come sempre :D
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
non riesco a dividere la stringa in sottostringa di lunghezza m
Simone.A (3750 points)
15 16 26
by (3.8k points)
Devi usare crearti una variabile che sia una stringa vuota.
Fai un ciclo che ogni volta che trova le parole, le inserisce al suo interno e sommi le altre stringhe che trovi
Simone.A (3750 points)
15 16 26
by (3.8k points)
Successivamente inizi a fare il controllo in ogni parola vedendo quando si ripete "one"
s
simone.lioy (1420 points)
28 30 39
by (1.4k points)
nulla non riesco a trovare la posizione, ho ragionato in questo modo unisco tutte le parole e le divido in lunghezza m cosi da scoprire la parola nascosta, fatto questo vorrei trovare la posizione di questa parola nel file cosi da ricavarne  la lista ma mi da solo la prima posizione giusta. potete aiutarmi?
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
edited by

Qui abbiamo già avuto una discussione sulle prime fasi dell'homework che magari può tornarti utile.

Non ho ben capito però se sei proprio ancora bloccato alla parte precedente, in tal caso si tratta semplicemente di unire le stringhe separate su più righe perciò prova a ragionare sul fatto che per ricomporre le parole devi concatenare le stringhe che trovi finché non arrivi ad una riga vuota (che indica il termine di una parola). Si tratta di un semplice ciclo con un controllo in fin dei conti, anche se ovviamente dipende da com effettui la lettura del file, puoi unirle mentre lo stai leggendo o in un secondo momento dopo aver già letto tutte le righe del file.

Tommaso Sgroi (12990 points)
10 11 91
by (13.0k points)
Come avevo detto in un altro post:


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.

Sapendo questo, se ti generassi tutte le possibili sottostringhe nella prima parola e le andassi a confrontare con le altre, noterai come solo 'one' venga ripetuta nella prima e nelle altre sottostringhe. Questo vuol dire che è inutile andare a cercare tutte le possibili sottostringhe in tutte le stringhe, bensì dovrai andare a cercare, confrontando, le possibili sottostringhe nelle altre parole tramite le sottostringhe della prima parola!

Per fare un esempio la stringa 'onesto' : one, nes, est, sto     

Se guardi la stringa successiva 'storione' sarà composta da: sto, tor, ori, rio, ion, one                                                                                                                                                                             Quindi andando a guardare nella seconda parola vedrai che alcune sottostringhe si ripetono  così saprai quali sono le possibili sottostringhe da cercare.  Ora allora dovrai andare a vedere nelle altre parole quali sono ripetute tra quelle.

Spero di averti dato qualche spunto o qualcosa su cui pensare.
Simone.A (3750 points)
15 16 26
by (3.8k points)
Gentilissimo