Informatica2021-L25: Esercizio sulle tabelle "Crucipuzzle"
HTML-код
- Опубликовано: 10 сен 2024
- Lezione 25 (18/11/2021): Esercizio sulle tabelle "Crucipuzzle".
Corso: Informatica (codice 14BHD, corso 10), Politecnico di Torino, Anno Accademico 2021/2022
Maggiori informazioni: bit.ly/polito-i...
Sempre un piacere ascoltare le sue lezioni, grazie per condividerle🙏
molte grazie per l'incoraggiamento
Salve Prof ho seguito la sua lezione sul crucipuzzle è possibile avere anche la versione fatta da lei cosi 'che posso studiarla? Un'altra cosa sulla lezione dei file il file csv di movies.csv dove l'ha trovata?E' possibile avere il link
Grazie ancora ovviamente quando ha tempo
Il file dell'esercizio crucipuzzle svolto in aula dovrebbe essere quello presente in questa cartella: github.com/polito-info-2021/Settimane/tree/master/Settimana08
Invece movies.csv si trova qui: github.com/polito-info-2021/Settimane/tree/master/Settimana10
Grazie Prof le auguro buona giornata
Scusi professore avrei un dubbio: ho capito in linea di principio come far funzionare il programma solo nel caso in cui l’unica direzione possibile fosse andare a dx però non mi è chiara una cosa: ipoteticamente mettiamo di aver trovato la seconda lettera della parola a dx, e che la terza lettera di trovi appena in alto ad essa. Ovviamente il ciclo while per andare a destra si interrompe, però in tutte le ricerche delle direzioni l’indice i ritorna = 0. Non riesco a capire come arrivato a quel punto il programma “salvi” le lettere già confermate e capisca quando si arriva alla fine della parola se l’indice è ogni volta 0…sono piuttosto confuso.
Cordiali saluti, le sue lezioni sono sempre utili
Non sono sicuro di avere capito a fondo la domanda, eventualmente prova ad essere più specifico sulla parte di codice che non ti quadra.
In ogni caso non è possibile avere una parola (es di 3 lettere) in cui la seconda lettera si trovi a destra della prima, e la terza lettera si trovi sopra alla seconda. Tutta la parola deve essere scritta nella stessa direzione (tutta verso destra, tutta verso l'alto, ecc ecc) e non è possible trovare parole "a gomito", per come sono definite le regole del crucipuzzle.
@@fulcorno ora mi è chiaro la ringrazio, non avevo capito che le lettere dovessero essere tutte in un’unica direzione
@@randaggoth2391 per poter gestire il caso di parole "a zig zag" sarebbero necessarie nozioni di programmazione molto più approfondite (in particolare, servirebbe un algoritmo ricorsivo per la ricerca di tutti i possibili percorsi)
Salve Prof ma quale comando è per commentare in un solo colpo ?
Sulla tastiera con layout americano (che è la più adatta a programmare) la combinazione di tasti è Ctrl e /.
Sulla tastiera italiana purtroppo la stessa combinazione non funziona (a meno che tu non abbia il tastierino numerico e puoi usare lo / presente sul tastierino), ma si può andare nelle impostazioni di PyCharm e scegliere/personalizzare sotto Settings/ Keymap (la voce da cambiare è "Comment with Line Comment")
Grazie Prof ho il tastierino numerico ho provato e funziona ,ma per avere una tastiera con layout americano come si fa a identificarla chiedendo al negoziante?
Grazie prof inoltre ho seguito attentamente la lezione sul crucipuzzle l'ho rifatto da solo per vedere se avevo capito ,ma per trovare la posizione della seconda lettera che mettiamo perchè devo aggiungere c1+1 per trovare esattamente la sua posizione,? se lascio solo c1 mi da la posizione antecedente.
while i < len(cerca) and c1 >=0 and cerca[i] == griglia[r1][c1]:#quando cerco verso sinistra
i = i + 1
c1 = c1 -1
if i == len(cerca):
print(f'Lettere trovate {cerca[:i]} in posizione {r1},{c1+1} ')
La ringrazio e buona giornata
UNA soluzione alternativa è ricercare in tutte le righe le lettere della stringa e accumularle in una dizionario(lettera, posizione)trovate .Poi ricomporre e confrontare il trovata == stringa cercata, per verificare ordine lettere ,se coincidono trovata.Dovrebbe essere notevolmente più veloce, le posizioni poi ci daranno l'orientamento nella matrice.😁😁😁😁😁😁
Non sono sicuro di avere capito bene la tua proposta.
Se la parola da cercare fosse "CANE", tu costruiresti un dizionario "lettera:posizione". Ci vedo un primo problema, perché la "lettera" potrebbe essere ripetuta nella parola, ed usandola come chiave in un dizionario non si riescono a gestire duplicati. Poi, come rappresentiamo la posizione? Ipotizziamo che sia una tupla, tipo (riga, colonna)?
Quindi avrei un dizionario tipo: { "C": (8,2), "A":(1,3) }
A questo punto sorge un altro problema: la lettera "C" può comparire molte volte nel crucipuzzle... come faccio a rappresentarlo? il valore non può più essere una sola posizione, ma deve essere una lista di posizioni, o un set di posizioni...
Quindi dovrei avere qualcosa tipo: { "C": [ (8,2), (3,3), (1,2) ], "A": [ (1,3), (2,2) ] }.
Se questo era il dizionario che avevi in mente, a questo punto come procederesti?
Se vuoi, ti suggerisco di provare a scrivere il codice (o lo pseudocodice più dettagliato) su replit.com, così condividendo il link possiamo commentarlo con maggior precisione.
(Ricorda: il diavolo sta nei dettagli)