 | |
Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum |
[Algoritmi] Progetto "CONTROLLO REMOTO" Clicca QUI per vedere il messaggio nel forum |
Ariok |
Ho un dubbio enorme.....
Io ho sostenuto il compito di algoritmi con trubian .... e mi era stato detto che l'ultiam possibilita' per il progetto era nel primo appello di Gennaio.... qualcuno puo' confermare o smentire questa notizia??? grazie mille ciao!!!:shock: :? |
dirkpitt |
Quando ho fatto lo scritto, Trubian ha detto che questo valeva un anno.... |
Skilotto83 |
ho mandato una mail a trubi...
mi ha detto ke per gennaio lo scritto rimane valido....
Quindi posso fare il progetto...
E addirittura ha scritto(parole sue).."lo scritto rimarra' valido ankora per un paio di appelli dopo gennaio"...
Pero' nn mi fiderei troppo...quindi ho mandato una mail ad aguzzoli ke nn mi ha ankora risposto... |
ghily |
Originally posted by Skilotto83
ho mandato una mail a trubi...
mi ha detto ke per gennaio lo scritto rimane valido....
Quindi posso fare il progetto...
E addirittura ha scritto(parole sue).."lo scritto rimarra' valido ankora per un paio di appelli dopo gennaio"...
Pero' nn mi fiderei troppo...quindi ho mandato una mail ad aguzzoli ke nn mi ha ankora risposto...
Bella andre.Gran notizia.Mi raccomando posta subito quello che ti dice aguzzoli.L'incubo Goldwrun svolazza su di noi.....
Chao
Roby |
Dante |
Wow.. sarebbe bello se lo scritto durasse ancora 2 appelli.. speriamooooooooooo anche io sono all'ultima possibilità.... |
Dante |
e poi... potremmo aprire qui la discussione del prox progetto... quello che esce martedì... |
Ariok |
Originally posted by Dante
e poi... potremmo aprire qui la discussione del prox progetto... quello che esce martedì...
Sono piu' che daccordo.... pensavo di essere rimasto l'unico con l'ultima possibilita'!!!!
Postate ogni novita'!!!!
ciao ragazzi!!!:razz: |
dirkpitt |
Originally posted by Ariok
pensavo di essere rimasto l'unico con l'ultima possibilita'!!!!
Assolutamente no.... :sad: :D |
Skilotto83 |
Aguzzoli mi ha risposto che a lui basta ricevere un progetto suficente...
E che devo parlare on trubian per sapere quanto rimane valido...
Quindi data la mail di trubian precedente sikuramente vale per gennaio e teorikamente anke successivamente per uno/due appelli....
Quello ke mi kiedo è....
Ma Aguzzoli ha un elenko di quelli che hanno lo scritto sufficente da 6 anni???
Sapra' ke skadono a gennaio...no??
PS.
Per i moderatori.....
Posso pubblikare la mail che mi ha mandato trubian??
o c'è qualke problema?? |
SIMBIOS |
Originally posted by Skilotto83
Aguzzoli mi ha risposto che a lui basta ricevere un progetto suficente...
E che devo parlare on trubian per sapere quanto rimane valido...
Quindi data la mail di trubian precedente sikuramente vale per gennaio e teorikamente anke successivamente per uno/due appelli....
Quello ke mi kiedo è....
Ma Aguzzoli ha un elenko di quelli che hanno lo scritto sufficente da 6 anni???
Sapra' ke skadono a gennaio...no??
PS.
Per i moderatori.....
Posso pubblikare la mail che mi ha mandato trubian??
o c'è qualke problema??
Pubblica pubblica.....non cè nessun problema:-D |
Skilotto83 |
mmm...
sekondo me c'è qualke menata..tipo ke devo kiedere il suo permesso... |
SIMBIOS |
Se ti ha dato informazioni di carattere generale penso tu possa pubblicarlo tranquillamente.Se invece cè qualche info personale evita...l'importante è che non pubblichi il progetto svolto :asd: |
Skilotto83 |
mi ha mandato le tue foto ke ti inkiappetti un kanguro... |
SIMBIOS |
Originally posted by Skilotto83
mi ha mandato le tue foto ke ti inkiappetti un kanguro... non è un canguro...è Angelo...il fiero bergamasco |
lino |
Domani esce il progetto, in bocca al lupo a tutti quelli che devono farlo. |
Ariok |
UP----
Nessuna novita' sulle intenzioni di Trubian?? |
Skilotto83 |
non lo so...
io lo do sto mese e mi sbatto di brutto per farlo...
Poi se è vero quello ke dice meglio...vedremo se nn dovessi riuscire a farlo... |
lino |
Lo scarico adesso.... la tua prima impressione com'è? |
mitnik |
non sembra difficile trovare la struttura dati da utilizzare. difficile invece sarà gestrire le stringhe in input e quelle memorizzate insieme agli automi. |
p2p |
Originally posted by mitnik
non sembra difficile trovare la struttura dati da utilizzare. difficile invece sarà gestrire le stringhe in input e quelle memorizzate insieme agli automi.
anche a me non sembra difficilissimo(ovviamente si sapra' lavorandoci :) ) ma al punto 2 pagina 3 si suppone che l' input sia sempre corretto per cui almeno per questo non bisogna implementare controlli |
mitnik |
prima lettura data, quindi non sono sicuro di aver capito tutto, ma nell'esempio illustrato, il P(101)=12,3 si dovrebbe muovere con il segnale dato in input 1 W10A5 quindi andare verso W di 2 poi trova ostacolo e va verso E di 4 poi trova ostacolo (ha fatto 6 passi in tutto) quindi deve ritornare verso W di altri 4 passi e fermarsi alla cella 10,3. A questo punto l'input da A5 quindi l'automa dovrà spostarsi di 5 celle verso E; in realtà si sposta di 4 poi trova l'ostacolo e torna verso W di una per trovarsi alla fine di tutto in 13,3. Il testo dice invece che si trova in 12,3. Che dite è giusto il testo? |
rossa |
Sì anche a me sembrava che ci fosse un errore e che quindi la posizione finale di 101 dovesse essere(13,3) |
alessiolennon |
ciao raga,anch'io devo fare assolutamente questo progetto.
mi unisco al vostro gruppo di menti sopraffine. :-D |
lino |
E' giusta la posizione, perche quando si muove di 4 verso l'ostacolo e lo incontra, il cambio di direzione conta un altro passo. |
Jacoposki |
prima impressione: panico. Non si può usare una matrice.... quindi? liste concatenate che formano una matrice che si ridimensiona man mano che serve? |
Teju |
INPUT DATI:
ma secondo voi i dati di input sono letti da un file con gia' tutte le istruzioni o l'utente le scrive di volta in volta fino e non vengono eseguite fino a che non scrive "F" di fine??
...cmq ho visto di peggio, non mi pare difficile! :) |
Dav83 |
il gruppo diventa sempre più ampio...qualche mente è già riuscita a fare qualcosa tipo stabilire qual è la struttura dati del piano? |
andrea |
Lo standard input è la tastiera, quindi non credo ci siano files in input.
Io volevo invece chiedere se secondo voi il numero di automi è limitato oppure deve essere considerato senza vincoli. Che ne dite? |
yoruno |
Intervento del moderatore: Trattandosi dello stesso progetto per tutti i prof di algoritmi unisco i thread :) |
rossa |
Mi pare che vincoli non ce ne siano, anzi mi pare che dice proprio di non porre limitazioni al piano quindi direi anche al numero di automi e ostocali.
L' input mi sembra che dica chiaramente che deve essere, almeno per la presentazione finale del progetto, dal file di input (stdin), costruito come nella tabella1 e che quindi l' output dovrà essere sul file (stdout) |
p2p |
Originally posted by rossa
L' input mi sembra che dica chiaramente che deve essere, almeno per la presentazione finale del progetto, dal file di input (stdin), costruito come nella tabella1 e che quindi l' output dovrà essere sul file (stdout)
scusami, ma con sdtin si intene la tastiera e con stdout si intende lo schermo... quindi nessun file... |
mitnik |
l'input deve essere dato e quindi valutato di volta in volta, comunque per testare il progetto puoi mettere tutti i comandi che vuoi impartire in un file e passarli in input al tuo progetto.
Per il piano non mi sembra necessaria una struttura dati essendo esso un insieme di punti anche infiniti. La struttura dati serve invece per memorizzare gli automi e gli ostacoli. Una lista è sicuramente al struttura più semplice da implementare bisogna vedere poi come si comporta man mano che si sviluppa il progetto. Io penso di utilizzare tale struttura, non ho voglia di sbattere la testa su cose troppo complicate. Sperem |
andrea |
Ma le stringhe in input in qualche modo devono essere limitate, o sbaglio?
Per quanto riguarda il piano io non ci ho ragionato ancora bene, ma come si può verificare se una cella è occupata da un ostacolo oppure no? |
Teju |
Domandona da 10000000 di Euro:
il nome dell'automa può essere 00010, giusto?
Che tipo di dato è dunque il nome dell'automa?!? ;)
Una lista di boolean o esiste qualcosa di meglio?!? |
mitnik |
Si le stringhe in input sono limitate
per vedere se una cella è contenuta in un ostacolo controlli che le sue coordinate non siano contenute in quelle di un ostacolo. per esempio se X0<Xc && Y0<Yc && X1>Xc && Y1>Yc (dove Xc e Yc sono le coordinate di un ostacolo e Xc, Yc di una cella) allora la cella è contenuta nell'ostacolo in esame. |
Teju |
Originally posted by mitnik
Si le stringhe in input sono limitate
Ma scusa... tu intendi che sono limitate cioè ad un certo punto metto la "f" di fine o dici che non possono essere più di tot righe di comando???
Questa seconda ipotesi non mi sembrerebbe neanche da considerare, o no?? :-D |
Teju |
Originally posted by Teju
Domandona da 10000000 di Euro:
il nome dell'automa può essere 00010, giusto?
Che tipo di dato è dunque il nome dell'automa?!? ;)
Una lista di boolean o esiste qualcosa di meglio?!?
:? :? :? |
Dav83 |
il nome dell'automa può essere 00010.
io ho usato un vettore di caratteri di lunghezza 30. Il testo dice che non c'è limite per gli automi e gli ostacoli e di conseguenza non c'è limite neanche per il piano.
Per quanto riguarda il nome non credo sia un problema limitare la lunghezza...
altra domanda: come si fa a dividere le varie parti della riga di comando?
Esiste qualcosa simile allo stringtoken di Java? |
Freddy3 |
Beh, il problema di leggere l'imput ? il primo che balza all'occhio.
Tale problema ? dato dal fatto che le stringhe che rappersentano il nome dell'automa posso essere arbitrariamente lunghe!!!!
Quindi usare array di caratteri ? subito da scartare.
Anche modificare l'input... il proff lo vuole come dice il testo.
Aiuto!!!
Si potrebbe guardare sugli appunti di Torelli per?... gi? in passato sono stati fonte di idee mica male...
Vedo e domani, magari, chiss?... SPERIAMO mi venga un'idea decente. |
Dav83 |
allora sì che è panico... |
Freddy3 |
a Dav 83
per dividere le varie parti della riga di comando usa le opzioni di printf.
Guarda nei vecchi progetti e ti puoi fare un'idea. |
Teju |
Originally posted by Dav83
il nome dell'automa può essere 00010.
io ho usato un vettore di caratteri di lunghezza 30. Il testo dice che non c'è limite per gli automi e gli ostacoli e di conseguenza non c'è limite neanche per il piano.
Per quanto riguarda il nome non credo sia un problema limitare la lunghezza...
Beh, non sono d'accordo... nel senso che se intendo un piano illimitato, con n automi e ostacoli senza un limite preciso, non capisco come fare a limitare il nome dell'automa che deve essere univoco!
Infatti, facendo come dici tu, gli automi non sono infiniti ma limitati dalla lunghezza del nome!! |
Teju |
Originally posted by Freddy3
per dividere le varie parti della riga di comando usa le opzioni di printf
Ma.... :? la printf non è per mettere a video qualcosa?? dunque che c'azzecca con il leggere dei dati da frazionare in parti?? :-D |
rossa |
Ma secondo voi 2 automi possono essere nella stessa cella?
E quando un automa riceve l' istruzione di muoversi se incontra un altro automa cosa succede, lo scavalca? |
Teju |
Originally posted by rossa
Ma secondo voi 2 automi possono essere nella stessa cella?
E quando un automa riceve l' istruzione di muoversi se incontra un altro automa cosa succede, lo scavalca?
Si, non mi ricordo dove, ma c'è scritto che più automi possono condividere la stessa cella, dunque sovrapporsi, dunque no problem su questo! :D |
Teju |
Ma voi che struttura dati avete pensato di utilizzare???
A me verrebbe in mente un bel alberello binario, ma non riesco a concretizzarlo! :D
...e poi mi rimane sempre il dubbio di come salvare il dato "00010"... |
rossa |
Ma secondo voi 2 automi possono essere nella stessa cella?
E quando un automa riceve l' istruzione di muoversi se incontra un altro automa cosa succede, lo scavalca? |
Teju |
Originally posted by rossa
Ma secondo voi 2 automi possono essere nella stessa cella?
E quando un automa riceve l' istruzione di muoversi se incontra un altro automa cosa succede, lo scavalca?
Ma....:? ci sei o ci fai?!? Ti ho risposto io sopra!
Si, possono stare sulla stessa cella, dunque non occorre nessuno scavalcamento! :D |
Skilotto83 |
kmq il fatto ke due automi possano coesistere nella stessa cella è insensato..anke se è kosi'...
Avrebbe dovuto aggiungere l'asse z per la profondità...
ma in effetti la cosa si komplika... |
Ariok |
Ciao ragazzi mi unisco anche io...
1) perche' tanti problemi per l'input ? non penso che sia da file ..ma sara' riga per riga....comuqneu domani mattian mando e-mail ad aguzzoli per avere conferma.
2)I nomi degli automi come rappresentarli ....io rimarrei per i caratteri [30] come diceva qualcuno pero' effettivamente cosi' non si possono avere infiniti automi.(anche qui ci vuole una conferma dal prof... penso che lui intenda porre peso al fatto che non si deve utilizzare una matrice per il piano , non penso sia importante avere infinite possibilita' per gli automi, ma comunque chiedo conferma)
3)come struttura utilizzerei una lista senza dubbio(altrimenti troppo sbatti :P) e aggiungerei un parametro per specificare se si tratta di un elemento automa o ostacolo.
Farei un semplice algoritmino per calcolare le celle occupate da un ostacolo (sia perimetro che interne ,avendo x0 y0 e x1 e y1 non e' difficile).
ora un dubbio....
Mi spiegate 'sta parte per favore?
------------------------------------->>>>>>>>>>>>>>>>-----------
All’atto dell’emissione del segnale ogni automa determina se tale segnale lo riguarda o meno: l’automa
di nome n deve eseguire le istruzioni codificate nella stringa B del segnale se e solo se A `e un prefisso di
B, vale a dire B = b1b2 ...... bh e A = b1b2 ..... bn per qualche h <= n.
------------------>>>>>>>>>>>>>>><----------------
Cosa vuol dire??? devo calcolare quali automi saranno effettivamente interessati al segnale???? non capisco in che modo..
...edit-------->
Effettivamente ..e' un po' un casino dividere l'input.... vediamo se trovo soluzioni su google .... :cry: |
Jacoposki |
Originally posted by Teju
Domandona da 10000000 di Euro:
il nome dell'automa può essere 00010, giusto?
Che tipo di dato è dunque il nome dell'automa?!? ;)
Una lista di boolean o esiste qualcosa di meglio?!?
pssst... il tipo boolean non esiste, in C...
boh, io per l'automa pensavo a una struct contenente, oltre ai dati su posizione e direzione, un riferimento a una lista dinamica inizializzata al nome dell'automa indicato dalla chiamata a funzione, in modo che automi con nomi di lunghezza diversa abbiano dentro liste dinamiche con lunghezze diverse contenenti solo il nome stesso senza spreco di spazio.... ma sono anche le due e venti di mattina quindi non so quanto questa idea abbia senso, nè quanto sia fattibile (mi sa che Java mi influenza ancora troppo). |
andrea |
ciao ragazzi, cerco di dare le mie impressioni sul progetto dopo averlo letto meglio.
1) Per quanto riguarda l'input, io credo che la stringa relativa agli automi bisogna per forza limitarla (del resto anche il testo parla di "stringa finita"), perchè usando la scanf o la getchar bisogna per forza usare array e quindi si deve porre un limite superiore. Inoltre il testo parla di "vincoli che non devono essere posti sul piano o sul numero di celle " non dice nulla riguardo gli automi. Per questo io li limito di conseguenza alla limitazione della stringa. Certo, se il prof desse conferma sarebbe meglio.
2) Per quanto riguarda la frase degli spostamenti, si devono muovere quegli automi di cui la stringa alfa è prefisso. Questo mi fa pensare che se si deve spostare un automa, si devono spostare anche tutti quelli che risultano nei sottoalberi sx e dx del nodo corrispondente all'automa stesso (credo ci sia da studiare qualcosa sugli alberi binari).
3) Infine per quanto riguarda il piano, non ci ho ancora pensato. Credo che la verifica sulle coordinate sia la scelta giusta.
Spero di aver dato un contributo, se qualcuno pensa che ho scritto stupidate me lo dica, non mi offendo. |
rossa |
Non ti trovi perchè la definizione è: l' automa di nome n deve eseguire le istruzioni codificate bella stringa B del segnale ( che è del tipo A,B) se e solo se A è prefisso di n (di n!!), cioè A=b1b2..bh e n=b1b2...bn per qualche h<=n.
Cioè un segnale impartisce una istuzione a più automi, tutti quelli che hanno A come prefisso.
Scusate avevate ragione è scritto chiaramente nel testo che su una cella può esservi più di un automa e di conseguenza si può attraversare anche se c' è un automa.
per la struttura da usare non ho ancora le idee chiare ma dividerei le informazioni (=le celle occupate) memorzzate sugli automi e sugli ostacoli perchè la ricerca sarebbe più snella in fase di movimento anche se poi in fase di creazione ci sono 2 ricerche da fare |
marchinkus |
Ciao raga,se posso dire la mia, per quanto riguarda il segnale alfa e beta, sarebbe meglio utilizzare una lista di caratteri:
struct alfa{
char a;
alfa *next;
}
typedef struct alfa alfa;
struct beta{
char b;
int n;
beta *next;
}
typedef struct beta beta;
Cosa ne dite?? Vi sembra possibile???? |
p2p |
Originally posted by Ariok
Ciao ragazzi mi unisco anche io...
1) perche' tanti problemi per l'input ? non penso che sia da file ..ma sara' riga per riga....comuqneu domani mattian mando e-mail ad aguzzoli per avere conferma.
esatto... e si capisce dall' esempio portato tra pag3 e 4; inizia con il creare il piano, crea gli automi e gli ostacoli,fa qualche movimento e stampa la posizione che hanno raggiunto,esce con f.
a pag 3 dice che quando una linea è letta viene eseguita l' operazione associata, percui istruzione (enter)-->esecuzione(su nuova linea e a capo di nuovo), ecc li dovra sempre aspettarsi input fino a che non gli si da f, allora esce. |
LoneWolf |
Originally posted by p2p
esatto... e si capisce dall' esempio portato tra pag3 e 4; inizia con il creare il piano, crea gli automi e gli ostacoli,fa qualche movimento e stampa la posizione che hanno raggiunto,esce con f.
a pag 3 dice che quando una linea è letta viene eseguita l' operazione associata, percui istruzione (enter)-->esecuzione(su nuova linea e a capo di nuovo), ecc li dovra sempre aspettarsi input fino a che non gli si da f, allora esce.
Il tuo discorso non regge, e ti spiego il perche'.
Tu hai un file con le operazioni da eseguire, una per riga.
Leggi la prima riga, la esegui; leggi la seconda e la esegui, e cosi' via fino all'ultima riga, in cui si suppone ci sia f.
Per cui, le istruzioni potrebbero benissimo essere lette da file.
Comunque ho scritto ieri pomeriggio una email a Fiorenti, ma non ha ancora risposto: appena mi risponde vi aggiorno. |
dirkpitt |
Originally posted by Teju
...e poi mi rimane sempre il dubbio di come salvare il dato "00010"...
E se si usassero banalmente delle stringhe? |
LoneWolf |
Originally posted by dirkpitt
E se si usassero banalmente delle stringhe?
Le stringhe in C sono array di caratteri, e per gli array e' necessario specificare la lunghezza massima.
Per cui non va bene la soluzione suggerita da te.
Dovremmo utilizzare una lista di CHAR... |
Ariok |
Originally posted by rossa
per la struttura da usare non ho ancora le idee chiare ma dividerei le informazioni (=le celle occupate) memorzzate sugli automi e sugli ostacoli perchè la ricerca sarebbe più snella in fase di movimento anche se poi in fase di creazione ci sono 2 ricerche da fare
In che senso divideresti le informazioni (celle oocupate)??
Io la butto.... al massimo insultatemi. :P
Avevo pensato una cosa del genere :
Creare una unica lista ceh contenga sia automi che ostacoli , i dati nella struct sarebbero coordinate direzione e nome automa(qui forse definito da un'altra struttura).Per gli ostacoli questi valori saranno null (tranne le coordinate naturalmente).In questo modo si possono fare dei controlli diretti sulla stessa lista ,secondo voi e' fattibile? |
p2p |
Originally posted by LoneWolf
Il tuo discorso non regge, e ti spiego il perche'.
Tu hai un file con le operazioni da eseguire, una per riga.
Leggi la prima riga, la esegui; leggi la seconda e la esegui, e cosi' via fino all'ultima riga, in cui si suppone ci sia f.
Per cui, le istruzioni potrebbero benissimo essere lette da file.
Comunque ho scritto ieri pomeriggio una email a Fiorenti, ma non ha ancora risposto: appena mi risponde vi aggiorno.
si è vero, comunque lo (stdin) è la tastiera,non i file, quindi ne deducevo quello sopra deto... va beh cmq questo è l' ultimo dei problemi :-o |
p2p |
Originally posted by Ariok
In che senso divideresti le informazioni (celle oocupate)??
Io la butto.... al massimo insultatemi. :P
Avevo pensato una cosa del genere :
Creare una unica lista ceh contenga sia automi che ostacoli , i dati nella struct sarebbero coordinate direzione e nome automa(qui forse definito da un'altra struttura).Per gli ostacoli questi valori saranno null (tranne le coordinate naturalmente).In questo modo si possono fare dei controlli diretti sulla stessa lista ,secondo voi e' fattibile?
anch io stavo pensando a una cosa simile.. quindi ogni nodo dell lista sarebbe una cella,giusto?quando un automa deve fare una mossa bisogna passare tutta la lista,vedere quali nodi sono ostacoli e fare un confronto sulle coordinate di ogni ostacolo con la prossima posizione che andra' ad occupare l' automa?
pero' non mi senbra molto efficiente,anzi per una lista lunga mi sa che sarebbe lentino.. che dici? |
dirkpitt |
Originally posted by LoneWolf
Le stringhe in C sono array di caratteri, e per gli array e' necessario specificare la lunghezza massima.
Per cui non va bene la soluzione suggerita da te.
Dovremmo utilizzare una lista di CHAR...
Ma una lista per i soli nomi è una pazzia! Appesantirebbe il progetto per una sciocchezza! |
andrea |
Anche secondo me fare una lista per la stringa in input è eccessivo. Inoltre, scusate se mi ripeto, non mi pare che il testo specifichi qualcosa sui vincoli relativi agli automi. Quello che voglio dire è che probabilmente possiamo fare noi delle supposizioni. Per esempio anche lo standard in e out non viene specificato se deve essere tastiera/monitor o file, quindi secondo me uno può fare come vuole. Anche se, a mio parere, è scontato che siano tastiera e monitor.
Per quanto riguarda la verifica delle celle durante i movimenti, se si fa una lista, questa deve essere percorsa ad ogni passo di un movimento. Per esempio, se un automa deve muoversi di 10 passi, bisogna passare la lista 10 volte? non vi pare un pò pesante? A me sì, ma non ho idea di cosa usare come alternativa... A lezione non ha fatto esempi di questo tipo? |
Dav83 |
Anch'io penso che una lista solo per i nomi sia un pò esagerato...
per quanto riguarda il listone automa-ostacoli non saprei. Se la lista deve considerarsi infinita prima che confronti le coordinate del nuovo automa con tutti i possibili ostacoli viene Natale... |
rossa |
Originally posted by p2p
anch io stavo pensando a una cosa simile.. quindi ogni nodo dell lista sarebbe una cella,giusto?quando un automa deve fare una mossa bisogna passare tutta la lista,vedere quali nodi sono ostacoli e fare un confronto sulle coordinate di ogni ostacolo con la prossima posizione che andra' ad occupare l' automa?
pero' non mi senbra molto efficiente,anzi per una lista lunga mi sa che sarebbe lentino.. che dici?
Anche io ho questo tipo di perplessità: una lista appesantirebbe troppo la ricerca visto che gran parte del progetto prevede delle ricerche ed anche per questo motivo volevo memorizzare a parte gli automi che non creano problemi al movinìmento mentre credo che gran parte delle istruzioni siano di movimnto e non di creazione. Ma non ho idee! Non saprei trovare una struttura che permetta una facile ricerca su questi tipi di dati |
dirkpitt |
Originally posted by Dav83
Anch'io penso che una lista solo per i nomi sia un pò esagerato...
per quanto riguarda il listone automa-ostacoli non saprei. Se la lista deve considerarsi infinita prima che confronti le coordinate del nuovo automa con tutti i possibili ostacoli viene Natale...
Infatti! Usando due liste separate la cosa dovrebbe alleggerirsi un po'....
Altre alternative, al momento, non mi vengono in mente. |
Teju |
Leggere le operazioni:
mi date per favore dei link di esempi di lettura delle operazioni? Il prof assicura che se ne son viste a lezione... peccato che non tutti possano seguire! :cool: |
Dav83 |
anch'io ho fatto per ora due liste. mi chiedevo però come poi risolvere il problema su crea. Mi spiego.
Immaginando di non avere un piano le uniche cose memorizzate sono ostacoli e automi. Creare un piano nuovo significa cancellare entrambe le liste. come posso fare a realizzarlo? Nasce il problema di passare parametri che la funzione non richiede ci siano...o sbaglio? Forse mi sono addentrato un pò troppo ma era per far capire che non sono sicuro neanch'io stesso della soluzione "2 liste"... |
p2p |
ok, sembriamo tutti d' accordo che una lista unica non è efficiente, quindi serve qualcos altro.....
tabelle hash?permettono un universo di chiavi infinite(il nostro piano)e si potrebbero usare le celle della tabella come puntatori agli elementi.... xò boh.. che dite? |
Dav83 |
Può essere un'idea "tabella linkata". diventa più complicato e io non saprei bene come implemetarla ma col vostro aiuto... |
dirkpitt |
Originally posted by p2p
ok, sembriamo tutti d' accordo che una lista unica non è efficiente, quindi serve qualcos altro.....
tabelle hash?permettono un universo di chiavi infinite(il nostro piano)e si potrebbero usare le celle della tabella come puntatori agli elementi.... xò boh.. che dite?
Sì, è un'alternativa valida, ma come distingui gli automi dagli ostacoli in modo efficiente? |
Teju |
Lunghezza nome degli automi:
a dire il vero stavo rileggendo il testo.... parla di "automa identificato univocamente [...] per qualche intero positivo n", dunque è possibile forse dire quanto 'n' deve essere lungo...
....uhm.... però che brutta cosa........ |
Dav83 |
in più dovresti comunque fare una lista per automi e una per ostacoli e dovresti creare la struttura per il piano con due puntatori molti dei quali saranno poi inutilizzati. |
LoneWolf |
Ma nessuno ha preso in considerazione di organizzare gli automi con una struttura ad albero? |
LoneWolf |
Originally posted by Dav83
anch'io ho fatto per ora due liste. mi chiedevo però come poi risolvere il problema su crea. Mi spiego.
Immaginando di non avere un piano le uniche cose memorizzate sono ostacoli e automi. Creare un piano nuovo significa cancellare entrambe le liste. come posso fare a realizzarlo? Nasce il problema di passare parametri che la funzione non richiede ci siano...o sbaglio? Forse mi sono addentrato un pò troppo ma era per far capire che non sono sicuro neanch'io stesso della soluzione "2 liste"...
Basta che se hai gia' un piano deallochi la memoria che hai allocato per esso con la funzione free() e poi riallochi memoria per il nuovo piano, ottenendo un puntatore alla memoria per il nuovo piano.
Se non hai creato ancora nessun piano, passi direttamente alla allocazione della memoria. |
Ariok |
non avete capito cosa intendevo forse ...
Nella lista unica metterei solo le celle occupate identificandole come "occupate da automa " oppure "occupata da ostacolo".
In questo modo il metodo crea sarebbe creare un puntatore alla lista (ancora vuota).
Probabilemtne non e' la soluzione migliore.. pero' volevo chiedervi se secondo voi puo' funzioanre ..anceh perche' creando due liste .. bisognere bbe fare confronti tra una lista e l'altra giusto?sinceramente non mi viene in mente come fare. |
LoneWolf |
Originally posted by Ariok
non avete capito cosa intendevo forse ...
Nella lista unica metterei solo le celle occupate identificandole come "occupate da automa " oppure "occupata da ostacolo".
In questo modo il metodo crea sarebbe creare un puntatore alla lista (ancora vuota).
Probabilemtne non e' la soluzione migliore.. pero' volevo chiedervi se secondo voi puo' funzioanre ..anceh perche' creando due liste .. bisognere bbe fare confronti tra una lista e l'altra giusto?sinceramente non mi viene in mente come fare.
Secondo me un'unica lista sarebbe inefficiente perche' nel momento in cui vai a cercare tutti gli automi che hanno un determinato prefisso dovresti attraversare anche i nodi contenenti ostacoli, allungando i tempi di calcolo.
Non trovi? |
Ariok |
sisis pienamente daccordo, pero' non saprei come fare confronti tra due liste differenti...quindi questa rimane l'unica soluzione alla mia portata , e' questo che vorrei capire .. " come fare dei controlli su 2 liste differenti?"
mi sa che mi manca qualche tutorial :P |
Freddy3 |
inanzitutto scusate per il mio post di ieri in cui parlavo della printf... confusione totale :oops:
stavo pensando alla scanf, mi sono confuso.
questo progetto mi uccidera'
io userei un albero binario di ricerca per ordinare gli automi.
per gli ostacoli ho pensato ad una lista da confrontare in fase di inserimento con l'albero degli automi.
lo stesso vale per inserire gli ostacoli: bisogna vedere se nell'area da loro occupata si trova un automa.
Il mio problema ancora quello di leggere il nome dell'automa...
Ho scritto ad Aguzzoli che mi ha risposto che il nome e' una stringa di lunghezza n, quindi di lunghezza variabile.
Mi ha espressamente detto che l'array per memorizzarlo e' inefficente!
Pensiamo a qualcosa d'altro. |
dirkpitt |
Originally posted by Freddy3
Il mio problema ancora quello di leggere il nome dell'automa...
Ho scritto ad Aguzzoli che mi ha risposto che il nome e' una stringa di lunghezza n, quindi di lunghezza variabile.
Mi ha espressamente detto che l'array per memorizzarlo e' inefficente!
Pensiamo a qualcosa d'altro.
Non capisco perché sia inefficiente. E' vero che può essere limitato, però credo che un array di 32 caratteri sia sufficiente (4 miliardi e rotti automi...) anche se non infinito.
Penso che sia molto più inefficiente l'uso di liste (che, se vogliamo vedere, a lungo (meglio lunghissimo...) andare è comunque limitato dalla memoria della macchina). |
Teju |
Originally posted by Freddy3
Pensiamo a qualcosa d'altro.
Lista... :-D |
LoneWolf |
Ragazzi, siete in SILAB?
Accorrete! :-D |
Freddy3 |
E' inefficiente xche' se il nome e' lungo 33 caratteri non e' memorizzato correttamente.
Li si parla della lunghezza della stringa, non del numero di combinazioni diverse di 0 e 1 che si possono ottenere.
io avevo pensato all-opzione "s" della scanf che legge una sequenza di caratteri...
pero' la devo ancora testare. |
Freddy3 |
io sono al silab, mi appresto a testare la mia idea... incrociate le dita!!! |
LoneWolf |
Vieni a trovarci, siamo i due vicino alla porta finestra vicino all'aula Delta. |
p2p |
Originally posted by Freddy3
io sono al silab, mi appresto a testare la mia idea... incrociate le dita!!! aspetto con ansia.... da casa :) |
Teju |
Originally posted by Teju
Leggere le operazioni:
mi date per favore dei link di esempi di lettura delle operazioni? Il prof assicura che se ne son viste a lezione... peccato che non tutti possano seguire! :cool:
:D |
Freddy3 |
niente, il cs1300 non parte sul pc dell'uni...
vado alla maison per vedere se combino qualcosa.
poi faccio sapere domani se ho raggiunto un risultato.
Scusa Lonewolf, ma devo proprio scappare!
:oops: |
andrea |
Scusate un attimo, ma a mio parere un conto è parlare di efficienza e un conto è parlare di lunghezza massima della stringa. Sbaglio? |
Teju |
Questo è il mio main: mi dite com'è possibile che non legga i dati corretti se inserisco l'istruzione "a 12 23 W 001"?
...e per di più se al posto di "W" metto "S" mi faccia partire anche l'istruzione "manda segnale"?!?
PHP:
main()
{
// Variabili
int operazione;
int a, b, c, d;
do
{
operazione = getchar();
switch(operazione)
{
case 'c':
printf("crea il campo\n");
break;
case 'a':
scanf("%d%d%d%d", &a, &b, &c, &d);
printf("crea automa: %d %d %c %d\n");
break;
case 'o':
printf("crea ostacolo\n");
break;
case 's':
printf("manda segnale\n");
break;
case 'p':
printf("posizione\n");
break;
case 'e':
printf("elimina ostacolo\n");
break;
}
} while (operazione != 'f');
return 0;
}
Sono io che non capisco o non vedo l'errore o è il CS1300 che fa scherzi strani??? |
p2p |
Originally posted by andrea
Scusate un attimo, ma a mio parere un conto è parlare di efficienza e un conto è parlare di lunghezza massima della stringa. Sbaglio?
si pero' se il prof. vuole cosi...
scusate ma il discorso piano?
l istruzione crea() deve creare un piano....
inoltre possiamo anche mettere le coordinate dei vari oggetti negli attributi di questi e confrontarli ogni volta,xò se usassimo una struttura adeguata(cioe' espandibile)la si potrebbe usare come per tener traccia delle posizioni.... non so se sono riuscito a spiegarmi :sad:
se usate le liste alla crea() cosa le fate fare?le specifiche parlano di piano,non di oggetti(cioe' automi e ostacoli)....
mi correggete per favore? |
Freddy3 |
Aguzzoli mi ha detto così...
Pace e amen, la soluzione che avevo pensato non va...
credo userò una lista in cui ogni campo è uno dei valori della stringa nome dell'automa...
Poi il casino verrà dopo...
Altre idee?:cry: |
andrea |
Scusa teju, ma la direzione non è un %d, credo sia un %c. Forse non funziona per questo. E neppure la sequenza binaria può essere un %d.
Per quanto riguarda la questione dell'input, io dico la mia. Da quanto è stato scritto qui, non mi pare che il prof abbia risposto che non si può limitare la stringa, ha detto che non è efficiente, ma credo che intenda che non è efficiente usare l'array per verificare se una stringa è prefisso di un'altra. Questa è la mia idea. |
Freddy3 |
ah, Aguzzoli mi ha detto non che era non efficente, ma insoddisfacente. |
andrea |
Sì, ma cosa significa? Io ho idea che intenda che non è una buona scelta mantenere l'array nelle fasi successive del progetto, in particolare quando si deve verificare quali sono gli automi da muovere e quindi si dovrebbe confrontare bit a bit ogni stringa. Anche perchè il progetto stesso dice di usare la scanf o la getchar, e la scanf deve essere limitata. E' vero che si potrebbe usare la getchar con un while, ma mi sembra una cosa macchinosa per una questione secondaria rispetto al corso di algoritmi. |
LoneWolf |
Io ho scritto direttamente al professor Fiorentini, visto che nel testo del progetto c'e' scritto di rivolgersi a lui, proprio perche' io volevo usare una lista per il nome di ciascun automa, e voi mi avete fatto sorgere il dubbio.
Dopo avermi suggerito "con non troppo garbo" di non fare il progetto perche' era una domanda stupida, sono riuscito a farmi togliere questo dubbio.
Vi riporto un passo della sua email:
Lei continua a farmi domande sciocche.
Sul testo e' scritto esplicitamente che il nome e' una stringa finita
b1, ..., bn, con n>=0, non c'e' scritto da nessuna parte che n<=30 e
nemmemo che si debba fissare un valore MAX tale che n<=MAX.
E poi nulla impedisce di inserire un unico automa il cui nome sia
fatto, ad esempio, di cento 0.
Le rinnovo l'invito a lasciar perdere il progetto e provi a svolgere
esercizi piu' semplici fra i numerosi proposti (ad esempio, lettura di
una stringa di lunghezza indefinita) prima di affrontare l'esame
Per cui si torna al fatto che non si puo' porre una limitazione alla lunghezza del nome dell'automa. |
Ariok |
Per chi non fosse ancora sicuro se dare o no il progetto:
Trubian ha confermato che lo scritto dello scorso anno universitario rimarra valido per altri due appelli.
io ci provo comunque anceh se mi sa che mi mancano un po' di nozioni |
Ariok |
X teju
In questo punto non manca una parte dopo il printf? non dovresti anche specificare a che variabili fanno riferimento i vari %d %d %c ecc?
case 'a':
scanf("%d%d%d%d", &a, &b, &c, &d);
printf("crea automa: %d %d %c %d\n");<--- intendo qui |
|
|
|
|