Home Introduzione Programma Orario Laboratorio Nettuno Esame Diario 02-03 Materiale Challenge News Link Forum Esoneri

horizontal rule

Tema n. 1

scadenza: ore 23:59 del 13/05/2007 (perentoria)

solo per il canale A-L: ore 23:59 del 21/07/2007 21/05/2007 (tragicomico errore di scrittura!)

Quadrato magico

Scrivere un algoritmo Java per il gioco denominato "Quadrato Magico". Data una matrice n × n, riempirne le caselle con tutti e soli i numeri interi da 1 a n2 secondo le seguenti regole:

  1. la somma di tutti i valori di una riga è eguale per tutte le righe;
  2. la somma di tutti i valori presenti in una colonna è eguale per tutte le colonne;
  3. colonne e righe danno la stessa somma;
  4. alcune caselle della matrice hanno valori prefissati (appartenenti all'intervallo stabilito).

Più precisamente, è data una matrice A n × n, n 1, i cui valori ai,j appartengono all'insieme {0, 1, 2, 3, ..., n2}. Si richiede di sostituire tutti gli 0 presenti in A con valori appartenenti all'insieme Z = {1, 2, 3, ..., n2} in modo tale che:

  1. ogni elemento di Z sia presente in A esattamente una volta
  2. esiste k > 0 tale che:
    bulleti ai,j = k per j = 1, 2, ..., n
    bulletj ai,j = k per i = 1, 2, ..., n

La matrice iniziale è fornita in input all'algoritmo, che deve fornire in output, con modalità appresso specificate, una soluzione al problema proposto ovvero la notifica della non esistenza di una soluzione.

Specifiche

  1. La classe da realizzare si chiama QuadratoMagico
  2. La classe ha un costruttore con un parametro int che indica la dimensione della matrice di gioco
  3. La classe ha un metodo public boolean qMagico(int[][] a) che tenta di risolvere il problema a partire dalla matrice a data. Se il metodo ha successo restituisce true, altrimenti restituisce false
  4. La classe ha un metodo public int getCella(int i, int j) che restituisce il valore memorizzato nella casella (i, j) della matrice che risolve il problema posto; se il problema non ammette soluzione il valore restituito non è specificato
  5. La classe ha un metodo public static String getMatricola() che restituisce la matricola dello studente partecipante

Clicca qui per scaricare il QuadratoMagico.class di base con cui confrontarsi; clicca qui per scaricare il file TestQuadratoMagico.class, contenente un possibile main (digitare java TestQuadratoMagico sulla riga di comando per avere istruzioni su come specificare l'input)

si consiglia di testare la propria classe con il main qui fornito, per verificare di aver rispettato le specifiche sui metodi da implementare

invio contributi

 

horizontal rule

Bacheca di Algoritmi e Strutture Dati a.a. 2007-08 - canale A - L

forum del corso

ultima modifica: 03/04/2008 23.37
by FdA