Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Programmazione 2, 9 CFU => Topic started by: fabryxio on 29-04-2011, 16:21:56



Title: 5° gara
Post by: fabryxio on 29-04-2011, 16:21:56
Apro il topic x darci una mano ed eliminare i nostri dubbi ....

Buon Lavoro... altro ke festa dei lavoratori   :[Emoticon] PC Asd:  .camberman


Title: Re:5° gara
Post by: fabryxio on 29-04-2011, 17:05:38
Prendere il lasciapassare A38

immagino ke lo scopo sia prendere sto maledetto A38 , quindi non c'è la possibilità ke in un input del prof quando controlla l'esercizio nella sua MIRIADE di input ci sia un tipo:

Prendere il lasciapassare B98

e poi le varie vie per arrivare a prenderlo

Giusto???????


Title: Re:5° gara
Post by: zElOtO on 29-04-2011, 18:42:21
Credo che il passaporto da cercare sia soltanto 1, in questo caso A38.
Quote
Il file di input contiene 4 gruppi di informazioni, separati da una riga vuota. Il primo gruppo è composto da una sola riga di testo e contiene l'informazione sull'obiettivo (il rilascio di un determinato lasciapassare). Il secondo gruppo fornisce le informazioni su quali sono i lasciapassare che è necessario consegnare per il rilascio di un altro determinato lasciapassare. Il terzo gruppo contiene le informazioni relative agli sportelli in grado di rilasciare determinati lasciapassare. Infine il quarto gruppo fornisce le informazioni relative alla posizione dei vari sportelli all'interno della casa che rende folli.
I lasciapassare hanno un codice identificativo formato da una lettera e un numero intero (ad esempio A38).


Title: Re:5° gara
Post by: callo on 29-04-2011, 19:00:01
Nella puntata di Asterix e Obelix inerente queste fatiche il lasciapassare da avere era proprio l'A38 quindi non penso che sai una casualità quella di ottenere il lasciapassare A38 come scopo del nostro esercizio!!Io penso che la prima riga sarà sempre quella....quello che cambierà sarà solo il percorso per trovarlo!!Bisogna vedere se il prof conferma oppure smentisce questo mio ragionamento!! :boh


Title: Re:5° gara
Post by: zElOtO on 29-04-2011, 19:04:20
Si, effettivamente è logico che in 1 file di input ci sia soltanto 1 lasciapassare da cercare.


Title: Re:5° gara
Post by: callo on 29-04-2011, 19:10:54
Io intendo dire che: se guardi la puntata di Asterix e Obelix che il prof linka nel pdf i due devono ricercare proprio il "lasciapassare A38" ....stessa cosa viene richiesta nel testo del nostro esercizio!!Quindi io penso che anche il file di input che il professore userà per testare le nostre soluzioni avrà come prima riga "Prendere il lasciapassare A38 "  e non potrà capitare per esempio di avere :" Prendere il lasciapassare B98"


Title: Re:5° gara
Post by: Chuck_son on 29-04-2011, 19:22:41
sisi è solo uno


Title: Re:5° gara
Post by: fabryxio on 29-04-2011, 19:29:43
meglio!  .applausi


Title: Re:5° gara
Post by: zElOtO on 29-04-2011, 19:48:05
Comunque bell'esercizio! "Particolare" direi e l'implementazione è "sottile"!  :-OK


Title: Re:5° gara
Post by: FReddy on 29-04-2011, 19:57:16
Io intendo dire che: se guardi la puntata di Asterix e Obelix che il prof linka nel pdf i due devono ricercare proprio il "lasciapassare A38" ....stessa cosa viene richiesta nel testo del nostro esercizio!!Quindi io penso che anche il file di input che il professore userà per testare le nostre soluzioni avrà come prima riga "Prendere il lasciapassare A38 "  e non potrà capitare per esempio di avere :" Prendere il lasciapassare B98"

è proprio così dato che il testo recita:
Quote
Il file di output contiene la sequenza di operazioni, una per riga, che è necessario effettuare per ottenere il
rilascio del lasciapassare A38.


Title: Re:5° gara
Post by: zElOtO on 29-04-2011, 20:49:03
Ma poi che problema c'è anche se cambia il lasciapassare da cercare?
Il lasciapassare da cercare si trova nella prima riga, basta estrapolarlo no?  :boh


Title: Re:5° gara
Post by: Chuck_son on 29-04-2011, 21:12:01
avete provato l'input grande?? vi da qualche errore strano?? è il mio codice errato o cosa?


Title: Re:5° gara
Post by: fabryxio on 29-04-2011, 21:17:25
Ma poi che problema c'è anche se cambia il lasciapassare da cercare?
Il lasciapassare da cercare si trova nella prima riga, basta estrapolarlo no?  :boh
Che c'entra -.- allora non avete capito quello ke ho detto...
che ne so ..
ho i miei 3 gruppi e da questi devo prendere un determinato lasciapassare (vedi prima riga)...
poi ho altri 3 gruppi dal quale devo prendere un diverso tipo di lasciapassare
etc etc... li non si parla più di cercarne uno solo in particolare..!!
va bè ma non sarà così quindi non facciamoci problemi inutili  .whistling


Title: Re:5° gara
Post by: FReddy on 29-04-2011, 21:23:14
Ma secondo voi il numero intero associato al permesso può superare il 99?


Title: Re:5° gara
Post by: Chuck_son on 29-04-2011, 21:31:45
Ma secondo voi il numero intero associato al permesso può superare il 99?

liste linkate ahhahahahaha


Title: Re:5° gara
Post by: fabryxio on 29-04-2011, 21:45:45
immaginavo ke le mettesse :S


Title: Re:5° gara
Post by: Chuck_son on 29-04-2011, 21:48:25
anche se io non li utilizzo.. poca maneggevolezza ahah


Title: Re:5° gara
Post by: FReddy on 29-04-2011, 22:06:06
Ma secondo voi il numero intero associato al permesso può superare il 99?

liste linkate ahhahahahaha

Intendevo come c'è "A38" ci può essere anche "A338"?


