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

Do you need help?

test con tutti i numeri pari o dispari falliti

A
AntonioG99 (270 points)
0 2 4
in Es2 by (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?
396 views

1 Answer

_andrea_ (45670 points)
11 42 297
by (45.7k points)
Dicci come lo fai altrimenti non possiami aiutarti
A
AntonioG99 (270 points)
0 2 4
by (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
by (270 points)
il problema dovrebbe essere nell'ordinamento
_andrea_ (45670 points)
11 42 297
by (45.7k 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
by (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)
11 42 297
by (45.7k points)
Devi usare direttamente x come secondo parametro di ordinamento e basta