Testo non chiaro hw4bis es2

G
Gianluca98 (810 points)
0 13 25
asked Aug 6, 2019 in HW4bis by Gianluca98 (810 points)
Salve, vorrei chiederle se gentilmente può rispiegare tutti i punti (dal punto A ad F) dell'esercizio 2 hw4 bis, dato che non ho capito praticamente nulla e le domande gia poste non mi hanno aiutato molto.
Volevo inoltre sapere il tipo dell'input della funzione es2().
Grazie.
212 views

1 Answer

Best answer
andrea.sterbini (172680 points)
511 927 1776
answered Aug 7, 2019 by andrea.sterbini (172,680 points)
selected Aug 9, 2019 by Gianluca98
  • l'input è una istanza della classe albero
  • l'albero va esplorato ricorsivamente per costruirne la rappresentazione testuale
  • caso base: il nodo è una foglia
    • in questo caso la rappresentazione testuale è data dalla stringa di due caratteri della sua etichetta
  • caso ricorsivo: esiste almeno un figlio
    • tutte le stringhe che rappresentano i sottoalberi dei figli vanno opportunamente incollate una a fianco all'altra con l'accortezza di:
      • fare in modo che abbiano tutti la stessa altezza (numero di righe) aggiungendo se necessario delle righe vuote sotto i più corti
      • inserire due spazi di separazione tra le righe di ciascun sottoalbero e il suo vicino
    • in testa vanno aggiunte le 3 righe che rappresentano il padre con i collegamenti ai sottoalberi
      • per far questo bisogna sapere, per ciascun sottoalbero, dove di trova la sua radice nella prima stringa

Prova a farlo con un editor di testo (di costruire due alberi e incollarli una a fianco dell'altro aggiungendo la radice), così è più chiaro.

G
Gianluca98 (810 points)
0 13 25
commented Aug 8, 2019 by Gianluca98 (810 points)
Scusi prof, ho fatto l'esercizio e la stringa è palesemente la stessa di quella attesa, solo che se vado a testare mi dice cosi:

test_albero_12_nodi (__main__.Test)
... ERROR
test_albero_17_nodi (__main__.Test)
... ERROR
test_albero_41_nodi (__main__.Test)
... ERROR
test_albero_5_nodi (__main__.Test)
... ERROR

======================================================================
ERROR: test_albero_12_nodi (__main__.Test)
...
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:/Users/circe/Desktop/HW4bis/test_02.py", line 54, in test_albero_12_nodi
    return self.do_test(r1, stringa1)
  File "C:/Users/circe/Desktop/HW4bis/test_02.py", line 19, in do_test
    result   = program.es2(rad)
  File "C:\Users\circe\Desktop\HW4bis\program02.py", line 85, in es2
    k=funzione(r)
  File "C:\Users\circe\Desktop\HW4bis\program02.py", line 93, in funzione
    valore=albero.Albero(r[0])
TypeError: 'Albero' object does not support indexing

======================================================================
ERROR: test_albero_17_nodi (__main__.Test)
...
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:/Users/circe/Desktop/HW4bis/test_02.py", line 76, in test_albero_17_nodi
    return self.do_test(r2, stringa2)
  File "C:/Users/circe/Desktop/HW4bis/test_02.py", line 19, in do_test
    result   = program.es2(rad)
  File "C:\Users\circe\Desktop\HW4bis\program02.py", line 85, in es2
    k=funzione(r)
  File "C:\Users\circe\Desktop\HW4bis\program02.py", line 93, in funzione
    valore=albero.Albero(r[0])
TypeError: 'Albero' object does not support indexing

======================================================================
ERROR: test_albero_41_nodi (__main__.Test)
...
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:/Users/circe/Desktop/HW4bis/test_02.py", line 99, in test_albero_41_nodi
    return self.do_test(r3, stringa3)
  File "C:/Users/circe/Desktop/HW4bis/test_02.py", line 19, in do_test
    result   = program.es2(rad)
  File "C:\Users\circe\Desktop\HW4bis\program02.py", line 85, in es2
    k=funzione(r)
  File "C:\Users\circe\Desktop\HW4bis\program02.py", line 93, in funzione
    valore=albero.Albero(r[0])
TypeError: 'Albero' object does not support indexing

======================================================================
ERROR: test_albero_5_nodi (__main__.Test)
...
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:/Users/circe/Desktop/HW4bis/test_02.py", line 36, in test_albero_5_nodi
    return self.do_test(r0, stringa0)
  File "C:/Users/circe/Desktop/HW4bis/test_02.py", line 19, in do_test
    result   = program.es2(rad)
  File "C:\Users\circe\Desktop\HW4bis\program02.py", line 85, in es2
    k=funzione(r)
  File "C:\Users\circe\Desktop\HW4bis\program02.py", line 93, in funzione
    valore=albero.Albero(r[0])
TypeError: 'Albero' object does not support indexing

----------------------------------------------------------------------
Ran 4 tests in 0.016s

FAILED (errors=4)
4 test passed, 0 tests failed

Ora, io ho considerato fin dall'inizio che l'input sia una lista di liste tipo questa:

['60', [['66', [['56', [['36', [['70', []], ['99', []], ['05', []]]], ['33', [['28', []], ['52', []], ['80', []], ['84', []]]],
        ['55', [['79', []], ['66', []]]]]], ['58', [['67', [['48', []], ['80', []], ['16', []]]], ['66', [['57', []]]], ['05', []]]],
        ['19', [['54', [['28', []], ['86', []]]], ['50', [['84', []]]]]]]], ['25', [['96', []], ['77', [['52', [['03', []]]],
        ['42', [['89', []]]], ['72', [['94', []], ['87', []], ['85', []], ['26', []]]]]]]]]]

e poi la converto subito in istanza di albero cosi:

valore=albero.Albero(r[0])  #r è l'input della funzione

E' sbagliato? (Ho consegnato anche l'esercizio così nel caso può vedere)
andrea.sterbini (172680 points)
511 927 1776
commented Aug 8, 2019 by andrea.sterbini (172,680 points)
No, l'input un oggetto della classe Albero

guarda nel file albero.py com'è definita la classe
G
Gianluca98 (810 points)
0 13 25
commented Aug 8, 2019 by Gianluca98 (810 points)
Quindi per cedere se ho capito bene.
Se nella funzione faccio subito r.id mi da il valore, mentre se faccio r.f mi da la lista dei figli. Giusto?
G
Gianluca98 (810 points)
0 13 25
commented Aug 9, 2019 by Gianluca98 (810 points)
Sono riuscito a fare tutto. Grazie prof.