Title: Re:5° gara
Post by: fabryxio on 29-04-2011, 22:55:00
anche se io non li utilizzo.. poca maneggevolezza ahah
ancora sono fresco fresco =(


Title: Re:5° gara
Post by: zElOtO on 29-04-2011, 23:10:40
Finito  |-O


Title: Re:5° gara
Post by: zElOtO on 29-04-2011, 23:11:35
Ma poi che problema c'è anche se cambia il lasciapassare da cercare?
Il lasciapassare da cercare si trova nella prima riga, basta estrapolarlo no?  :boh
Che c'entra -.- allora non avete capito quello ke ho detto...
che ne so ..
ho i miei 3 gruppi e da questi devo prendere un determinato lasciapassare (vedi prima riga)...
poi ho altri 3 gruppi dal quale devo prendere un diverso tipo di lasciapassare
etc etc... li non si parla più di cercarne uno solo in particolare..!!
va bè ma non sarà così quindi non facciamoci problemi inutili  .whistling

Si avevo già detto che nel file di input può essere presente soltanto 1 lasciapassare...


Title: Re:5° gara
Post by: zElOtO on 29-04-2011, 23:12:44
Ma secondo voi il numero intero associato al permesso può superare il 99?

liste linkate ahhahahahaha

Intendevo come c'è "A38" ci può essere anche "A338"?
Nulla lo vieta, ma che differenza farebbe?  :boh


Title: Re:5° gara
Post by: Chuck_son on 29-04-2011, 23:28:36
l'hai fatto con le liste?? tempo?


Title: Re:5° gara
Post by: zElOtO on 29-04-2011, 23:43:26
No, nessuna lista. Al momento si aggira sui 170ms, ma vedrò di migliorarlo.
EDIT: Sono sceso sui 160ms. Che record!  :-K


Title: Re:5° gara
Post by: Chuck_son on 30-04-2011, 10:00:01
No, nessuna lista. Al momento si aggira sui 170ms, ma vedrò di migliorarlo.
EDIT: Sono sceso sui 160ms. Che record!  :-K

capito capito  :nono


Title: Re:5° gara
Post by: SkyWolf on 30-04-2011, 11:42:45
Come al solito lascio le prime e ultime righe dell'output, in modo da confrontarci:

Code:
Prendere il lasciapassare O33 allo sportello 8, piano 2, scala K, corridoio C
Prendere il lasciapassare F96 allo sportello 56, piano 7, scala G, corridoio G
Prendere il lasciapassare R50 allo sportello 4, piano 7, scala I, corridoio G
Prendere il lasciapassare P81 allo sportello 110, piano 3, scala B, corridoio F
Prendere il lasciapassare B48 allo sportello 110, piano 3, scala B, corridoio F
...
...
...
Prendere il lasciapassare O61 allo sportello 62, piano 9, scala G, corridoio D
Prendere il lasciapassare N40 allo sportello 2, piano 8, scala E, corridoio B
Prendere il lasciapassare D70 allo sportello 36, piano 2, scala G, corridoio E
Prendere il lasciapassare O31 allo sportello 76, piano 10, scala D, corridoio H
Prendere il lasciapassare A38 allo sportello 72, piano 10, scala I, corridoio E

Come tempi sono sui 26ms, che per confronto con i tempi delle altre prove, so che corrisponderanno più o meno a 190ms sulla macchina del professore.

Saluti.


Title: Re:5° gara
Post by: Chuck_son on 30-04-2011, 11:53:56
io sto avendo dei dubbi sull'input


Title: Re:5° gara
Post by: zElOtO on 30-04-2011, 12:35:25
Come al solito lascio le prime e ultime righe dell'output, in modo da confrontarci:

Code:
Prendere il lasciapassare O33 allo sportello 8, piano 2, scala K, corridoio C
Prendere il lasciapassare F96 allo sportello 56, piano 7, scala G, corridoio G
Prendere il lasciapassare R50 allo sportello 4, piano 7, scala I, corridoio G
Prendere il lasciapassare P81 allo sportello 110, piano 3, scala B, corridoio F
Prendere il lasciapassare B48 allo sportello 110, piano 3, scala B, corridoio F
...
...
...
Prendere il lasciapassare O61 allo sportello 62, piano 9, scala G, corridoio D
Prendere il lasciapassare N40 allo sportello 2, piano 8, scala E, corridoio B
Prendere il lasciapassare D70 allo sportello 36, piano 2, scala G, corridoio E
Prendere il lasciapassare O31 allo sportello 76, piano 10, scala D, corridoio H
Prendere il lasciapassare A38 allo sportello 72, piano 10, scala I, corridoio E
L'output è corretto!  :-OK
Io al momento sono sceso sui 120ms


Title: Re:5° gara
Post by: R3m on 30-04-2011, 12:51:18
Sono abbastanza stremato  :yoh

Comunque l'output confermo che è corretto, almeno sui numeri dei lasciapassare...io per ora sono arrivato a far stampare solo quelli   |-O

Oggi pomeriggio dovrei completare tutto, ma sicuramente è corretto.

Per quanto riguarda i tempi (devo ancora finire) sono sui 31 ms...che corrispondono a circa 300 ms sul pc del prof...ma bisogna anche considerare che ancora non è ottimizzato e che devo finire una parte del programma.


Title: Re:5° gara
Post by: fabryxio on 30-04-2011, 12:57:23
Quoto ouput corretto!!  :-ciao


Title: Re:5° gara
Post by: Chuck_son on 30-04-2011, 13:49:05
ma c'è ne piu di uno telegrammi "indipendenti"?


Title: Re:5° gara
Post by: zElOtO on 30-04-2011, 13:52:40
ma c'è ne piu di uno telegrammi "indipendenti"?
Se per telegrammi intendi lasciapassare e per "indipendenti" intendi che un lasciapassare non è "propedeutico" a nessun altro, no.

Ad esempio:
Quote
Per il lasciapassare I1 serve il lasciapassare T37
Per il lasciapassare J83 serve il lasciapassare I66
Per il lasciapassare I66 serve il lasciapassare P73
Per il lasciapassare I32 serve il lasciapassare J83
Per il lasciapassare A38 serve il lasciapassare C40
Per il lasciapassare T37 serve il lasciapassare I32
Per il lasciapassare C40 serve il lasciapassare I1

In questo caso il lasciapassare "indipendente" è il P73, questo è unico.


Title: Re:5° gara
Post by: Chuck_son on 30-04-2011, 13:54:31
quindi anche 033 è unico no?


Title: Re:5° gara
Post by: zElOtO on 30-04-2011, 13:55:55
quindi anche 033 è unico no?
Ovvio, altrimenti non sarebbe il primo risultato dell'output  :-OK


Title: Re:5° gara
Post by: Chuck_son on 30-04-2011, 14:05:09
quindi anche 033 è unico no?
Ovvio, altrimenti non sarebbe il primo risultato dell'output  :-OK

si ok... siamo sicuri? perche se no il mio programma è sballato ahhah


Title: Re:5° gara
Post by: zElOtO on 30-04-2011, 14:08:36
quindi anche 033 è unico no?
Ovvio, altrimenti non sarebbe il primo risultato dell'output  :-OK

si ok... siamo sicuri? perche se no il mio programma è sballato ahhah
Nulla è certo, però la logica dell'esercizio è sicuramente questa!


Title: Re:5° gara
Post by: fabryxio on 30-04-2011, 15:21:27
quindi anche 033 è unico no?
Ovvio, altrimenti non sarebbe il primo risultato dell'output  :-OK

si ok... siamo sicuri? perche se no il mio programma è sballato ahhah
Nulla è certo, però la logica dell'esercizio è sicuramente questa!

QUOTO  .quoto


Title: Re:5° gara
Post by: Chuck_son on 30-04-2011, 17:54:11
siccome a me da piu lasciapassare indipendenti bo


Title: Re:5° gara
Post by: fabryxio on 30-04-2011, 19:33:11
siccome a me da piu lasciapassare indipendenti bo
Controlla meglio l'esercizio xD


Title: Re:5° gara
Post by: zElOtO on 30-04-2011, 20:26:06
Secondo voi il professore possa fare problemi se si utilizzasse Arrays.sort?  :boh
P.S. Tempo: 90ms


Title: Re:5° gara
Post by: FReddy on 30-04-2011, 20:42:05
Secondo voi il professore possa fare problemi se si utilizzasse Arrays.sort?  :boh
P.S. Tempo: 90ms

Il testo recita:

Quote
N.B. Non è permesso l'utilizzo di strutture dati diverse da quelle studiate a lezione, ne di strutture dati fornite
da Java. Qualsiasi struttura dati non elementare deve essere implementata dallo studente.

Quindi, a meno che io non capisca l'italiano, l'Array.sort lo puoi usare dato che sono quasi sicuro che non implementi nessuna struttura dati non elementare.


Title: Re:5° gara
Post by: zElOtO on 30-04-2011, 20:44:48
Quote
N.B. Non è permesso l'utilizzo di strutture dati diverse da quelle studiate a lezione, ne di strutture dati fornite
da Java. Qualsiasi struttura dati non elementare deve essere implementata dallo studente.
Quindi, a meno che io non capisca l'italiano, l'Array.sort lo puoi usare dato che sono quasi sicuro che non implementi nessuna struttura dati non elementare.

Il testo dice anche:
Code:
Non possono essere utilizzate tabelle precomputate che permettano di risolvere problemi non elementari.


Title: Re:5° gara
Post by: SkyWolf on 01-05-2011, 08:08:15
Quindi, a meno che io non capisca l'italiano, l'Array.sort lo puoi usare dato che sono quasi sicuro che non implementi nessuna struttura dati non elementare.

Sinceramente, usare un metodo per ordinare un array in una gara di programmazione, cioè... Se sei capace dovresti fartelo tu l'algoritmo per l'ordinamento, altro che invocare roba già fatta.

Questo è il mio modo di vedere le cose, poi fate vobis. x°D


Title: Re:5° gara
Post by: pietro90 on 01-05-2011, 08:18:48
 .quoto


Secondo me usare certi "trucchetti" non è consentito, poi ovviamente ognuno fa come crede.....

@Zeloto, i tempi sul tuo pc di solito a quanto corrispondo dal prof?!?!?!!?


Title: Re:5° gara
Post by: SkyWolf on 01-05-2011, 08:34:43
Bon, consegnato :) se i miei calcoli non sono erratti e se con l'input del professore filerà tutto liscio, dovrei fare un tempo vicino ai 180ms in classifica (poichè sulla mia macchina stavo sui 25ms).

Vedremo domani.


Title: Re:5° gara
Post by: FReddy 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?


Title: Re:5° gara
Post by: pietro90 on 01-05-2011, 09:18:38
Sembrerebbe di si....Anche io ho seguito questa logica... .smile


Title: Re:5° gara
Post by: FReddy on 01-05-2011, 10:18:04
Sembrerebbe di si....Anche io ho seguito questa logica... .smile

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  :-K

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.


Title: Re:5° gara
Post by: Chuck_son on 01-05-2011, 11:48:53
Sembrerebbe di si....Anche io ho seguito questa logica... .smile

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  :-K

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


Title: Re:5° gara
Post by: Chuck_son on 01-05-2011, 13:03:20
P0 e G2 da chi sono preceduti?


