Nemo02
Nuovo Utente
- Messaggi
- 13
- Reazioni
- 0
- Punteggio
- 4
Allora il problema è quello di creare una lista di liste come nell'immagine ovviamente non si può stampare perché ti stamperesti solo la prima lista essendo infinita quindi stampo le partizioni di un numero per capire se ho creato la lista di liste giusta. ( la cosa interessante creare questa cosa poi non ci faccio nulla con le partizioni il programma rimane fine a se perché non ha senso creare le partizioni con questo metodo) .Scusa, ma continuo a non capire cosa stai cercando di ottenere precisamente (e a tal proposito sarebbe utile sapere cosa devi farci con queste partizioni).
Dal post iniziale mi sembrava di capire che il tuo scopo fosse quello di generare una sequenza come quella da te postata con i numeri colorati che ti permettesse di estrarre le partizioni di n mediante la seguente procedura da te descritta:
Ora invece mi pare che tu ti stia soffermando su come ottenere le partizioni di n+1 partendo da quelle di n. E a tal proposito non mi sembra che per passare per esempio dalle partizioni di 7 a quelle di 8 sia sufficiente "attaccare uno a tutte le partizioni".
Visto che il problema mi sembrava interessante ho provato a risolverlo pure io, ma se non chiarisci i punti sopra esposti diventa difficile capire su cosa confrontarsi...
Il fatto di ridurre tutto a trovare le partizioni di n+1 da n è un escamotage per creare ricorsivamente quella lista poiché per definizione è la lista infinita delle partizioni. ( questo metodo che ho usato è brutal Force immagino e credo ce ne siano altri anche per questo ho aperto questo post ).
Per passare dalla partizione n a quella n+1 devi aggiungere 1 all'ultimo elemento e concatenare a questa lista la lista delle partizioni precedenti aggiungendo ad ognuna 1 come ultimo elemento. Così ne hai troppe e quindi devi eliminare i doppioni ovvero le liste non ordinate così le hai tutte e sole esempio:
parto dalle partizioni di 4
Codice:
[1,1,1,1]
[2,1,1]
[3,1]
[2,2]
[4]
Codice:
[1,1,1,2]
[2,1,2]
[3,2]
[2,3]
[5]
Codice:
[1,1,1,1,1]
[2,1,1,1]
[3,1,1]
[2,2,1]
[4,1]
[1,1,1,2]
[2,1,2]
[3,2]
[2,3]
[5]
Codice:
[1,1,1,1,1]
[2,1,1,1]
[3,1,1]
[2,2,1]
[4,1]
[3,2]
[5]
@BAT con questo metodo la partizione [2,2,2] la trovi dalla partizione [2,2,1] dopo il primo passo.
l'unica differenza usando liste infinite è che aggiungo una lista infinita di 1 e non un solo 1 nel passo 2.
Ultima modifica da un moderatore: