Topic: esercizio a casa  (Letto 172 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline simone13

  • python unicellularis
  • *
  • Post: 9
  • Punti reputazione: 0
    • Mostra profilo
esercizio a casa
« il: Gennaio 08, 2019, 16:06 »
buon pomeriggio. mi è stato assegnato questo esercizio da svolgere a casa ma pur avendo trovato una possibile logica di ragionamento non riesco proprio ad implementare il mio codice. la mia difficoltà sta anche e soprattutto sul fatto che bisogna usare delle funzioni ricorsive... essendo alle prime armi con la programmazione in generale avrei bisogno di un aiuto. grazie mille in anticipo.
il testo dell'esercizio è il seguente
[/pythoncode]'''
    Si consideri il seguente gioco solitario:
    abbiamo una sequenza iniziale di  N interi,
    una mossa del gioco consiste nel selezionare nella sequenza  due numeri  consecutivi
    la cui somma sia pari, i due numeri vengono eliminati dalla sequenza e
    sostituiti dalla loro  media aritmetica. Il gioco e' vinto se si trova una sequenza
    di mosse che riduce la sequenza  ad un unico numero.
    Una configurazione del gioco e' univocamente determinata dai numeri presenti nella
    sequenza in quel momento.
    Data una configurazione iniziale noi siamo interessati a trovare la lista di tutte
    le possibili configurazioni finali (vale a dire configurazioni per cui non c'e' possibilita'
    di continuare il gioco per mancanza di possibili mosse).
    Si consideri ad esempio l'albero di gioco che si ottiene a partire dalla configurazione
    10 20 30 40 5 1 e che e' riportato  nel file albero_di_gioco.pdf
    le possibili configurazioni finali sono 5:
    8, 14, 17, 15 20 1, 10 25 40 3.
   
    Definire una funzione es2(s) ricorsiva (o che fa uso di funzioni o
    metodi ricorsive/i) che, data una  stringa  che codifica  una  configurazione iniziale
    del gioco, retituisce  la lista delle codifiche delle possibili configurazioni finali.
    - le configurazioni di gioco vanno codificate tramite  stringhe (in queste stringhe i
       numeri della sequenza compaiono uno di seguito all'altro e separati da uno spazio).
    - La lista delle codifiche delle configurazioni finali prodotta in output contiene
      le configurazioni codificate come stringhe. Queste configurazioni devono comparire
      nella lista in ordine crescente rispetto alla loro lunghezza e, a parita' di lunghezza, 
      ordinate in modo crescente rispetto al primo numero in cui differiscono.
      Ad esempio la lista che la funzione es2 se invocata con s='10 20 30 40 5 1'
      deve restituire la lista
      ['8', '14', '17', '15 20 1', '10 25 40 3']

NOTA: il timeout previsto per questo esercizio è di 3 secondi per ciascun test.

ATTENZIONE: Almeno una delle funzioni/metodi che risolvono l'esercizio DEVE essere ricorsiva.
ATTENZIONE: per fare in modo che il macchinario di test riconosca automaticamente la presenza della ricorsione
    questa funzione ricorsiva DEVE essere una funzione esterna oppure il metodo di una classe

ATTENZIONE: Non potete usare altre librerie

ATTENZIONE: Sono vietate le variabili globali

ATTENZIONE: assicuratevi di salvare il programma con encoding utf8
(ad esempio usando come editor Notepad++ oppure Spyder)

'''
[/pythoncode]

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.862
  • Punti reputazione: 9
    • Mostra profilo
Re:esercizio a casa
« Risposta #1 il: Gennaio 08, 2019, 21:43 »
Puoi almeno cominciare a scrivere una funzione che riconosca la prima coppia di numeri utili, la "fonda" e restituisca la lista rimpicciolita. Di qui, vedi dove puoi andare.
Il problema di fondo è che se ti danno questo esercizio (di complessità medio-facile) e tu non hai neanche la più pallida idea di come impostare il ragionamento, vuol dire
- o che il corso che segui è fatto molto molto molto male
- o che tu hai perso davvero troppe lezioni.