|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Oct 2013
Messaggi: 1
|
[java] esercizio
Un tappeto magico di ordine n (0 ≤ n ≤ 5) e parametro k (0 ≤ k < 9) `
e una matrice 3^n × 3^n , a valori binari, definita induttivamente nel seguente modo: • se n = 0 (matrice 1 × 1), allora l’unico elemento della matrice vale 1; • se n > 0 (matrice 3^n × 3^n ), si consideri una suddivisione della matrice in 9 blocchi di dimensioni 3^n−1 × 3^n−1 ciascuno. Si considerino numerati da 0 a 8 i blocchi, in questo modo: 0 1 2 3 4 5 6 7 8 Il blocco numero j (0 ≤ j < 9) ` e a sua volta – un blocco di elementi tutti uguali a zero, se j = k; – un tappeto magico di ordine n − 1 e parametro k, se j = k. Si vuole realizzare un programma Java che dati n e k stampi una rappresentazione testuale di un tappeto magico di ordine n e parametro k. Formato di Input. L’input ` e strutturato nel seguente modo: • una riga contenente i due interi n e k, separati da uno spazio. Si assuma che n e k soddisfino i vincoli 0 ≤ n ≤ 5, 0 ≤ k < 9. Formato di Output. Si deve stampare un tappeto magico di ordine n e parametro k, secondo la seguente codifica: • i valori uguali a 0 sono rappresentati dal carattere ’.’; • i valori uguali a 1 sono rappresentati dal carattere ’*’. I valori su una stessa riga non sono separati da spazi. Ciascuna riga della matrice ` e terminata dall’usuale newline ’\n’. mi potete aiutare a cercare di risolvere questo esercizio? o almeno darmi un idea su come fare? Grazie! |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2002
Messaggi: 1370
|
Allora ti do qualche suggerimento.
Ti conviene suddividere il problema in 3 fasi: 1 - Inizializzazione 2 - Popolamento ricorsivo dei blocchi 3 - Stampa a video della matrice risultante. 1 - Nell'inizializzazione crei un metodo main che inizializzi le variabili n k e la matrice che dovrai stampare (il tappeto magico). 2 - Con un metodo ricorsivo scrivi i dati nella matrice che hai creato al passo precedente 3 - Stampi i dati a video EDIT: No! Scusami, ti ho detto una sciocchezza, non è quello il modo di procedere. Non devi creare nessuna matrice, devi ragionare per stringhe. 1 - Recuperi solo le variabili n e k. 2 - Crei un metodo ricorsivo che restituisce una stringa. 3 - Stampi la stringa risultante. Suggerimento 1: Una stringa può contenere più linee al suo interno ad esempo ***\n***\n***\n è una sola stringa formata da tre righe. Suggerimento 2: Ogni volta che operi all'interno di un blocco (escluso il passo base) riceverai 9 stringhe relative ai suoi 9 sottoblocchi, devi riassemblare le stringhe per formare un'unica stringa da restituire e non basta semplicemente concatenarle... Suggerimento 3: Java dispone di una comoda classe "StringTokenizer" che potrebbe esserti utile nella risoluzione dell'esercizio, specialmente nella fase in cui dalle 9 stringhe risultanti dai sottoblocchi devi ottenere la stringa del blocco. Se hai ancora dubbi, chiedi pure, ma almeno prova per un po' a risolverlo seguendo i miei suggerimenti, ho cercato di rimanere vago per lasciarti lo spazio per ragionarci su ![]() Ultima modifica di Player1 : 23-10-2013 alle 21:37. Motivo: Risposta sbagliata |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:03.