Mer 21 Agosto, 15:22:21 - 2019

Autore Topic: Secondo Assignment: il correttore automatico dei risultati :D  (Letto 10812 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Agilulfo

  • Visitatore
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #30 il: Sab 07 Novembre, 20:39:21 - 2009 »
boh anche io ne sbagliavo un (bel) po', ma poi ho risolto e vengono tutti giusti
quali non ti escono?

Offline Tom89

  • Professore Ordinario
  • **
  • Post: 703
  • FeedBack: +145/-79
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #31 il: Dom 08 Novembre, 14:57:37 - 2009 »
Dunque, del mio è sbagliato:

L(0) U L(1) T ababab
che si vede anche intuitivamente dato che appartiene a L(1)

E del tuo:
L(0) U L(1) T aab
L(0)* F baabbaa
L(1) U L(2)
      T ab
      T cdd

Mi sembrano tutti collegati all'unione bene o male...


Offline Tom89

  • Professore Ordinario
  • **
  • Post: 703
  • FeedBack: +145/-79
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #32 il: Dom 08 Novembre, 15:23:48 - 2009 »
Beh no di errorucci ne ho fatti a volontà  :asd:
Comunque ho aggiornato il tester: ora usando la tag "nascondi_corretti" nel testcase è possibile mostrare solo i test falliti...

Agilulfo

  • Visitatore
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #33 il: Dom 08 Novembre, 15:29:41 - 2009 »
forse hai qualche aggiungiStatoFinale sfalsato nell'unione

EDIT: eh si, quando il codice è un po' riciclato a volte mi dimentico di risistemare alcune righe con i parametri giusti
« Ultima modifica: Dom 08 Novembre, 15:32:05 - 2009 da Agilulfo »

Offline Tom89

  • Professore Ordinario
  • **
  • Post: 703
  • FeedBack: +145/-79
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #34 il: Dom 08 Novembre, 15:39:21 - 2009 »
Uhm sembra che ho risolto  ;D
Il problema era che c'era una semi-condivisione di memoria; il grafo degli stati era clonato bene, ma q0 si riferiva sempre agli stati vecchi  ;D

Bene, grazie per l'aiuto!

Offline eafkuor

  • Direttore di Dipartimento
  • ***
  • Post: 1138
  • FeedBack: +173/-54
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #35 il: Dom 08 Novembre, 17:39:37 - 2009 »
Risolto tutto, un bel grazie a Tom e Agilulfo :sisi:

Offline alex.sera

  • Studente di Dottorato
  • ***
  • Post: 120
  • FeedBack: +6/-2
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #36 il: Dom 08 Novembre, 19:42:56 - 2009 »
ho visto Dictionary<K,V> ma e solo la vecchia implementazione di map ed è anche consigliato di non usarla

quindi credo che non ci siano gia implementati

una domanda che vi vorrei fare ma voi il chiave valore a valore cosa avete messo un array di int? o una bella lista perchè in qualsiasi dei due casi non mi sembra che c'è un modo per aggiornare il valore, cioè dovresti proma riprendere l'array o la lista aggiornarla e poi risovrascriverla alla precedente

o sbaglio

c'è un metodo migliore che non conosco?
« Ultima modifica: Dom 08 Novembre, 19:44:52 - 2009 da alex.sera »

Offline Greyland

  • Studente
  • *
  • Post: 34
  • FeedBack: +6/-1
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #37 il: Dom 08 Novembre, 22:32:39 - 2009 »
Grazie mille a Tom89 e Agilulfo!! :)

Qualche altro test:

