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...

Комментарии • 14

  • @Seba.V
    @Seba.V 2 года назад +3

    Sempre un piacere ascoltare le sue lezioni, grazie per condividerle🙏

    • @fulcorno
      @fulcorno  2 года назад +3

      molte grazie per l'incoraggiamento

  • @alessandroottone4365
    @alessandroottone4365 Год назад

    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

    • @fulcorno
      @fulcorno  Год назад

      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

    • @alessandroottone4365
      @alessandroottone4365 Год назад

      Grazie Prof le auguro buona giornata

  • @randaggoth2391
    @randaggoth2391 2 года назад

    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

    • @fulcorno
      @fulcorno  2 года назад +1

      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.

    • @randaggoth2391
      @randaggoth2391 2 года назад

      @@fulcorno ora mi è chiaro la ringrazio, non avevo capito che le lettere dovessero essere tutte in un’unica direzione

    • @fulcorno
      @fulcorno  2 года назад +1

      @@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)

  • @alessandroottone4365
    @alessandroottone4365 Год назад

    Salve Prof ma quale comando è per commentare in un solo colpo ?

    • @fulcorno
      @fulcorno  Год назад

      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")

    • @alessandroottone4365
      @alessandroottone4365 Год назад

      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

  • @vagnonivagnoni
    @vagnonivagnoni Год назад

    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.😁😁😁😁😁😁

    • @fulcorno
      @fulcorno  Год назад

      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)