Title: Re:5° gara
Post by: pietro90 on 01-05-2011, 13:13:02
N95 e R25 rispettivamente


Title: Re:5° gara
Post by: R3m 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ù)...


Title: Re:5° gara
Post by: Chuck_son 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)


Title: Re:5° gara
Post by: SkyWolf 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


Title: Re:5° gara
Post by: zElOtO 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


Title: Re:5° gara
Post by: zElOtO on 01-05-2011, 23:03:17
Questa (http://damianoc90.altervista.org/index.php?option=com_content&view=article&id=99:la-casa-che-rende-folli&catid=35:programmazione-2&Itemid=53) è la mia soluzione!  :-OK


Title: Re:5° gara
Post by: callo 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");

}

}


Title: Re:5° gara
Post by: callo 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!! :-)| :-)| :-)| :-)| ) complimenti!!


Title: Re:5° gara
Post by: zElOtO 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!! :-)| :-)| :-)| :-)| ) 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  .arrossisco


Title: Re:5° gara
Post by: callo 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!!


Title: Re:5° gara
Post by: zElOtO on 01-05-2011, 23:56:17
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!!
Le liste doppiamente linkate sarebbero state a mio avviso il top. Ho cercato di simularle infatti tramite il mio programma..Il problema è che:
Quote
N.B. Non è permesso l'utilizzo di strutture dati diverse da quelle studiate a lezione, ne di strutture dati fornite da Java. Qualsiasi struttura dati non elementare deve essere implementata dallo studente.
E noi a lezione siamo arrivati a liste semplicemente linkate!


Title: Re:5° gara
Post by: callo on 02-05-2011, 00:04:44
Come alle liste semplici!!Ma nel Diario delle lezioni del prof c'è scritto:
Code:

Giovedì 28 aprile 2011
Uso delle liste linkate
Liste linkate semplici: inserimento e cancellazione
Liste doppiamente linkate : inserimento e cancellazione
Liste doppiamente linkate ed ordinate
Liste cirolari e gestione del cursore
Ricerca all'interno di una lista
(Purtroppo giovedì non sono potuto venire a lezione quindi ho saputo che ha trattato le liste tramite il Diario delle lezioni del suo sito!!)


Title: Re:5° gara
Post by: callo on 02-05-2011, 00:11:44
Addirittura con le liste circolari se prendi l'esempio che trovi nel pdf i valori risultavano con soli 2 spostamenti perfettamente ordinati!! .rido


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 00:12:26
Come alle liste semplici!!Ma nel Diario delle lezioni del prof c'è scritto:
Code:

Giovedì 28 aprile 2011
Uso delle liste linkate
Liste linkate semplici: inserimento e cancellazione
Liste doppiamente linkate : inserimento e cancellazione
Liste doppiamente linkate ed ordinate
Liste cirolari e gestione del cursore
Ricerca all'interno di una lista
(Purtroppo giovedì non sono potuto venire a lezione quindi ho saputo che ha trattato le liste tramite il Diario delle lezioni del suo sito!!)
Ha fatto solo liste linkate semplici


Title: Re:5° gara
Post by: R3m on 02-05-2011, 09:01:16
Come al solito il mio era il più veloce...e come al solito outof bounds...io gli metto 3000 e mi spunta 6000  |-O

Code:
import java.io.*;

class GraphNode {
public GraphNode( char _ap, int _cd ) {
apix = _ap;
codex = _cd;
}

GraphNode next;
Sportello sportello;
char apix;
int codex;
boolean isVisited;
}

class Sportello {
int sportello,piano;
char scala,corridoio;
}

public class M01_000001
{
static BufferedReader input = null;
static BufferedWriter output = null;

static GraphNode lasciapassareNode;
   /** -.- **/
static GraphNode[][] tableOfContent = new GraphNode[100][3000];
/** -.-" **/
static Sportello[] palazzo = new Sportello[3000];

public static void parseFile(String inputFile,String outputFile) throws Exception
{
try {
input = new BufferedReader(new FileReader(new File(inputFile)));
output = new BufferedWriter(new FileWriter(outputFile),1024*8);

input.skip(26);

int c;
char m = (char)input.read();
int tt = 0;

while ((c = input.read()) != '\n')
tt = tt * 10 + (c - '0');

lasciapassareNode = new GraphNode(m,tt);
tableOfContent[(int)m-65][tt] = lasciapassareNode;

input.skip(1);

while( (c=input.read()) != '\n' )
{
input.skip(20);
int x1 = 0,x2 = 0;
char c1,c2;

c = input.read();
c1 = (char)c;
while ((c = input.read()) != ' ')
x1 = x1 * 10 + (c - '0');

input.skip(23);

c = input.read();
c2 = (char)c;
while ((c = input.read()) != '\n')
x2 = x2 * 10 + (c - '0');

if( tableOfContent[(int)c1-65][x1] == null )
tableOfContent[(int)c1-65][x1] = new GraphNode(c1,x1);

if( tableOfContent[(int)c2-65][x2] == null )
tableOfContent[(int)c2-65][x2] = new GraphNode(c2,x2);

tableOfContent[(int)c1-65][x1].next = tableOfContent[(int)c2-65][x2];
}

GraphNode[] out = new GraphNode[6000];
int i = 0;
while( lasciapassareNode != null ) {
out[i++] = lasciapassareNode;
lasciapassareNode.isVisited = true;
lasciapassareNode = lasciapassareNode.next;
}

while( (c=input.read()) != '\n' )
{
input.skip(16);
c = input.read();
char c1 = (char)c;
int x = 0,num = 0;

while ((c = input.read()) != ' ')
x = x * 10 + (c - '0');

input.skip(32);
while ((c = input.read()) != '\n')
num = num * 10 + (c - '0');

if( tableOfContent[(int)c1-65][x].isVisited == true && palazzo[num] == null )
palazzo[num] = new Sportello();
tableOfContent[(int)c1-65][x].sportello = palazzo[num];
}

while( input.ready() )
{
int x = 0,y = 0;
char z,t;

input.skip(13);
while ((c = input.read()) != ' ')
x = x * 10 + (c - '0');
input.skip(18);
while ((c = input.read()) != ',')
y = y * 10 + (c - '0');
input.skip(7);
z = (char)input.read();
input.skip(12);
t = (char)input.read();
input.skip(1);

if( palazzo[x] != null ) {
palazzo[x].sportello = x;
palazzo[x].piano = y;
palazzo[x].scala = z;
palazzo[x].corridoio = t;
}
}

StringBuilder s = new StringBuilder();
for( int k=i-1; k>=0; k-- ) {
s.append("Prendere il lasciapassare ").append(out[k].apix).append(out[k].codex).append(" allo sportello ").
append(out[k].sportello.sportello).append(", piano ").append(out[k].sportello.piano).append(", scala ").
append(out[k].sportello.scala).append(", corridoio ").append(out[k].sportello.corridoio).append('\n');
}
output.write(s.toString());
}
finally {
if (output != null) output.close();
if (input != null) input.close();
}
}

public static void main(String[] args) throws Exception {
Stopwatch stopwatch = new Stopwatch();
stopwatch.start();
parseFile("input.txt","M01_000001.txt");
stopwatch.stop();
System.out.println(stopwatch);
}
}


EDIT: Ho postato il codice dell'ultima prova, chiedo venia  :yoh


Title: Re:5° gara
Post by: fabryxio on 02-05-2011, 11:13:27
Code:
Prendere il lasciapassare J63 allo sportello 397, piano 67, scala S, corridoio M
Prendere il lasciapassare Q496 allo sportello 445, piano 76, scala D, corridoio J
Prendere il lasciapassare E151 allo sportello 225, piano 8, scala E, corridoio P
Prendere il lasciapassare F100 allo sportello 73, piano 21, scala J, corridoio Q
Prendere il lasciapassare Q26 allo sportello 193, piano 73, scala H, corridoio F
Prendere il lasciapassare L188 allo sportello 109, piano 93, scala F, corridoio K
Prendere il lasciapassare A461 allo sportello 421, piano 83, scala G, corridoio L

Ora mi chiedo, perkè il mio output è corretto al 100% se l'output di quelli dei primi posti è uguale a quello sopra riportato???????????????????
Non penso perkè è eccessivamente lento , quello già lo sapevo a prescindere!! =S

