Pages: [1]   Go Down
Print
Author Topic: Testo prima prova 03/02/2011  (Read 1979 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Alucard_89
Matricola
*
Offline Offline

Gender: Male
Posts: 25


The Fact That No 1 Understand U, Make U An Artist!


WWW
« on: 04-02-2011, 16:43:38 »

Salve a tutti...

Qualcuno sarebbe così gentile da postare e/o scansionare il testo della prova in oggetto?

Grazie anticipate...
Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #1 on: 04-02-2011, 18:08:31 »

primo esercizio:
scrivere un metodo che prenda in input una matrica a di byte e restituisca un boolean che indichi se esistono in a due righe tali che l'una sia una permutazione dell'altra.
N.B ogni singola riga contiene elementi distinti e non è possibile ordinare le righe!

(la spiegazione di permutazione non era presente nella richiesta ma il prof ha dato spiegazione quando l'ha presentata dicendo che vuol dire cercare due righe che contengono gli stessi elementi, anche in posizioni differenti.)
qualcuno invece aveva da controllare due colonne invece che le righe.

secondo esercizio:
Scrivere un metodo che prenda in input un array A di n stringhe ,e restituisca un array
bidimensionale frastagliato b di stringhe con n righe in cui il numero di colonne nella i-esima riga e
dato dal numero di caratteri 'g' , ' h' ,....,'p' presenti nella stringa A[i ](es."ggabmngssh"-> 6). ad
ogni elemento di b deve essere assegnata una stringa di lunghezza 5 ottenuta dalla concatenazione
delle lettere casuali 'd','g','z' ognuna con probabilità ,rispettivamente ,26% ,11% e 63%

(tutto scritto, nessuna spiegazione ulteriore dato che è abbastanza chiaro)
nn so se a questo esiste la variante o ce l'avevamo tutti uguale.
« Last Edit: 05-02-2011, 14:14:08 by StephCT » Logged

"Che la Forza sia con Te"
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« Reply #2 on: 05-02-2011, 13:21:28 »


nn so se a questo esiste la variante o ce l'avevamo tutti uguale.

Ho letto che cambiavano le lettere e le probabilità..
Logged
cibernaux
Matricola
*
Offline Offline

Posts: 15


-- in attesa della Debian BSD --


« Reply #3 on: 06-02-2011, 15:26:36 »

Qualcuno che ha svolto il secondo esercizio, potrebbe pubblicare la soluzione?? grazie  testate
Logged
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« Reply #4 on: 07-02-2011, 12:51:36 »

Ecco due possibili soluzioni del secondo esercizio(cambia solo la prima parte dell'esercizio in effetti la prima soluzione tramite charAt, la seconda soluzione mettendo un for in più):
Code:
public static String[][] metodo(String[]A){
    int n=A.length;
    String[][]B=new String[n][];
   
    for(int i=0;i<A.length;i++){
      int cntC=0;
      for(int k=0;k<A[i].length();k++){
        if(A[i].charAt(k)=='g'|| A[i].charAt(k)=='h' || A[i].charAt(k)=='i'||
          A[i].charAt(k)=='j' || A[i].charAt(k)=='k' ||A[i].charAt(k)=='l' ||
          A[i].charAt(k)=='m' || A[i].charAt(k)=='n' ||A[i].charAt(k)=='o' ||
          A[i].charAt(k)=='p')
          cntC++;
      }
      B[i]=new String[cntC];
    }
      for(int r=0;r<B.length;r++){
        for(int c=0;c<B[r].length;c++){
          B[r][c]="";
          for(int p=0;p<5;p++){
            int w=(int)(Math.random()*99)+1; //questo mi serve per le probabilità
            if(w<=11)
              B[r][c]+="g";
            else if(w>=11 && w<=26)
              B[r][c]+="d";
            else
              B[r][c]+="z";
          }
        }
      }
   
    return B;
  }
Code:
public static String[][] metodo(String[]A){
    int n=A.length;
    String[][]B=new String[n][];
     String car="ghijklmnop";
    for(int i=0;i<A.length;i++){
      int cntC=0;
      for(int k=0;k<A[i].length();k++){
         for(int m=0;m<car.length();m++){
            if(A[i].charAt(k)==car.charAt(m))
             cntC++;
          }
      }
      B[i]=new String[cntC];
    }
      //come sopra

Spero sia chiara!
Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #5 on: 07-02-2011, 13:09:22 »

vorrei suggerirti dei cambiamenti per perfezionarlo (per il futuro dato che è ormai consegnato l'esercizio):
Code:
if(A[i].charAt(k)=='g'|| A[i].charAt(k)=='h' || A[i].charAt(k)=='i'||
          A[i].charAt(k)=='j' || A[i].charAt(k)=='k' ||A[i].charAt(k)=='l' ||
          A[i].charAt(k)=='m' || A[i].charAt(k)=='n' ||A[i].charAt(k)=='o' ||
          A[i].charAt(k)=='p')
questo mega if si può sostituire semplicemente con:
Code:
if(A[i].charAt(k)>='g' && A[i].charAt(k)<='p')
ricordati che i caratteri sono considerati un pò come numeri perchè viene controllato il loro codice UNICODE se nn erro, e ovviamente le lettere dell'alfabeto sono, nella tabella dei codici, una dietro l'altra in senso crescente.

Code:
int w=(int)(Math.random()*99)+1;
questo credo sia errore perchè crei numeri random compresi tra 1 e 99, ti manca il 100. quindi quando andrai a controllare la probabilità cn questo metodo, la probabilità che venga concatenata una z non è del 63% ma del 62%.quindi deve essere Math.random()*100...

un'altra minima correzione per "perfezionare":
Code:
else if(w>=11 && w<=26)
la prima delle due condizioni è inutile perchè se il primo if non è vero allora già escludi il fatto che il numero w sia minore o uguale a 11, quindi sai già che è compreso tra 12 e 100.
per la probabilità hai usato cmq lo stesso procedimento mio...vedremo ^^
Logged

"Che la Forza sia con Te"
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« Reply #6 on: 07-02-2011, 15:45:34 »

grazie mille per i suggerimenti 
Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #7 on: 07-02-2011, 16:02:48 »

figurati 
Logged

"Che la Forza sia con Te"
Luckino
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 107


Io nn sono il migliore ma nessuno è migliore di me


« Reply #8 on: 08-02-2011, 09:38:18 »

vorrei suggerirti dei cambiamenti per perfezionarlo (per il futuro dato che è ormai consegnato l'esercizio):

Code:
else if(w>=11 && w<=26)


sei sicuro che le probabilità siano esatte??
le probabilità erano 11%,26%,63%:

Code:

if(w<=11)

e fino a qui ci siamo perchè ci sono 11 possibilità che esca la lettera...

Code:

if(w>11 && w<= 26)

qui tu prendi in considerazione i numeri che vanno da 12 a 26...quindi ci sono 15 possibilità e non 26 che esca la lettera...

la restante percentuale che hai considerato risulta 74% e non 63%

io l'ho fatto così:
Code:

if(casuale <= 11)


Code:

if (casuale>11 && <=37)

i numeri compresi tra 11  e 37 sono 26

infine i numeri che vanno poi oltrei il 37 sono 63...

spero di essere stato chiaro..Ciao!! ciao ciao
Logged
StephCT
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #9 on: 08-02-2011, 10:54:38 »

ah ecco nn mi ero accorto di dirglielo, si doveva mettere minore di 37 sennò nn vale la percentuale. io nel compito l'ho messa.
Logged

"Che la Forza sia con Te"
Mari_C
Apprendista Forumista
**
Offline Offline

Posts: 240


"SmiiiiLe"


« Reply #10 on: 08-02-2011, 11:35:52 »

 testate capito..grazie!
Logged
Pages: [1]   Go Up
Print
Jump to: