Pages: 1 2 3 [4] 5 6 ... 9   Go Down
Print
Author Topic: 5° gara  (Read 19532 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
FReddy
Apprendista Forumista
**
Offline Offline

Posts: 367



« Reply #45 on: 01-05-2011, 08:55:15 »

Scusate mi è venuto un piccolo dubbio:  che il lasciapassare che si può ottenere senza averne altri è uno è chiarissimo, ma è sicuro che per ottenere il lasciapassare ricercato bisogna procurarsi tutti gli altri lasciapassare indicati?
Logged

Il presente è ora,
Il passato era ora,
Il futuro sarà ora.
pietro90
Matricola
*
Offline Offline

Posts: 19


« Reply #46 on: 01-05-2011, 09:18:38 »

Sembrerebbe di si....Anche io ho seguito questa logica...
Logged
FReddy
Apprendista Forumista
**
Offline Offline

Posts: 367



« Reply #47 on: 01-05-2011, 10:18:04 »

Sembrerebbe di si....Anche io ho seguito questa logica...

Spero proprio di si, perché se nella lista dei lasciapassere oltre a quello di partenza ce ne sono altri che non vengono usati faccio il botto  I

Anche perché il testo dice:
Quote
Si realizzi un programma Java che prese in input tutte le informazioni necessarie per il rilascio del
lasciapassare A38, conduca i nostri protagonisti, sportello dopo sportello, alla consegna dello stesso.

Quindi per "tutte le informazioni necessarie per il rilascio del lasciapassare ..." immagino intenda appunto che non vi siano informazioni superflue, anche perché in caso contrario mi sarei aspettato una qualche avvertenza tra parentesi come nelle gare precedenti.
Logged

Il presente è ora,
Il passato era ora,
Il futuro sarà ora.
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #48 on: 01-05-2011, 11:48:53 »

Sembrerebbe di si....Anche io ho seguito questa logica...

Spero proprio di si, perché se nella lista dei lasciapassere oltre a quello di partenza ce ne sono altri che non vengono usati faccio il botto  I

Anche perché il testo dice:
Quote
Si realizzi un programma Java che prese in input tutte le informazioni necessarie per il rilascio del
lasciapassare A38, conduca i nostri protagonisti, sportello dopo sportello, alla consegna dello stesso.

Quindi per "tutte le informazioni necessarie per il rilascio del lasciapassare ..." immagino intenda appunto che non vi siano informazioni superflue, anche perché in caso contrario mi sarei aspettato una qualche avvertenza tra parentesi come nelle gare precedenti.


da come ho impostato il mio codice e da come si comporta, potresti avere ragione
Logged

Aliens Exist
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #49 on: 01-05-2011, 13:03:20 »

P0 e G2 da chi sono preceduti?
Logged

Aliens Exist
pietro90
Matricola
*
Offline Offline

Posts: 19


« Reply #50 on: 01-05-2011, 13:13:02 »

N95 e R25 rispettivamente
Logged
R3m
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 486



« Reply #51 on: 01-05-2011, 13:30:29 »

Il programma l'ho finito...il "core" è di 9 ms...poi però la scrittura si prende circa altri 9ms e quindi il risultato è sui 19/20 ms...che sul pc del prof corrispondono a 190 ms circa (forse qualcosa di più)...
Logged

Ciò che è nostro è stato in campo sudato....ciò che vostro è stato in aula assegnato.
In serie B non sei mai stato perchè la prescrizione t'ha salvato.
Chuck_son
Forumista Eroico
*****
Offline Offline

Gender: Male
Posts: 1.583



WWW
« Reply #52 on: 01-05-2011, 13:31:50 »

N95 e R25 rispettivamente

è scandaloso il mio programma non li trova mah(ovviamente a seguire anche tutti gli altri)
Logged

Aliens Exist
SkyWolf
Matricola
*
Offline Offline

Gender: Male
Posts: 90



« Reply #53 on: 01-05-2011, 14:40:10 »

Il programma l'ho finito...il "core" è di 9 ms...poi però la scrittura si prende circa altri 9ms e quindi il risultato è sui 19/20 ms...che sul pc del prof corrispondono a 190 ms circa (forse qualcosa di più)...

Questa settimana sarà una bella gara.. yoh
Logged

Danilo Catalano.
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #54 on: 01-05-2011, 18:39:15 »

Il programma l'ho finito...il "core" è di 9 ms...poi però la scrittura si prende circa altri 9ms e quindi il risultato è sui 19/20 ms...che sul pc del prof corrispondono a 190 ms circa (forse qualcosa di più)...

Questa settimana sarà una bella gara.. yoh
ok
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #55 on: 01-05-2011, 23:03:17 »

Questa è la mia soluzione!  ok
Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


"Quanto manca alla vetta?";"Tu sali e non pensare"


« Reply #56 on: 01-05-2011, 23:36:12 »

Questa invece è la mia......un pò "camurriusa" però ce l'ho fatta!! yoh
Code:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class SS7_003411 {

public static final String A= "A38";
public static int righe=0,j=0,h=0;
public static String [][]matrix;
public static String []finalM;
public  static void LeggiFile(String nome) throws IOException
{

BufferedReader in = null;
BufferedWriter out= null;
try
{
in=new BufferedReader(new FileReader("input.txt"));

String str="";
boolean trovato=false;
while((str=in.readLine())!=null && trovato==false)//Fino a quando non arrivo a fine file
{
righe++;
if(righe==2)//comincia la prima lettura per sapere il numero di righe della matrice fino a trovare la prima riga vuota
{
righe=0;
while((str=in.readLine()).length()!=0)
righe++;
matrix=new String[righe+1][2]; //Mi serve per raccogliere i lasciapassare es. matrix[0][0]= I1  matrix[0][1]= T37 
finalM=new String[righe+1]; //Mi servirà per stampare la stringa finale
trovato=true; //finisce immediatamente la lettura

}
}
in.close();
in=new BufferedReader(new FileReader("input.txt"));
out=new BufferedWriter(new FileWriter("SS7_003411.txt"));
str="";
int line=0,rigaVuota=0;

while((str=in.readLine())!=null)
{
line++;
if(line==2)
{
while((str=in.readLine()).length()!=0 )
{

analizza(str);

}
//La matrice matrix e' pronta
//Ottengo quindi la seguente matrice(seguendo il pdf) da ordinare
/*[ I1  , T37 ]
  [ J83 , I66 ]
matrix  →   [ I66 , P73 ]
  [ I32 , J83 ]
  [ A38 , C40 ]
  [ T37 , I32 ]
  [ C40 , I1  ] */

ordina(A); //L'ordinamento comincera' partendo dal valore A38

if(str.length()==0)
rigaVuota++;

}
if(line>2 && rigaVuota<3 && str.length()!=0) //matrix.length=8 pero' e' da considerare la prima riga inutile e la riga dopo che e' vuota
{
analizza2(str);

}
if(str.length()==0)
{
rigaVuota++;
}
if(rigaVuota==3)
{
analizza3(str);
}
}
out.write(Stampa(finalM));
}
finally
{
in.close();
out.close();
}
}
private static int r=0;
public static void ordina(String a) 
//Ordino tutta matrix nel seguente modo: controllo il valore che c'e'
//dentro matrix[i][0] se corrisponde ad "a" controllo nella stessa linea
//il valore matrix[i][1] che mi indica la strada da percorrere
{

String next=a;
for(int i=0;i<finalM.length;i++)
{

if(matrix[i][0].equals(next))
{
finalM[r]=matrix[i][0];
next=matrix[i][1];
r++;
i=-1;
}
if(i==matrix.length-2  )
{
finalM[r]=next;
i=finalM.length;
}

}

}
public static void analizza(String s)
{

StringBuffer str=new StringBuffer();
int cont=0;

for(int i=0;i<s.length();i++)
{

if(s.charAt(i)>64 && s.charAt(i)<91 && s.charAt(i)!=' ' || s.charAt(i)>47 && s.charAt(i)<58 )
cont++;
if(cont>=2)
{
if(s.charAt(i)==' ' )
{
cont=1;
matrix[j][h]=str.toString();

str=new StringBuffer("");
h++;
if(h==2)//ho finito le colonne di matrix devo passare alla prox riga (perch� matrix ha soltanto 2 colonne 0 e 1)
{
h=0;
j++;

}
}
else
{
str.append(s.charAt(i));
}

}
}
matrix[j][h]=str.toString();
h++;
if(h==2)//ho finito le colonne di matrix devo passare alla prox riga (perche' matrix ha soltanto 2 colonne 0 e 1)
{
h=0;
j++;

}

}

public static void analizza2(String s)
{
//Qui arriva "Il lasciapassare I66 viene rilasciato allo sportello 5"
StringBuffer l1=new StringBuffer("");
String lascia="";
int rigafinalM=0;
int lasc=0;
if(s.charAt(19)==' ')//.x un solo numero
lasc=(s.charAt(17)*1000+s.charAt(18)-48);
else if(s.charAt(20)==' ')//.x un solo numero
lasc=(s.charAt(17)*1000+(s.charAt(18)-48)*10+(s.charAt(19)-48));
else if(s.charAt(21)==' ')//.x un solo numero
lasc=(s.charAt(17)*1000+(s.charAt(18)-48)*100+(s.charAt(19)-48)*10+(s.charAt(20)-48));

lascia=Integer.toString(lasc);
l1.append((char)((lascia.charAt(0)-48)*10+(lascia.charAt(1)-48)));
if(lascia.charAt(lascia.length()-2)==0 && lascia.charAt(lascia.length()-3)==0) //se i primi 2 numeri sono 0
l1.append((lascia.charAt(lascia.length()-1)-48)); //prendo il terzo
else if(lascia.charAt(lascia.length()-3)==0)//se soltanto il primo numero è 0
l1.append((lascia.charAt(lascia.length()-2)-48)*10+(lascia.charAt(lascia.length()-1)-48));
else
l1.append((lascia.charAt(lascia.length()-3)-48)*100+(lascia.charAt(lascia.length()-2)-48)*10+(lascia.charAt(lascia.length()-1)-48));

rigafinalM=cerca(l1);

if(s.charAt(s.length()-2)==' ')
l1.append(" allo sportello "+(s.charAt(s.length()-1)-48)+", ");
else if(s.charAt(s.length()-3)==' ')
l1.append(" allo sportello "+(((s.charAt(s.length()-2)-48)*10)+(s.charAt(s.length()-1)-48))+", ");
else if(s.charAt(s.length()-4)==' ')
l1.append(" allo sportello "+(((s.charAt(s.length()-3)-48)*100)+(s.charAt(s.length()-2)-48)*10+(s.charAt(s.length()-1)-48))+", ");
finalM[rigafinalM]=l1.toString();
}
public static void analizza3(String str)
{
//Qui arriva:"Lo sportello 4 si trova al piano 1, scala E, corridoio B"

short sport=0;
if(str.length()==0)
return;
if(str.charAt(14)==' ')//.x un solo numero
sport=(short)(str.charAt(13)-48);
else if(str.charAt(15)==' ')//..x
sport=(short)((str.charAt(13)-48)*10+(str.charAt(14)-48));
else if(str.charAt(16)== ' ')//...x
sport=(short)((str.charAt(13)-48)*100+(str.charAt(14)-48)*10+(str.charAt(15)-48));


            //Lo sportello 57 si trova al piano 9, scala B, corridoio H
StringBuffer s1=new StringBuffer("");
for(int i=27;i<str.length();i++)
{
//piano 9, scala B, corridoio H
if(sport>9 && i==27)
i++;
if(sport>99 && i==28)
i++;
s1.append(str.charAt(i));

}
// System.out.println(s1);

for(int i=0;i<finalM.length;i++)
{

if(finalM[i].charAt(finalM[i].length()-4)==' ')//.x un solo numero
{
if(sport==finalM[i].charAt(finalM[i].length()-3)-48)
finalM[i]+=s1;
}
else if(finalM[i].charAt(finalM[i].length()-5)==' ')//2numeri
{
if(sport==((finalM[i].charAt(finalM[i].length()-4)-48)*10+(finalM[i].charAt(finalM[i].length()-3)-48)))
finalM[i]+=s1;

}
else if(finalM[i].charAt(finalM[i].length()-6)==' ')//3numeri
{
if(sport==((finalM[i].charAt(finalM[i].length()-5)-48)*100+(finalM[i].charAt(finalM[i].length()-4)-48)*10+(finalM[i].charAt(finalM[i].length()-3)-48)))
finalM[i]+=s1;
}
}

}

public static int cerca(StringBuffer s)
{
for(int i=0;i<finalM.length;i++)
if(finalM[i].equals(s.toString()))
return i;
return -1;
}
public static String Stampa(String []a)
{
StringBuffer s=new StringBuffer("");
for(int y=a.length-1;y>=0;y--)
{

s.append("Prendere il lasciapassare "+a[y]+"\n");
}
return s.toString();
}
public static void main(String args[]) throws IOException
{
LeggiFile("input.txt");

}

}
Logged

"A cavallina....a cavallina.....a chi era bedda quannu  curreva" [Cit.  Dal Tenerissimo via plebiscito]
callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


"Quanto manca alla vetta?";"Tu sali e non pensare"


« Reply #57 on: 01-05-2011, 23:41:12 »

Wow....zeloto il tuo codice gira che è una meraviglia!!nel mio pc per essere eseguito impiega 80ms!!(il mio ne impiega il doppio!! testate testate testate testate ) complimenti!!
Logged

"A cavallina....a cavallina.....a chi era bedda quannu  curreva" [Cit.  Dal Tenerissimo via plebiscito]
zElOtO
Forumista
***
Offline Offline

Gender: Male
Posts: 845



WWW
« Reply #58 on: 01-05-2011, 23:45:42 »

Wow....zeloto il tuo codice gira che è una meraviglia!!nel mio pc per essere eseguito impiega 80ms!!(il mio ne impiega il doppio!! testate testate testate testate ) complimenti!!
Ho 3 versioni svolte di questo esercizio..questa è quella che mi è riuscita meglio!
Ho creato vari oggetti: Documenti, e Sportelli.
Ordinato tramite il mergeSort e ricercando ciò che volevo trovare tramite ricorsione, uno "simil stack" e ricerca dicotomica (binaria).
Grazie comunque  
« Last Edit: 01-05-2011, 23:47:23 by zElOtO » Logged

I computer sono incredibilmente veloci, accurati e stupidi. Gli uomini sono incredibilmente lenti, inaccurati e intelligenti. Insieme sono una potenza che supera l'immaginazione. (A. Einstein)

Damiano Cancemi
www.damianocancemi.com
www.nerdbren.com
www.nerdbren.com/blog
callo
Forumista
***
Offline Offline

Gender: Male
Posts: 564


"Quanto manca alla vetta?";"Tu sali e non pensare"


« Reply #59 on: 01-05-2011, 23:53:09 »

Io all'inizio avevo pensato che il modo migliore per svolgere questo esercizio fosse quello di usare le liste (e per questo motivo lo stavo facendo con le Doppiamente Linkate!) però poi ho pensato che  la ricerca di un elemento ogni volta mi avrebbe fatto perdere troppo tempo(sinceramente non so quanto ciò guadagnato facendolo con una matrice e un array di Stringhe.....non so neanche se ci ho guadagnato in termini di tempo!) e ho abbandonato il lavoro......indubbiamente però sia con le liste circolari che con le doppiamente linkate l'esercizio era fattibilissimo stavolta!!
Logged

"A cavallina....a cavallina.....a chi era bedda quannu  curreva" [Cit.  Dal Tenerissimo via plebiscito]
Pages: 1 2 3 [4] 5 6 ... 9   Go Up
Print
Jump to: