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

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

[HW4req] AssertionError 3: Il modulo restituito non è corretto.

MRinaudo (3660 points)
22 40 50
in HW4 obbligatorio by (3.7k points)
closed by

Ciao a tutti,

attualmente, passo soltanto 3 test dei 13 previsti dal homework.

Il problema principale è il periodo, perché per gran parte dei test falliti, ottengo il seguente errore: AssertionError 3: Il modulo restituito non è corretto.

Se, per esempio, io prendo il file 'random-102-rnd.txt', con la mia funzione riesco ad ottenere la seguente lista che rappresenta ( o almeno dovrebbe) le possibili sottosequenze della prosodia:

[[0, 1, 2], [3, 4, 5], [6, 2, 7], [8, 9, 10], [11, 12, 13], [4, 14, 15], [5, 15, 3], [16, 13, 17], [2, 18, 19], [15, 20, 17], [21, 22, 23], [24, 25, 26], [27, 28, 6], [29, 19, 21], [27, 27, 20], [23, 19, 14], [13, 30, 5], [31, 32, 33], [34, 35, 36], [37, 33, 38], [39, 40, 41], [42, 43, 44], [35, 45, 46], [36, 46, 34], [47, 44, 48], [33, 49, 50], [46, 51, 48], [52, 53, 54], [55, 56, 57], [58, 59, 37], [60, 50, 52], [58, 58, 51], [54, 50, 45], [44, 61, 36], [0, 1, 2, 3, 4, 5], [6, 2, 7, 8, 9, 10], [11, 12, 13, 4, 14, 15], [5, 15, 3, 16, 13, 17], [2, 18, 19, 15, 20, 17], [21, 22, 23, 24, 25, 26], [27, 28, 6, 29, 19, 21], [27, 27, 20, 23, 19, 14], [13, 30, 5, 31, 32, 33], [34, 35, 36, 37, 33, 38], [39, 40, 41, 42, 43, 44], [35, 45, 46, 36, 46, 34], [47, 44, 48, 33, 49, 50], [46, 51, 48, 52, 53, 54], [55, 56, 57, 58, 59, 37], [60, 50, 52, 58, 58, 51], [54, 50, 45, 44, 61, 36], [0, 1, 2, 3, 4, 5, 6, 2, 7, 8, 9, 10, 11, 12, 13, 4, 14], [15, 5, 15, 3, 16, 13, 17, 2, 18, 19, 15, 20, 17, 21, 22, 23, 24], [25, 26, 27, 28, 6, 29, 19, 21, 27, 27, 20, 23, 19, 14, 13, 30, 5], [31, 32, 33, 34, 35, 36, 37, 33, 38, 39, 40, 41, 42, 43, 44, 35, 45], [46, 36, 46, 34, 47, 44, 48, 33, 49, 50, 46, 51, 48, 52, 53, 54, 55], [56, 57, 58, 59, 37, 60, 50, 52, 58, 58, 51, 54, 50, 45, 44, 61, 36], [0, 1, 2, 3, 4, 5, 6, 2, 7, 8, 9, 10, 11, 12, 13, 4, 14, 15, 5, 15, 3, 16, 13, 17, 2, 18, 19, 15, 20, 17, 21, 22, 23, 24], [25, 26, 27, 28, 6, 29, 19, 21, 27, 27, 20, 23, 19, 14, 13, 30, 5, 31, 32, 33, 34, 35, 36, 37, 33, 38, 39, 40, 41, 42, 43, 44, 35, 45], [46, 36, 46, 34, 47, 44, 48, 33, 49, 50, 46, 51, 48, 52, 53, 54, 55, 56, 57, 58, 59, 37, 60, 50, 52, 58, 58, 51, 54, 50, 45, 44, 61, 36], [0, 1, 2, 3, 4, 5, 6, 2, 7, 8, 9, 10, 11, 12, 13, 4, 14, 15, 5, 15, 3, 16, 13, 17, 2, 18, 19, 15, 20, 17, 21, 22, 23, 24, 25, 26, 27, 28, 6, 29, 19, 21, 27, 27, 20, 23, 19, 14, 13, 30, 5], [31, 32, 33, 34, 35, 36, 37, 33, 38, 39, 40, 41, 42, 43, 44, 35, 45, 46, 36, 46, 34, 47, 44, 48, 33, 49, 50, 46, 51, 48, 52, 53, 54, 55, 56, 57, 58, 59, 37, 60, 50, 52, 58, 58, 51, 54, 50, 45, 44, 61, 36]]

E fino a qui ci siamo.

Il mio dubbio è: che tipo di controllo o condizione dovrei impostare per far sì che il modulo mi esca corretto dalla funzione ? Dovrei applicare un ragionamento che lavora sulla lunghezza di ogni sottosequenza ?

Grazie mille!

P.S. Scusate se le mie domande possono sembrare sciocche, sono un principiante angel.

330 views
closed with the note: Risolto.

2 Answers

Best answer
G
Giuseppe01 (1500 points)
0 0 10
by (1.5k points)
selected by

Ciao, ti dico come ho interpretato io il problema.

Il professore ha scritto qui sul forum che per trovare il periodo bisogna individuare il caso in cui si verifica una corrispondenza biunivoca. Ora, per corrispondenza biunivoca sappiamo che si intende funzione iniettiva e suriettiva, quindi, dati due insiemi A e B, ad elementi distinti di A devono corrispondere elementi distinti di B, ed inoltre ogni elemento di B deve risultare mappato da un elemento di A (pagina Wikipedia qui per un recap più accurato).

Il problema, nel nostro caso, è che bisogna determinare questi benedetti A e B, quando invece ci troviamo a lavorare con un numero n di insiemi (ovvero le sottosequenze).

Il mio ragionamento è stato quindi quello di applicare il check di validità della relazione in maniera iterativa. Ovvero, prendo la coppia (0,1) (intesi come indici) del gruppo di sottosequenze e dico: vale la corrispondenza biunivoca? 

  • Sì? Allora vado avanti e controllo la prossima coppia. 
  • No? Allora la corrispondenza non è verificata su questo raggruppamento in sottosequenze e pertanto passo al successivo.

Da quel che vedo hai già ottenuto delle suddivisioni in sottosequenze, quindi su questo ci sei. Posso suggerirti che secondo me non c'è bisogno di generarle tutte insieme (cioè una volta che hai i gruppi di 3 elementi controlla prima quelli, poi eventualmente passi alla successiva suddivisione).

Spero possa essere d'aiuto.

Buon lavoro :)

alessiodellasanta (11830 points)
8 14 34
by (11.8k points)
pure a me stessa identica cosaaaa