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

Do you need help?

il caso base non mi è chiaro come deve essere e il caso induttivo

Light (5130 points)
55 181 229
in HW7 opzionale by (5.1k points)
sto provando a fare l'hw 7 opzionale...io penso che il caso base possibile è che la stringa non ha numeri che si ripetono, come faccio però a dirlo? mi blocca questo dubbio perchè poi non so neanche come fare per togliere 2 a 2 gli elementi, devo prima trovare le possibili ripetizioni da me? o lo fa da sola la ricorsione?
328 views
closed

2 Answers

Best answer
andrea_25 (6070 points)
2 2 24
by (6.1k points)
selected by
Per avviare il procedimento ricorsivo (visto che adesso hai risolto il problema del caso base), devi prima togliere (quando ritieni opportuno) due elementi che si ripetono secondo determinate regole.

Io ad esempio lavoro di volta in volta su una copia della sequenza originale (perché quella mi serve intatta per capire secondo quale combinazione scegliere i due numeri che si ripetono da rimuovere) e su di essa applico il metodo pop delle liste, per eliminare dalla copia gli elementi che selezionati in base all'indice.
G
Giordano_Dionisi (3100 points)
16 41 59
by (3.1k points)
E in questo modo passi tutti i test, cioè gli ultimi 4 non ti vanno in timeout ??
andrea_25 (6070 points)
2 2 24
by (6.1k points)
Ho risposto direttamente al tuo post
Light (5130 points)
55 181 229
by (5.1k points)
mmmh okok però se trasformo la mia sequenza in una lista poi come faccio per l'output? ci stavo pensando a lavorare su una lista ma poi l'output è un'insieme di stringhe separate da spazi :/
andrea_25 (6070 points)
2 2 24
by (6.1k points)
Lavorare su una lista è molto più comodo in questo caso, perché essendo strutture dati mutabili (al contrario delle stringe) sono proprio state pensate per essere modificate durante l'esecuzione di un programma.

Per risolvere il problema dell'output, ricordati che puoi usare il metodo join delle stringhe e, con qualche accortezza, alla fine riuscirai ad avere una lista che contiene le sottostringhe richieste. Basta infine trasformare la lista in un set è il gioco è fatto
Light (5130 points)
55 181 229
by (5.1k points)
oddio mi hai aperto gli occhi! grazie mille caro!
twgever (17470 points)
8 29 105
by (17.5k points)
L'HW 7 ancora non l'ho toccato, ma so che se fai A=set(stringa), A contiene tutte le lettere (o i caratteri) della stringa, senza ripetizioni. a questo punto se A ha tanti caratteri quanti sono i caratteri della stringa, direi che non ci sono ripetizioni.
twgever (17470 points)
8 29 105
by (17.5k points)
inoltre, set lo puoi facilmente usare i caratteri che si ripetono, con un po' di ingegno.
Light (5130 points)
55 181 229
by (5.1k points)

ahhh vero! grazie mille! ora tocca risolvere il secondo dubbiocheeky