Questo è l'output ke dice il prof sul mio prog:
Code:
Prendere il lasciapassare G321 allo sportello 34, piano 7, scala I, corridoio T
Prendere il lasciapassare C75 allo sportello 120, piano 20, scala e, corridoio H
Prendere il lasciapassare D45 allo sportello 179, piano 15, scala _, corridoio C
Prendere il lasciapassare J235 allo sportello 341, piano 18, scala P, corridoio N
Prendere il lasciapassare R221 allo sportello 308, piano 18, scala R, corridoio R
Prendere il lasciapassare I462 allo sportello 126, piano 12, scala E, corridoio D
Prendere il lasciapassare M433 allo sportello 445, piano 39, scala e, corridoio G
Prendere il lasciapassare L451 allo sportello 372, piano 13, scala c, corridoio R
Prendere il lasciapassare K392 allo sportello 321, piano 34, scala X, corridoio R
Prendere il lasciapassare H204 allo sportello 344, piano 25, scala T, corridoio R


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 11:56:58
la cosa meravigliosa la sapete qual'è???? che gente che ancora non si sia data nemmeno programmazione 1 arrivi in testa hahahahhahahah  chissa come mai  .whistling  .penso


Title: Re:5° gara
Post by: fabryxio on 02-05-2011, 11:58:32
la cosa meravigliosa la sapete qual'è???? che gente che ancora non si sia data nemmeno programmazione 1 arrivi in testa hahahahhahahah  chissa come mai  .whistling  .penso

ce n'è a miliardi.. !! è  colpa delle 650.000 prove ke uno deve SUPERARE prima di arrivare a un risultato!!


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 11:59:47
ce n'è a miliardi.. !! è  colpa delle 650.000 prove ke uno deve SUPERARE prima di arrivare a un risultato!!

cosa intendi?


Title: Re:5° gara
Post by: callo on 02-05-2011, 12:07:30
Come al solito il mio era il più veloce...e come al solito outof bounds...io gli metto 3000 e mi spunta 6000  |-O

Code:
import java.io.*;

class GraphNode {
public GraphNode( char _ap, int _cd ) {
apix = _ap;
codex = _cd;
}

GraphNode next;
Sportello sportello;
char apix;
int codex;
boolean isVisited;
}

class Sportello {
int sportello,piano;
char scala,corridoio;
}

public class M01_000001
{
static BufferedReader input = null;
static BufferedWriter output = null;

static GraphNode lasciapassareNode;
   /** -.- **/
static GraphNode[][] tableOfContent = new GraphNode[100][3000];
/** -.-" **/
static Sportello[] palazzo = new Sportello[3000];

public static void parseFile(String inputFile,String outputFile) throws Exception
{
try {
input = new BufferedReader(new FileReader(new File(inputFile)));
output = new BufferedWriter(new FileWriter(outputFile),1024*8);

input.skip(26);

int c;
char m = (char)input.read();
int tt = 0;

while ((c = input.read()) != '\n')
tt = tt * 10 + (c - '0');

lasciapassareNode = new GraphNode(m,tt);
tableOfContent[(int)m-65][tt] = lasciapassareNode;

input.skip(1);

while( (c=input.read()) != '\n' )
{
input.skip(20);
int x1 = 0,x2 = 0;
char c1,c2;

c = input.read();
c1 = (char)c;
while ((c = input.read()) != ' ')
x1 = x1 * 10 + (c - '0');

input.skip(23);

c = input.read();
c2 = (char)c;
while ((c = input.read()) != '\n')
x2 = x2 * 10 + (c - '0');

if( tableOfContent[(int)c1-65][x1] == null )
tableOfContent[(int)c1-65][x1] = new GraphNode(c1,x1);

if( tableOfContent[(int)c2-65][x2] == null )
tableOfContent[(int)c2-65][x2] = new GraphNode(c2,x2);

tableOfContent[(int)c1-65][x1].next = tableOfContent[(int)c2-65][x2];
}

GraphNode[] out = new GraphNode[6000];
int i = 0;
while( lasciapassareNode != null ) {
out[i++] = lasciapassareNode;
lasciapassareNode.isVisited = true;
lasciapassareNode = lasciapassareNode.next;
}

while( (c=input.read()) != '\n' )
{
input.skip(16);
c = input.read();
char c1 = (char)c;
int x = 0,num = 0;

while ((c = input.read()) != ' ')
x = x * 10 + (c - '0');

input.skip(32);
while ((c = input.read()) != '\n')
num = num * 10 + (c - '0');

if( tableOfContent[(int)c1-65][x].isVisited == true && palazzo[num] == null )
palazzo[num] = new Sportello();
tableOfContent[(int)c1-65][x].sportello = palazzo[num];
}

while( input.ready() )
{
int x = 0,y = 0;
char z,t;

input.skip(13);
while ((c = input.read()) != ' ')
x = x * 10 + (c - '0');
input.skip(18);
while ((c = input.read()) != ',')
y = y * 10 + (c - '0');
input.skip(7);
z = (char)input.read();
input.skip(12);
t = (char)input.read();
input.skip(1);

if( palazzo[x] != null ) {
palazzo[x].sportello = x;
palazzo[x].piano = y;
palazzo[x].scala = z;
palazzo[x].corridoio = t;
}
}

StringBuilder s = new StringBuilder();
for( int k=i-1; k>=0; k-- ) {
s.append("Prendere il lasciapassare ").append(out[k].apix).append(out[k].codex).append(" allo sportello ").
append(out[k].sportello.sportello).append(", piano ").append(out[k].sportello.piano).append(", scala ").
append(out[k].sportello.scala).append(", corridoio ").append(out[k].sportello.corridoio).append('\n');
}
output.write(s.toString());
}
finally {
if (output != null) output.close();
if (input != null) input.close();
}
}

public static void main(String[] args) throws Exception {
Stopwatch stopwatch = new Stopwatch();
stopwatch.start();
parseFile("input.txt","M01_000001.txt");
stopwatch.stop();
System.out.println(stopwatch);
}
}


EDIT: Ho postato il codice dell'ultima prova, chiedo venia  :yoh


R3m sei sicuro che il tuo fosse quello più veloce? Il valore 126.46ms che hai come risultato non dovrebbe essere il tempo passato prima che l'eccezione venga lanciata??Cioè in parole povere il programma termina al 126.46-esimo millisecondo perchè viene lanciata l'eccezione " ..... " ma questo non vuol dire che il programma è veloce perchè possibilmente con l'input del professore (partendo dal presupposto di avere un programma corretto!) qualche tuo metodo poteva farti perdere tempo e farti allungare drasticamente i tempi d'esecuzione!! .wink


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 12:18:15
la cosa meravigliosa la sapete qual'è???? che gente che ancora non si sia data nemmeno programmazione 1 arrivi in testa hahahahhahahah  chissa come mai  .whistling  .penso
Ahahahaha  .quoto alla grande!


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 12:22:53
la cosa meravigliosa la sapete qual'è???? che gente che ancora non si sia data nemmeno programmazione 1 arrivi in testa hahahahhahahah  chissa come mai  .whistling  .penso
Ahahahaha  .quoto alla grande!


ci arriva l'illuminazione dal nuovo santo? ahhahaahaha  :-)| :-)| :-)|  aka karol


Title: Re:5° gara
Post by: fabryxio on 02-05-2011, 12:25:09
Ma vorrei capire xkè il mio ouput è diverso dagli altri, ma il prof mi ha dato corretto al 100% .. del tempo non mi frega sapevo ke faceva cagare.. ma xkè diverso così ??? è stato corretto cn un altro file di input ??? boh


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 12:28:12
ci arriva l'illuminazione dal nuovo santo? ahhahaahaha  :-)| :-)| :-)|
La fonte resta misteriosa  :nono


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 12:32:48
ci arriva l'illuminazione dal nuovo santo? ahhahaahaha  :-)| :-)| :-)|
La fonte resta misteriosa  :nono

spero che al meno si preparino per l'orale hahahha


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 12:35:03
ci arriva l'illuminazione dal nuovo santo? ahhahaahaha  :-)| :-)| :-)|
La fonte resta misteriosa  :nono

spero che al meno si preparino per l'orale hahahha
Beh si, anche se la preparazione per l'orale direi che è molto più semplice rispetto alla preparazione pratica  :[Emoticon] PC Asd:


Title: Re:5° gara
Post by: fabryxio on 02-05-2011, 12:38:40
beh credo sia più facile dire :
java è questo , fa questo e quest'altro.. che fare un programma da 0


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 12:42:03
beh credo sia più facile dire :
java è questo , fa questo e quest'altro.. che fare un programma da 0
Intendevo proprio questo  :-OK


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 13:08:18
beh credo sia più facile dire :
java è questo , fa questo e quest'altro.. che fare un programma da 0
Intendevo proprio questo  :-OK