Automa 0:  termina con 'bb' oppure 'ba' oppure 'baa'
Automa 1:  termina con 'b' e non ha mai più di una 'b' una di seguito all'altra
Automa 2:  inizia con 'b' e termina con 'a' e non ha mai più di una 'b' una di seguito all'altra; vuota
Automa 3:  non lo so ;D (l'ho preso dal libro, so solo che non comincia né finisce con 'a' :asd:)

Codice: [Seleziona]
testcase Base
automa ab
finali 3
transizioni
0 a 0
0 b 0
0 b 1

1 a 2
1 a 3
1 b 3

2 a 3
end

test T aaaaba
test F [stringa_vuota]
test T bb
test T abbbaaaabaa
test F bbaaaabab

automa ab
finali 1
transizioni
0 a 0
0 b 1

1 a 0
end

test F [stringa_vuota]
test F aaaaba
test T baaaabaaab
test F baaaabbab
test T ababaaababaaaaab

automa ab
finali 0
transizioni
0 b 1

1 a 0
1 a 1
end

test T [stringa_vuota]
test F b
test F a
test T ba
test T baaaaabaababa
test F baaaaabbaabaaaa

automa abc
finali 2
transizioni
0 b 1
0 c 1

1 a 0
1 b 2

2 a 1
2 c 2
end

test T cbc
test F [stringa_vuota]
test F aaaabacbbbc
test F babbbaccca
test T bacbccabc

automa_unione 1 2

test F baababaabbaaaa
test T [stringa_vuota]
test T aaaabab

automa_concatenazione 1 2

test T aaabaabbaa
test F [stringa_vuota]
test F baaaabb
test T aaaabab

automa_iterazione 0

test T [stringa_vuota]
test F bbbbbbbbbbaaabaab
test T aaaaba

automa_concatenazione 2 1

test F babaaababaaaba
test F [stringa_vuota]
test T aaababaabaab

automa_iterazione 3

test T [stringa_vuota]
test F cbac
test T cbabbbabc
end

Offline Tom89

  • Professore Ordinario
  • **
  • Post: 703
  • FeedBack: +145/-79
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #38 il: Lun 09 Novembre, 01:11:41 - 2009 »
Chebbello vanno tutti e 3 senza errori  ;D
Domani invio, dis permettendo  :sisi:

PS: useful tip: si possono mettere testcases con nome diverso in uno stesso files  :sisi:

Offline Jok_T-RooNz

  • Ricercatore
  • ****
  • Post: 288
  • FeedBack: +5/-28
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #39 il: Lun 09 Novembre, 11:06:25 - 2009 »
ho notato che usi Hashtable (come implementazione di un Dictionary) e, dopo aver fatto alcune prove, mi sembra che il suo put(k,v) sia come quello di Map: ovvero sostituisce il vecchio valore se la chiave è già presente

giusto per avvertirti se ti verrà qualche errore  :)
ho visto Dictionary<K,V> ma e solo la vecchia implementazione di map ed è anche consigliato di non usarla

quindi credo che non ci siano gia implementati

una domanda che vi vorrei fare ma voi il chiave valore a valore cosa avete messo un array di int? o una bella lista perchè in qualsiasi dei due casi non mi sembra che c'è un modo per aggiornare il valore, cioè dovresti proma riprendere l'array o la lista aggiornarla e poi risovrascriverla alla precedente

o sbaglio

c'è un metodo migliore che non conosco?

Si..avete ragione, sembrava troppo bello per essere vero..avere la struttura dati già fatta.
« Ultima modifica: Lun 09 Novembre, 18:01:44 - 2009 da Jok_T-RooNz »

