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

Light (5130 points)
24 170 229
asked Nov 27, 2020 in HW7 opzionale by Light (5,130 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?
181 views

2 Answers

Best answer
andrea_25 (6070 points)
2 2 24
answered Nov 27, 2020 by andrea_25 (6,070 points)
selected Nov 27, 2020 by Light
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)
12 38 58
commented Nov 27, 2020 by Giordano_Dionisi (3,100 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
commented Nov 27, 2020 by andrea_25 (6,070 points)
Ho risposto direttamente al tuo post
Light (5130 points)
24 170 229
commented Nov 27, 2020 by Light (5,130 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
commented Nov 27, 2020 by andrea_25 (6,070 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)
24 170 229
commented Nov 27, 2020 by Light (5,130 points)
oddio mi hai aperto gli occhi! grazie mille caro!
twgever (15190 points)
7 27 105
answered Nov 27, 2020 by twgever (15,190 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 (15190 points)
7 27 105
commented Nov 27, 2020 by twgever (15,190 points)
inoltre, set lo puoi facilmente usare i caratteri che si ripetono, con un po' di ingegno.
Light (5130 points)
24 170 229
commented Nov 27, 2020 by Light (5,130 points)

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