in ogni caso devono lavorare loro con java.... ahahha peggio per loro


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 13:15:15
beh credo sia più facile dire :
java è questo , fa questo e quest'altro.. che fare un programma da 0
Intendevo proprio questo  :-OK

in ogni caso devono lavorare loro con java.... ahahha peggio per loro
Ri  .quoto alla grande!  >:)


Title: Re:5° gara
Post by: R3m on 02-05-2011, 13:27:17
Come al solito il mio era il più veloce...e come al solito outof bounds...io gli metto 3000 e mi spunta 6000  |-O

Code:
import java.io.*;

class GraphNode {
public GraphNode( char _ap, int _cd ) {
apix = _ap;
codex = _cd;
}

GraphNode next;
Sportello sportello;
char apix;
int codex;
boolean isVisited;
}

class Sportello {
int sportello,piano;
char scala,corridoio;
}

public class M01_000001
{
static BufferedReader input = null;
static BufferedWriter output = null;

static GraphNode lasciapassareNode;
   /** -.- **/
static GraphNode[][] tableOfContent = new GraphNode[100][3000];
/** -.-" **/
static Sportello[] palazzo = new Sportello[3000];

public static void parseFile(String inputFile,String outputFile) throws Exception
{
try {
input = new BufferedReader(new FileReader(new File(inputFile)));
output = new BufferedWriter(new FileWriter(outputFile),1024*8);

input.skip(26);

int c;
char m = (char)input.read();
int tt = 0;

while ((c = input.read()) != '\n')
tt = tt * 10 + (c - '0');

lasciapassareNode = new GraphNode(m,tt);
tableOfContent[(int)m-65][tt] = lasciapassareNode;

input.skip(1);

while( (c=input.read()) != '\n' )
{
input.skip(20);
int x1 = 0,x2 = 0;
char c1,c2;

c = input.read();
c1 = (char)c;
while ((c = input.read()) != ' ')
x1 = x1 * 10 + (c - '0');

input.skip(23);

c = input.read();
c2 = (char)c;
while ((c = input.read()) != '\n')
x2 = x2 * 10 + (c - '0');

if( tableOfContent[(int)c1-65][x1] == null )
tableOfContent[(int)c1-65][x1] = new GraphNode(c1,x1);

if( tableOfContent[(int)c2-65][x2] == null )
tableOfContent[(int)c2-65][x2] = new GraphNode(c2,x2);

tableOfContent[(int)c1-65][x1].next = tableOfContent[(int)c2-65][x2];
}

GraphNode[] out = new GraphNode[6000];
int i = 0;
while( lasciapassareNode != null ) {
out[i++] = lasciapassareNode;
lasciapassareNode.isVisited = true;
lasciapassareNode = lasciapassareNode.next;
}

while( (c=input.read()) != '\n' )
{
input.skip(16);
c = input.read();
char c1 = (char)c;
int x = 0,num = 0;

while ((c = input.read()) != ' ')
x = x * 10 + (c - '0');

input.skip(32);
while ((c = input.read()) != '\n')
num = num * 10 + (c - '0');

if( tableOfContent[(int)c1-65][x].isVisited == true && palazzo[num] == null )
palazzo[num] = new Sportello();
tableOfContent[(int)c1-65][x].sportello = palazzo[num];
}

while( input.ready() )
{
int x = 0,y = 0;
char z,t;

input.skip(13);
while ((c = input.read()) != ' ')
x = x * 10 + (c - '0');
input.skip(18);
while ((c = input.read()) != ',')
y = y * 10 + (c - '0');
input.skip(7);
z = (char)input.read();
input.skip(12);
t = (char)input.read();
input.skip(1);

if( palazzo[x] != null ) {
palazzo[x].sportello = x;
palazzo[x].piano = y;
palazzo[x].scala = z;
palazzo[x].corridoio = t;
}
}

StringBuilder s = new StringBuilder();
for( int k=i-1; k>=0; k-- ) {
s.append("Prendere il lasciapassare ").append(out[k].apix).append(out[k].codex).append(" allo sportello ").
append(out[k].sportello.sportello).append(", piano ").append(out[k].sportello.piano).append(", scala ").
append(out[k].sportello.scala).append(", corridoio ").append(out[k].sportello.corridoio).append('\n');
}
output.write(s.toString());
}
finally {
if (output != null) output.close();
if (input != null) input.close();
}
}

public static void main(String[] args) throws Exception {
Stopwatch stopwatch = new Stopwatch();
stopwatch.start();
parseFile("input.txt","M01_000001.txt");
stopwatch.stop();
System.out.println(stopwatch);
}
}


EDIT: Ho postato il codice dell'ultima prova, chiedo venia  :yoh


R3m sei sicuro che il tuo fosse quello più veloce? Il valore 126.46ms che hai come risultato non dovrebbe essere il tempo passato prima che l'eccezione venga lanciata??Cioè in parole povere il programma termina al 126.46-esimo millisecondo perchè viene lanciata l'eccezione " ..... " ma questo non vuol dire che il programma è veloce perchè possibilmente con l'input del professore (partendo dal presupposto di avere un programma corretto!) qualche tuo metodo poteva farti perdere tempo e farti allungare drasticamente i tempi d'esecuzione!! .wink

Il programma crasha da un certo punto in poi...in quel punto li ha già fatto il 90% delle cose...gli rimane solo da scrivere il file ed eseguire altre operazioni...al max sarebbe stato 200ms (cosa che mi sembra assurda dato che le operazioni che faccio sono o(1) )...cmq l'ultima volta era sicuramente il più veloce (il primo arrivato l'ha provato sul suo pc...80 ms vs 110)...


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 14:15:30
Code:
N.B. Non è permesso l'utilizzo di strutture dati diverse da quelle studiate a lezione, ne di strutture dati fornite
da Java. Qualsiasi struttura dati non elementare deve essere implementata dallo studente."
Per quanto vi risulta, abbiamo fatto le tabelle hash a lezione?  .bah


Title: Re:5° gara
Post by: R3m on 02-05-2011, 14:20:06
Non si fanno proprio a prog II


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 14:23:58
Appunto, era possibile quindi utilizzarle per la gara?


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 14:25:04
Appunto, era possibile quindi utilizzarle per la gara?

no ovviamente.. in ogni caso .. secondo voi li controlla il professore se davvero coincidono su quello fatto a lezione? non credo


Title: Re:5° gara
Post by: fabryxio on 02-05-2011, 14:26:00
Appunto, era possibile quindi utilizzarle per la gara?

no ovviamente.. in ogni caso .. secondo voi li controlla il professore se davvero coincidono su quello fatto a lezione? non credo
StraQUOTO  .quoto


Title: Re:5° gara
Post by: R3m on 02-05-2011, 14:26:34
Ma nessuno ha utilizzato tabelle hash


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 14:30:54
Ma nessuno ha utilizzato tabelle hash
Nessuno a parte i primi 2..
Appunto, era possibile quindi utilizzarle per la gara?

no ovviamente.. in ogni caso .. secondo voi li controlla il professore se davvero coincidono su quello fatto a lezione? non credo
Beh più che altro per sapere come comportarsi.. .bah


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 14:32:19
Ma nessuno ha utilizzato tabelle hash
I primi 2 si..
Appunto, era possibile quindi utilizzarle per la gara?

no ovviamente.. in ogni caso .. secondo voi li controlla il professore se davvero coincidono su quello fatto a lezione? non credo
Beh più che altro per sapere come comportarsi.. .bah
no ovviamente.. in ogni caso .. secondo voi li controlla il professore se davvero coincidono su quello fatto a lezione? non credo

bhe si ma allora che palle.. li segnalo subito.. che giustizia sia fatta... [cit obama]


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 14:35:22
bhe si ma allora che palle.. li segnalo subito.. che giustizia sia fatta... [cit ubama]
Io l'ho già fatto, non per fare il "cattivo" o la "spia", ma soltanto per sapere se la prossima volta devo seguire il "regolamento" o meno..Se si stabiliscono delle regole, è bene rispettarle e/o farle rispettare.
Quote
boolean LeggeUgualePerTutti() {
return false;
}
:[Emoticon] Rosik Asd:


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 14:36:25
Io l'ho già fatto, non per fare il "cattivo" o la "spia", ma soltanto per sapere se la prossima volta devo seguire il "regolamento" o meno...
Quote
boolean LeggeUgualePerTutti() {
return false;
}
:[Emoticon] Rosik Asd:

hai fatto bene  :yoh  no no non si fanno i furbetti   :nono :nono ahhaha


Title: Re:5° gara
Post by: R3m on 02-05-2011, 14:37:28
No i primi due...almeno se seguono il mio stesso ragionamento non usano hash...credo che usino il carattere come riga e il numero del lasciapassare come colonna in una matrice....almeno io ho fatto cosi...

