test con tutti i numeri pari o dispari falliti

A
AntonioG99 (270 points)
0 2 4
asked Dec 26, 2018 in Es2 by AntonioG99 (270 points)
Hw4 Es2, il mio programma passa 4 test e fallisce tutti quelli con numeri tutti pari o tutti dispari !

(1,2,3,8)ok

(4,5,6,7,9)fail

Qualche consiglio?
132 views

1 Answer

_andrea_ (45670 points)
2 40 297
answered Dec 26, 2018 by _andrea_ (45,670 points)
Dicci come lo fai altrimenti non possiami aiutarti
A
AntonioG99 (270 points)
0 2 4
commented Dec 27, 2018 by AntonioG99 (270 points)
Splitto la stringa e creo una lista di stringhe, successivamente trasformo tutti i valori in interi per poi passare la lista alla funzione ricorsiva.
La funzione ricorsiva per prima cosa controlla se all’interno della lista ogni somma è dispari e la lunghezza, quindi se la lista ha len == 1 o tutte le somme dispari trasformo tutti i valori della lista in stringhe e con un join unisco la soluzione in un’unica stringa che viene aggiunta nel set soluzione in modo da eliminare eventuali soluzioni uguali.
Altrimenti con un ciclo for in range len(l)-1, vedo se la somma della prima coppia è pari, se si copio la lista con copy() e nella lista copiata vado a sostituire il primo valore della coppia con la media ed elimino il secondo elemento della coppia, una volta modificata la lista viene richiamata la ricorsione con la lista copiata.
infine la funzione ricorsivi mi ritornerà un set con le soluzioni, trasformo il set in lista e la ordino.

Questo  è il mio algoritmo, spero di essere stato chiaro.
A
AntonioG99 (270 points)
0 2 4
commented Dec 27, 2018 by AntonioG99 (270 points)
il problema dovrebbe essere nell'ordinamento
_andrea_ (45670 points)
2 40 297
commented Dec 27, 2018 by _andrea_ (45,670 points)
Ma negli esempi che hai scritto nel post non sono né tutti pari né tutti dispari. E che errore ti dà? Per quale motivo fallisce?
A
AntonioG99 (270 points)
0 2 4
commented Dec 28, 2018 by AntonioG99 (270 points)
Lists differ: ['5',[91 chars], '2 11', '2 17', '2 19', '2 21', '2 7', '2 9'[1122 chars] 24'] != ['5',[91 chars], '2 7', '2 9', '2 11', '2 17', '2 19', '2 21'[1122 chars] 24']

First differing element 17:
'2 11'
'2 7'

questo è uno degli errori, il problema è nell'ordinamento, infatti dopo varie prove adesso riesco a superare 6 test

questa è la lambda function che uso per ordinare la lista : lambda len(x),len(x[0]),x

la funzione da priorità alla lunghezza della lista e in caso di parità confronta la lunghezza del primo valore, il problema è che se la disuguaglianza si trova dal 2 valore in su non so come confrontarli
_andrea_ (45670 points)
2 40 297
commented Dec 28, 2018 by _andrea_ (45,670 points)
Devi usare direttamente x come secondo parametro di ordinamento e basta