Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

La chiave crittografica ?!

m
moin.uddin (820 points)
4 10 19
in Es3 by (820 points)
closed by

ciao a tutti,

ho letto e riletto il testo però non mi entra in testa come mai , "sim sala bim!" diventa "slaim"

Come esempio di applicazione  consideriamo la chiave
 "sim sala Bim!"
a seguito delle eliminazioni la chiave produce la sequenza DISORDINATA
 "slaim"

qualcuno gentilmente potrebbe spiegarmi in un modo più semplice ? ringrazio in anticipo =)

566 views
closed with the note: answered

4 Answers

Best answer
francesco.dev (33560 points)
21 51 129
by (33.6k points)
selected by
Ciao!
Avendo la chiave: "sim sala Bim!"
Fai i seguenti passaggi:
- Eliminare tutti i caratteri che non sono lettere minuscole e quindi compresi tra 'a' e 'z'. Al termine di questa operazione avrai come chiave: "simsalaim";
- Togliere le prime occorrenze dei caratteri, ovvero se un carattere si ripete n volte, cancello le n volte tranne l'ultima corrispondenza. Infatti la chiave "simsalaim" diventerà semplicemente "slaim"!
Come puoi vedere, per la 's'  ho lasciato l'ultima 's' che appare, per la 'i' l'ultima che appare e così via.
Ti spiego meglio quest'ultimo passaggio con altre parole: data una chiave in cui ci sono alcuni caratteri uguali (quindi ci sono alcune lettere identiche) io devo eliminare tutte quelle uguali tranne l'ultima. Quindi se avrò: "ciaoc" elimino la prima 'c' perché ce ne sono due. Dopo averla eliminata ne rimarrà solo una e quindi non devo assolutamente cancellare anche la seconda 'c'!
Invece, avendo "ciaocec" questa volta cancellerò le prime due 'c' e lascerò l'ultima come prima.

Sperando di averti aiutato,
- Francesco Pio Scognamiglio
P
Pic1 (1030 points)
9 24 31
by (1.0k points)
Partenza

sim sala Bim!

1) Vanno eliminati tutti i caratteri <a o >a quindi in questo caso “ “ e !. Di conseguenza diventa

simsalaim

2) vanno eliminate tutte le lettere presenti più di una volta, mantenendo l’ultima quindi

 S presente due volte —> elimini la prima s

imsalaim

I presente due volte —> elimini la prima i

msalaim

M (come sopra)

salaim

S già esaminata

A presente 2 volte —> elimini la prima a

slaim

LeonardoEmili (35740 points)
13 65 155
by (35.7k points)

Ciao moin.uddin!

Sarò felice di contribuire a risolvere il tuo problema!

Dunque tu non hai chiaro il passaggio "sim sala bim!" -> "slaim" è corretto?

In realtà questo passaggio è abbastanza semplice, poco meno da realizzare, è solo un po' meccanico. Vedila così: nella prima stringa se vedi bene ci sono 2 "s", 2 "i", 2 "m", 2 "a", 1 "l", 2 spazi e un punto esclamativo. Ora guarda il risultato, nessuna ripetizione.

Come ti hanno suggerito gli altri studenti il passaggio subito precedente a questo è eliminare tutti i caratteri non presenti nell'intervallo "a" <-> "z" (minuscoli), quindi dovrai prima filtrare i caratteri che non ti interessano.

Avrai quindi dei caratteri alla rinfusa uniti in un'unica stringa! Qui è il passaggio importante. I caratteri non hanno ripetizioni, quindi dovrai eliminare i caratteri ripetuti e fai ben attenzione perché i caratteri rimanenti, come puoi chiaramente vedere dall'output, sono le ULTIME ripetizioni. Come da codice non posso fornirti la soluzione né tantomeno il codice per risolverlo, in ogni caso confido che tu abbia capito cosa ti ho detto.

Se hai bisogno di chiarimenti riguardo qualsiasi cosa non esitare a chiedere!

Buona serata!

.

Leonardo Emili

V
Vlad (4580 points)
2 14 24
by (4.6k points)
Pic1 ti ha già risposto in maniera pratica e chiara, aggiungo solo un piccolo consiglio: quando implementi questo passaggio nel programma secondo me conviene leggere i caratteri della stringa da destra verso sinistra visto che deve rimanere soltanto l'ultimo