Offline Jok_T-RooNz

  • Ricercatore
  • ****
  • Post: 288
  • FeedBack: +5/-28
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #40 il: Lun 09 Novembre, 18:10:11 - 2009 »
mmm..ora mi inizia a fungere..ma arriva fino alla stringa vuota, dopodichè inizia ad esaminare b e mi segnala una null point exception:
Questo è ciò che esce dal mio mani..ci sono anche i risultati di alcune stampe di prova
Codice: [Seleziona]
test case Base]
Inizializzazione automa 0
Creazione automa: 4.284696 ms
Sto controllando il carattere a della stringa [C@1f9dc36
che mi porta nello stato 0
che mi porta nello stato 0
Sto controllando il carattere a della stringa [C@1f9dc36
che mi porta nello stato 0
che mi porta nello stato 0
Sto controllando il carattere a della stringa [C@1f9dc36
che mi porta nello stato 0
che mi porta nello stato 0
Sto controllando il carattere a della stringa [C@1f9dc36
che mi porta nello stato 0
che mi porta nello stato 0
Sto controllando il carattere a della stringa [C@1f9dc36
che mi porta nello stato 0
che mi porta nello stato 0
Sto controllando il carattere a della stringa [C@1f9dc36
che mi porta nello stato 0
che mi porta nello stato 0
Sto controllando il carattere a della stringa [C@1f9dc36
che mi porta nello stato 0
che mi porta nello stato 0
Sto controllando il carattere a della stringa [C@1f9dc36
che mi porta nello stato 0
che mi porta nello stato 0
Sto controllando il carattere a della stringa [C@1f9dc36
che mi porta nello stato 0
che mi porta nello stato 0
[ok] 'aaaaaaaaa' e' true. (5.244854 ms)
[ok] '' e' true. (0.1142 ms)
Sto controllando il carattere b della stringa [C@e86da0
che mi porta nello stato 1
Exception in thread "main" java.lang.NullPointerException
at ASFNDSolver.accettaSequenza(ASFNDSolver.java:31)
at TestSuite.test(TestSuite.java:538)
at TestSuite.testcase(TestSuite.java:216)
at TestSuite.runTests(TestSuite.java:146)
at Main.main(Main.java:6)
e questo è quello che fin ora ho quagliato...non molto direi...
Codice: [Seleziona]
public class ASFNDSolver extends ASFND {

private Map<Character,LinkedList<Integer>>[]transizioni;
private boolean[]statiFinali;
private int statoCorrente;

     public ASFNDSolver(int numeroStati, char[] alfabeto) {
super(numeroStati, alfabeto);
transizioni=new Map[numeroStati];
for(int i=0; i<numeroStati; i++){
this.transizioni[i]=new HashMap<Character,LinkedList<Integer>>();
   // this.transizioni[i].values()=new LinkedList<Integer>();  // prova ad inizializzare l'oggetto
}
this.statiFinali=new boolean[numeroStati];
statoCorrente=0;
// TODO Auto-generated constructor stub*/
}

@Override
public boolean accettaSequenza(char[] sequenzaInput) {
for(int i=0; i<sequenzaInput.length;i++){
char c=sequenzaInput[i];
System.out.println("Sto controllando il carattere "+c +" della stringa "+sequenzaInput.toString());//stampa di controllo
for(int j=0; j<transizioni[statoCorrente].get(c).size();j++){
    statoCorrente=this.transizioni[statoCorrente].get(c).get(j);// riconterolla
    System.out.println("che mi porta nello stato "+statoCorrente);//stampa di controllo
}
}
if(statiFinali[statoCorrente]==true)
return true;
else
return false;
}

@Override
public void aggiungiStatoFinale(int stato) throws RuntimeException {
if(stato>=0 && stato< this.numeroStati)
    statiFinali[stato]=true;
else
throw new RuntimeException("Lo stato "+ stato +" non esiste");

}

@Override
public void aggiungiTransizioneND(int statoSorgente, char simbolo,int statoDestinatazione) {
if(statoSorgente>=0 && statoSorgente<this.numeroStati && statoDestinatazione<=this.numeroStati){
if(transizioni[statoSorgente].get(simbolo)==null){
LinkedList<Integer>aux=new LinkedList<Integer>();
aux.add(statoDestinatazione);
transizioni[statoSorgente].put(simbolo, aux);
}
transizioni[statoCorrente].get(simbolo).add(statoDestinatazione);

}
else
throw new RuntimeException("Lo stato sorgente "+ statoSorgente+" non esiste");

}

}

Offline eafkuor

  • Direttore di Dipartimento
  • ***
  • Post: 1138
  • FeedBack: +173/-54
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #41 il: Lun 09 Novembre, 20:50:11 - 2009 »
Per un centinaio di euro provo a darci un'occhiata io :sisi:

Offline Seril

  • Direttore di Dipartimento
  • ***
  • Post: 2729
  • FeedBack: +263/-467
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #42 il: Lun 09 Novembre, 20:52:30 - 2009 »
looooooool ma non possiamo leggere e corregere!!! XD

Offline Jok_T-RooNz

  • Ricercatore
  • ****
  • Post: 288
  • FeedBack: +5/-28
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #43 il: Lun 09 Novembre, 21:18:00 - 2009 »
Per un centinaio di euro provo a darci un'occhiata io :sisi:
Seriamente lo faresti per così poco?

Offline eafkuor

  • Direttore di Dipartimento
  • ***
  • Post: 1138
  • FeedBack: +173/-54
    • Mostra profilo
Re: Secondo Assignment: il correttore automatico dei risultati :D
« Risposta #44 il: Lun 09 Novembre, 23:03:59 - 2009 »
Seriamente lo faresti per così poco?
non capisco se sei serio o mi prendi in giro ???