Se seguono questa linea allora non sono hash...dato che questo tipo di struttura usa una funzione di hash per trasformare informazioni in numeri...


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 14:46:39
No i primi due...almeno se seguono il mio stesso ragionamento non usano hash...credo che usino il carattere come riga e il numero del lasciapassare come colonna in una matrice....almeno io ho fatto cosi...

Se seguono questa linea allora non sono hash...dato che questo tipo di struttura usa una funzione di hash per trasformare informazioni in numeri...

In base al codice del lasciapassare determina la posizione dove inserirlo nell'array, in pratica una funzione di accesso che tra l'altro è anche una corrispondenza biunivoca (quindi accesso diretto in scrittura e lettura) in quanto ha dimensionato l'array al massimo numero dei lasciapassare che ha previsto...Comunque ti sei contraddetto da solo


Title: Re:5° gara
Post by: R3m on 02-05-2011, 14:54:05
No, è diverso, una tabella hash prevede che si usi una funziona di hash che trasforma informazioni in numeri...per farti un esempio io conosco nome/cognome e voglio utilizzare l'hashing per velocizzare la ricerca...allora io faccio diventare "tizio caio" in 442 (per dire) mediante una funzione di hash....quello che ho fatto io (e che probabilmente hanno fatto loro) è utilizzare i lasciapassare del tipo 'A38' utilizzando A come indice della riga e 38 come indice della colonna....ovvero una matrice che contiene i riferimenti all'oggetto in questione....non usano nessuna funzione di hash...


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 15:00:42
No, è diverso, una tabella hash prevede che si usi una funziona di hash che trasforma informazioni in numeri...per farti un esempio io conosco nome/cognome e voglio utilizzare l'hashing per velocizzare la ricerca...allora io faccio diventare "tizio caio" in 442 (per dire) mediante una funzione di hash....quello che ho fatto io (e che probabilmente hanno fatto loro) è utilizzare i lasciapassare del tipo 'A38' utilizzando A come indice della riga e 38 come indice della colonna....ovvero una matrice che contiene i riferimenti all'oggetto in questione....non usano nessuna funzione di hash...
Beh il principio mi pare pressochè identico..


Title: Re:5° gara
Post by: R3m on 02-05-2011, 15:02:25
trasformare A in A e 38 in 38 è differente dal trasformare "tizio caio di catania" in 442....


Title: Re:5° gara
Post by: eLis on 02-05-2011, 15:51:40
scusate non riesco a capire quale sarebbe il regolamento violato dai primi. Le uniche due norme che il prof ha messo sono queste
Quote
Non possono essere utilizzate tabelle precomputate che permettano di risolvere problemi non elementari.
Non è permesso l'utilizzo di strutture dati diverse da quelle studiate a lezione, ne di strutture dati fornite da Java. Qualsiasi struttura dati non elementare deve essere implementata dallo studente.

...e non mi pare che c'entrino nulla con i codici dei primi: nessuna tabella precomputata, tutte strutture + che elementari.
Se mi sbaglio, mi fate capire quale di queste norme sarebbe stata violata e perche'?


Title: Re:5° gara
Post by: eLis on 02-05-2011, 16:15:55
la cosa meravigliosa la sapete qual'è???? che gente che ancora non si sia data nemmeno programmazione 1 arrivi in testa hahahahhahahah  chissa come mai  .whistling  .penso
saper creare diagrammi UML e usare classi ereditarie non mi pare aiuti troppo nello scrivere codice veloce . . . .leggo


Title: Re:5° gara
Post by: fabryxio on 02-05-2011, 16:30:51
scusate non riesco a capire quale sarebbe il regolamento violato dai primi. Le uniche due norme che il prof ha messo sono queste
Quote
Non possono essere utilizzate tabelle precomputate che permettano di risolvere problemi non elementari.
Non è permesso l'utilizzo di strutture dati diverse da quelle studiate a lezione, ne di strutture dati fornite da Java. Qualsiasi struttura dati non elementare deve essere implementata dallo studente.

...e non mi pare che c'entrino nulla con i codici dei primi: nessuna tabella precomputata, tutte strutture + che elementari.
Se mi sbaglio, mi fate capire quale di queste norme sarebbe stata violata e perche'?
Ma tanto non li controlla!! che discussioni INUTILI!!


Title: Re:5° gara
Post by: eLis on 02-05-2011, 16:42:00
difatti non ho iniziato io questa discussione, ma quando leggo che alcuni si sono rivolti al prof per segnalare violazioni del regolamento, la curiosita' mi spinge a chiedere quali siano queste irregolarita', dato che non ne trovo.


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 16:45:58
Lo scopo primario della segnalazione, non era di certo comunicare che mi sono sentito vittima di un'ingiustizia e/o vanificare il lavoro altrui e/o far rispettare le regole, bensì sapere se per le prossime prove era possibile utilizzarle, tutto qua.  :-K


Title: Re:5° gara
Post by: fabryxio on 02-05-2011, 16:54:39
Ma lasciatelo in pace il prof xD


Title: Re:5° gara
Post by: SkyWolf on 02-05-2011, 19:08:17
Complimenti ai primi e agli altri direi di stare tranquilli xD cioè non vi azzannate così che non ne vale la pena.

L'unica cosa che a me comunque "non va giù" (ma che fa parte del gioco) è che si preferisce un codice veloce ad un codice robusto.

Tutti quelli che hanno fatto quel tempo l'hanno fatto istanziando array statici (alcuni usandoli con accesso diretto -ammetto che è una mossa sicuramente geniale-) ma con un numero di casi finito su cui lavorare:
ci sono array dichiarati di 27.000, 50.000, 100.000, 22.358.284 posizioni e se l'input avesse ecceduto tali quantità l'algoritmo sarebbe stato scorretto.
R3m stesso, nel volerlo fare veloce instanziando un array statico, è incappato in un errore del genere.

Io (stupidamente, ai fini della gara) mi sono assicurato di fare un codice che funzionasse PER OGNI INPUT di quel tipo esistente sulla faccia della terra, però ho fatto un tempo risibile (1256.00) di fronte a coloro che hanno usato strutture più elementari.

Non dico che le regole della gara debbano essere cambiate eh xD sono molto tranquillo al riguardo e me ne frega ben poco del risultato che ho ottenuto. Semplicemente non riesco ad abituarmi a questo modo di ragionare "a fortuna".


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 19:12:17
trasformare A in A e 38 in 38 è differente dal trasformare "tizio caio di catania" in 442....
Tanto per curiosità..I dati sono memorizzati in un array in cui l'accesso, sia in lettura che scrittura, avviene tramite un calcolo (tipo funzione hash) che ne permette il rapido ritrovamento. Non siamo in presenza di una implementazione di una tabella hash ?


Title: Re:5° gara
Post by: fabryxio on 02-05-2011, 19:28:56
......

Non dico che le regole della gara debbano essere cambiate eh xD sono molto tranquillo al riguardo e me ne frega ben poco del risultato che ho ottenuto. Semplicemente non riesco ad abituarmi a questo modo di ragionare "a fortuna".

Bella questa te la straQuoto!!  .quoto


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 20:04:50
trasformare A in A e 38 in 38 è differente dal trasformare "tizio caio di catania" in 442....
Tanto per curiosità..I dati sono memorizzati in un array in cui l'accesso, sia in lettura che scrittura, avviene tramite un calcolo (tipo funzione hash) che ne permette il rapido ritrovamento. Non siamo in presenza di una implementazione di una tabella hash ?

non so cosa siano le funzioni hash però sisi è vero hahahahahha  .coolio


Title: Re:5° gara
Post by: FReddy on 02-05-2011, 20:29:39
Quote
Io (stupidamente, ai fini della gara) mi sono assicurato di fare un codice che funzionasse PER OGNI INPUT di quel tipo esistente sulla faccia della terra, però ho fatto un tempo risibile (1256.00) di fronte a coloro che hanno usato strutture più elementari.

Non dico che le regole della gara debbano essere cambiate eh xD sono molto tranquillo al riguardo e me ne frega ben poco del risultato che ho ottenuto. Semplicemente non riesco ad abituarmi a questo modo di ragionare "a fortuna".

Estraniandoci dalla competizione, che ha le sue regole che ogni volta che partecipiamo accettiamo, Skywolf ha ragione.

C'è solo un piccolo problema: come si dovrebbe valutare la robustezza?

Valutare la velocità è facile, veloce e lo si fa in maniera automatica. Per valutare la robustezza invece il prof dovrebbe mettersi a leggere, capire e valutare ogni singolo programma e credo proprio che la cosa sia poco fattibile.


Title: Re:5° gara
Post by: SkyWolf on 02-05-2011, 21:05:21
Quote
Io (stupidamente, ai fini della gara) mi sono assicurato di fare un codice che funzionasse PER OGNI INPUT di quel tipo esistente sulla faccia della terra, però ho fatto un tempo risibile (1256.00) di fronte a coloro che hanno usato strutture più elementari.

Non dico che le regole della gara debbano essere cambiate eh xD sono molto tranquillo al riguardo e me ne frega ben poco del risultato che ho ottenuto. Semplicemente non riesco ad abituarmi a questo modo di ragionare "a fortuna".

Estraniandoci dalla competizione, che ha le sue regole che ogni volta che partecipiamo accettiamo, Skywolf ha ragione.

C'è solo un piccolo problema: come si dovrebbe valutare la robustezza?

Valutare la velocità è facile, veloce e lo si fa in maniera automatica. Per valutare la robustezza invece il prof dovrebbe mettersi a leggere, capire e valutare ogni singolo programma e credo proprio che la cosa sia poco fattibile.

Infatti nel mio lungo discorso ho detto che "non mi aspetto che le regole del gioco cambino" e uno dei motivi è proprio che sarebbe una via impraticabile.


Title: Re:5° gara
Post by: FReddy on 02-05-2011, 21:45:56
Accontentiamoci  :-OK


Title: Re:5° gara
Post by: Chuck_son on 02-05-2011, 21:50:18
ma siiii :-)|


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 22:22:05
trasformare A in A e 38 in 38 è differente dal trasformare "tizio caio di catania" in 442....
Tanto per curiosità..I dati sono memorizzati in un array in cui l'accesso, sia in lettura che scrittura, avviene tramite un calcolo (tipo funzione hash) che ne permette il rapido ritrovamento. Non siamo in presenza di una implementazione di una tabella hash ?
Una tabella hash si può realizzare in diversi modi (una cosa è il tipo di dato astratto un'altra è la sua implementazione) ma il concetto è sempre lo stesso:
"si cerca di accedere agli elementi nella tabella in modo diretto tramite operazioni aritmetiche che trasformano le chiavi in indirizzi della tabella".(wikipedia tabella hash (http://it.wikipedia.org/wiki/Hash_table))  :boh


Title: Re:5° gara
Post by: R3m on 02-05-2011, 22:27:39
Esatto OPERAZIONI ARITMETICHE....

Code:
Matrice[(int)'A'] [x]
è un operazioni aritmetica?

Io ho sfruttato solo una caratteristica dell'output...senza in alcun modo alterarlo...invece che allocare una lista linkata ho utilizzato l'array...se avessimo avuto delle informazioni diverse tipo Tizio Caio di anni 50...non avrei potuto sfruttare il 50 perchè nell'output ci possono essere miriadi di persone di 50 anni...e non si può allocare un array/matrice con un char o una stringa...


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 22:32:59
Esatto OPERAZIONI ARITMETICHE....

Code:
Matrice[(int)'A'] [x]
è un operazioni aritmetica?

Io ho sfruttato solo una caratteristica dell'output...senza in alcun modo alterarlo...invece che allocare una lista linkata ho utilizzato l'array...se avessimo avuto delle informazioni diverse tipo Tizio Caio di anni 50...non avrei potuto sfruttare il 50 perchè nell'output ci possono essere miriadi di persone di 50 anni...e non si può allocare un array/matrice con un char o una stringa...
Si certo che è un'operazione aritmetica. Ma le tabella hash appunto si basano su quello!  :-K


Title: Re:5° gara
Post by: R3m on 02-05-2011, 22:34:10
E che operazione aritmetica sarebbe? Somma? Sottrazione? Moltiplicazione? Divisione? Che cosa?


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 22:43:55
E che operazione aritmetica sarebbe? Somma? Sottrazione? Moltiplicazione? Divisione? Che cosa?
Vorrei spiegarti perché parlo di tabelle hash.

Il primo classificato ha dichiarato un array di 27000 elementi (in realtà ne bastavano 26000), 1000 per ogni lettera dell'alfabeto.
In questo modo dal passaporto es D22 applicando un certo calcolo (che si chiama funzione hash) si può ricavare direttamente la posizione nella tabella: dalla lettera B ricavo 3 (0 per A, 1 per B, 2 per C, .. 25 per Z). Quindi la posizione nella tabella è
3*1000+22 = 3022. Quindi l'accesso è diretto (array[3022]).
Il secondo ha utilizzato un array a due dimensioni 26x1000. In questo caso 3 (della lettera D) è l'indice per la prima dimensione e 22 per la seconda (array[3][22]).
Ci sono diversi modi per strutturare una tabella hash, che sia implementata o meno, la logica è comunque quella.

Poi voglio sottolineare:
Lo scopo primario della segnalazione, non era di certo comunicare che mi sono sentito vittima di un'ingiustizia e/o vanificare il lavoro altrui e/o far rispettare le regole, bensì sapere se per le prossime prove era possibile utilizzarle, tutto qua.  :-K
Dato che anche io per prima cosa ho pensato di svolgere l'esercizio in questo modo (effettivamente è la cosa più logica).
Così per le prossime volte saprò se quest'ultime possono essere utilizzate o meno. :[Emoticon] Baston Asd:


Title: Re:5° gara
Post by: R3m on 02-05-2011, 22:52:47
Se era la cosa più logica perchè quasi nessuno l'ha fatto?  :nono

Comunque se le tabelle hash sono considerate strutture dati, come dovrebbero essere...allora non possono essere utilizzare, per due motivi, non le trattiamo a prog II, e anche se fosse, sarebbero dopo i grafi...ancora siamo alle liste linkate semplici quindi vedi un pò tu  :yoh

Se il prof ritiene che quel ragionamento applicato sia una tabella hash farebbe bene a invalidare le loro prove...

Però, se possibile, vorrei una maggiore considerazione verso algoritmi validi...non parlo solo per me, ma anche di altri che hanno avuto outOfBounds con un programma che comunque funziona. Secondo me, sarebbe buono se, una volta visto l'errore, lo studente (e solo in questi casi) lo segnalasse al prof con la relativa correzione...per fare un esempio....
"Prof, invece che A[100] scriva A[1000] e vedrà che funziona".

Ovviamente il programma verrà valutato con un certo malus di tempo (che ne sò...100ms in più del tempo).

Francamente, a me dà fastidio essere valutato, per un errore, come se avessi fatto un programma sbagliato oppure un programma lento...è come se invece che prendere 29 per un errore prendessi meno di 18... :-ciao


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 23:05:43
Se era la cosa più logica perchè quasi nessuno l'ha fatto?  :nono
Parlando personalmente perchè credo fosse vietata.
Quote
Però, se possibile, vorrei una maggiore considerazione verso algoritmi validi...non parlo solo per me, ma anche di altri che hanno avuto outOfBounds con un programma che comunque funziona. Secondo me, sarebbe buono se, una volta visto l'errore, lo studente (e solo in questi casi) lo segnalasse al prof con la relativa correzione...per fare un esempio....
"Prof, invece che A[100] scriva A[1000] e vedrà che funziona".

Ovviamente il programma verrà valutato con un certo malus di tempo (che ne sò...100ms in più del tempo).

Francamente, a me dà fastidio essere valutato, per un errore, come se avessi fatto un programma sbagliato oppure un programma lento...è come se invece che prendere 29 per un errore prendessi meno di 18... :-ciao
.quoto l'ho fatto anche io, ma secondo il regolamento e come ha detto qualcun altro prima, essendo il file.java da consegnare unico, non permette ulteriori modifiche dopo la consegna. D'altronde si hanno 3 giorni per testare il programma. L'unico cavillo è l'output usato per il test diverso che può causare "problemi" di quel tipo  .ciaociao


Title: Re:5° gara
Post by: R3m on 02-05-2011, 23:08:03
Infatti io intendevo...dopo aver valutato l'errore...sarebbe buono segnalare una correzione...che se ritenuta valida (ovviamente non mezzo programma cambiato) potrebbe portare a ottenere un tempo+malus invece che ottenere un tempo allucinante...


Title: Re:5° gara
Post by: zElOtO on 02-05-2011, 23:09:20
Infatti io intendevo...dopo aver valutato l'errore...sarebbe buono segnalare una correzione...che se ritenuta valida (ovviamente non mezzo programma cambiato) potrebbe portare a ottenere un tempo+malus invece che ottenere un tempo allucinante...
A chi dispiacerebbe una cosa simile?  .sisi


Title: Re:5° gara
Post by: callo on 03-05-2011, 00:38:42
Ragazzi non per fare polemica però non ha molto senso ciò che dite(secondo me!!) o meglio il senso ci potrebbe anche essere ma tutte queste discussioni "lasciano il tempo che trovano".....le condizioni per continuare la competizione le sappiamo fin dal primo giorno  di lezione....chi ha creato la competizione ha stabilito così quindi: o si seguono  oppure nessuno vi sta obbligando a continuare! questo tipo di  gare di programmazione, che rilascia il professore, non solo ci permettono di esercitarci  ma ci permettono di valutare un aspetto che fino ad ora non era mai stato preso in considerazione....il tempo di esecuzione di un programma......a parità di validità se un'azienda emette un bando di concorso per la creazione di un programma e ne dovrà valutare 1000....secondo voi il fattore "tempo di esecuzione" non inciderà?sono tutti programmi validi quelli che abbiamo creato però se devo scegliere tra uno che, appena lo mando in esecuzione mi da una risposta dopo 2minuti e un altro che invece mi risponde dopo 1 minuto e 30......preferisco di gran lunga il secondo  impiegando magari quei 30 secondi che mi rimangono per fare altro!Se poi il programma non funziona non ha senso lamentarsi chiedendo di ottenere un "tempo+malus".....il programma non funziona perchè possibilmente non avete pensato a gestire 1unico caso che per pura sfortuna vi è capitato(ergo la progettazione non è stata completa/corretta!)!Così invece di fare la segnalazione al prof ne prendete atto voi stessi in modo da evitare lo stesso errore le prossime volte!!La classifica cambia ogni volta(io dopo le prime 2 prove ero ancora 54esimo per 2errori veramente banali...ho compreso dove e perché sbagliavo e in 3 prove sono passato dalla 54esima posizione alla 12esima!!questo per favi capire come, prova dopo prova, la classifica può cambiare totalmente!!) quindi pensiamo a programmare........più sostanza e meno polemiche che, ripeto, LASCIANO IL TEMPO CHE TROVANO!! .ciaociao


Title: Re:5° gara
Post by: Chuck_son on 03-05-2011, 09:57:20
ma alla fine il prof che ha detto a riguardo?


Title: Re:5° gara
Post by: R3m on 03-05-2011, 11:20:32
Ragazzi non per fare polemica però non ha molto senso ciò che dite(secondo me!!) o meglio il senso ci potrebbe anche essere ma tutte queste discussioni "lasciano il tempo che trovano".....le condizioni per continuare la competizione le sappiamo fin dal primo giorno  di lezione....chi ha creato la competizione ha stabilito così quindi: o si seguono  oppure nessuno vi sta obbligando a continuare! questo tipo di  gare di programmazione, che rilascia il professore, non solo ci permettono di esercitarci  ma ci permettono di valutare un aspetto che fino ad ora non era mai stato preso in considerazione....il tempo di esecuzione di un programma......a parità di validità se un'azienda emette un bando di concorso per la creazione di un programma e ne dovrà valutare 1000....secondo voi il fattore "tempo di esecuzione" non inciderà?sono tutti programmi validi quelli che abbiamo creato però se devo scegliere tra uno che, appena lo mando in esecuzione mi da una risposta dopo 2minuti e un altro che invece mi risponde dopo 1 minuto e 30......preferisco di gran lunga il secondo  impiegando magari quei 30 secondi che mi rimangono per fare altro!Se poi il programma non funziona non ha senso lamentarsi chiedendo di ottenere un "tempo+malus".....il programma non funziona perchè possibilmente non avete pensato a gestire 1unico caso che per pura sfortuna vi è capitato(ergo la progettazione non è stata completa/corretta!)!Così invece di fare la segnalazione al prof ne prendete atto voi stessi in modo da evitare lo stesso errore le prossime volte!!La classifica cambia ogni volta(io dopo le prime 2 prove ero ancora 54esimo per 2errori veramente banali...ho compreso dove e perché sbagliavo e in 3 prove sono passato dalla 54esima posizione alla 12esima!!questo per favi capire come, prova dopo prova, la classifica può cambiare totalmente!!) quindi pensiamo a programmare........più sostanza e meno polemiche che, ripeto, LASCIANO IL TEMPO CHE TROVANO!! .ciaociao

Beh, ma se un programma non funziona per un array troppo piccolo non è mica un errore di progettazione/programmazione...anche usando gli oggetti (liste,alberi o quello che vuoi) se c'è un input enorme si và in HeapOverflow....non esiste un metodo che funzioni in tutti i casi possibili.
Io francamente questi programmi li faccio in poco tempo....addirittura alcuni in mezz'ora, e considero tutti i casi possibili, sò che utilizzando gli array posso incorrere in questi errori...però ecco, è una questione di fortuna in questi casi....cioè non puoi dirmi che il mio programma è sbagliato perchè c'è un array troppo piccolo....o che non considero tutti i casi...come faccio a considerare un caso se non sò quanto sarà grande l'input?
Per me la gara può continuare con queste regole...non mi cambia niente...vuol dire che la prossima volta metterò un numero più grande...però considerare programmi che usano 1000 come array invece che 100 corretti e il mio no non mi sembra equo...


Title: Re:5° gara
Post by: callo on 03-05-2011, 12:12:24
Se il prof ti dice:" creami un programma che faccia questo,questo e quest'altro poi sarò io a testarlo e a vedere se va bene".... tu lo progetti,consideri tutti i casi(come dici tu!) e poi alla prima prova che il prof fa al tuo programma esso fallisce inesorabilmente......puoi non aver messo un ";" ,puoi non aver dichiarato la lunghezza corretta....il dato di fatto è uno "il programma non sta funzionando" ...in più c'è da dire che sai benissimo che hai una sola possibilità quindi preso atto del tuo errore in questa gara il mio consiglio è:" la prossima volta invece di dedicare 30minuti per la stesura di tutto il programma...impiegane 45 ma valuta TUTTO e trova un modo per risolvere in maniera + sicura ogni tuo dubbio!!".....quello che voglio dire è che non funziona sempre il ragionamento "metto un array di dimensione 10 così sono sicuro che ci non vado mai in errore"!! perchè se per puro caso il prof da come dimensioni 11..per una posizione il tuo programma non funziona e non hai la seconda possibilità di dire: "vabbè invece di farlo di 10 creiamolo di 12 così funziona perfettamente" non penso sia un modo corretto di risolvere un problema....non lo stai risolvendo...lo stai solo posticipando!! io per esempio proprio per evitare tutti sti problemi ho fatto una prima lettura del file di testo fino alla prima riga vuota...in questo modo sapevo con certezza le dimensioni dell'array e la posizione delle varie righe vuote... sono consapevole che ci possono essere  soluzioni migliori ma in quel momento quella è stata l'unica che mi dava piena certezza che non sarei mai andato in errore!!


Title: Re:5° gara
Post by: R3m on 03-05-2011, 14:04:56
Esattamente, è vero quello che dici, e non ti dò torto...perchè dovrebbe essere valutato il programma anche in base a tutte le possibilità...però non ci sono limitazioni...

Tu hai preso un tempo alto (e per fortuna che c'è la regola del 4 volte il tempo del primo, altrimenti prendevi 1k e passa) però il tuo programma funziona qualunque sia l'input, mentre altre persone "azzeccando" il valore da dare all'array hanno preso un tempo molto basso.
E' vero che se il valore fosse stato n+1 sarebbe crashato tutto...però è anche vero che ci azzecca (e sono stato sfortunato x 2 volte  :yoh) prende un tempo basso...e arriva primo...e questo non mi sembra corretto..per questo ho proposto questa soluzione...per evitare che si faccia passare un programma corretto come errato solo per una questione di grandezza di un array....

Diciamo che ho proposto questa soluzione perchè in teoria si dovrebbe valutare il programma leggendolo, e il prof (giustamente, non lo farei neanche io) non vuole farlo...


Title: Re:5° gara
Post by: callo on 03-05-2011, 14:26:36
aspetta però.....il tempo alto che ha il mio programma non è dettato però dal fatto che faccio 2 letture del file di input ma dal fatto che ho scritto un codice per la ricerca dei vari lasciapassare che è qualcosa di incredibilmente pesante!!!Secondo me non è malvagia la soluzione che ho dato per sapere la dimensione da dare all'array finale, anche perchè con una mini lettura risolvo 3 problemi!!Secondo me nel mio codice,rileggendolo, è da "censurare" il metodo per la ricerca dei vari lasciapassare(pesantissimo) e il fatto di aver usato stringhe quando invece avrei potuto usare numeri!!Per il resto concentriamoci sulla prossima gara....anche perché più andiamo avanti più gli esercizi diventano interessanti!! .rido  .wink