Læringsmål:
- Strenger
- Char
- Modulo
Pensum:
- Kap 7
I disse dager er personvern på dagsorden. Det skal lages en funksjon som skal kryptere en setning ved hjelp av Cæsarshiffer.
a)
Lag funksjonen encrypt(word, step)
. Parameterene er word
og step
. Den skal forskyve hver bokstav (char) i word med step
antall tegn i alfabetet. Til høyre om step er positiv og til venstre om den er negativ.
Anta at word kun består av små bokstaver fra a til z, ingen tegn, tall o.l.
Tips: Lek med: mod(tall + shift, 26)
Eksempel på kjøring:
>> encrypt('etterlatt', 10)
ans =
oddobvkdd
b)
Lag funksjonen decrypt(word, step)
. Denne skal dekryptere en tekststreng ved gitt step.
Eksempel på kjøring:
>> decrypt('oddobvkdd', 10)
ans =
etterlatt
c)
Lag funksjonen safeTalk()
. Den skal gi brukeren valget mellom kryptering eller dekryptering. Deretter skal den be brukeren om en tekstreng og antall steg. Den skal returnere den krypterte eller dekrypterte strengen.
Eksempel på kjøring:
>> safeTalk
Vil du kryptere(k) eller dekryptere(d):
k
Hva vil du kryptere:
tusenfryd
Hvor mange steg skal ordet skiftes?:
1
ans =
uvtfogsze
Merk: funksjonen må også ta hensyn til at brukeren vil kryptere/dekryptere setninger. Hva gjør man da med mellomrom, komma, punktum osv.?
d)
Dekrypter setningen under.
Hint: Dette kan løses ved å finne den hyppigste bokstaven i strengen. Avstanden fra e til denne bokstaven er da forskyvningen.
zmumujmz, zmumujmz, bpm nqnbp wn vwdmujmz, bpm ocvxwelmz bzmiawv ivl xtwb. q svwe wn vw zmiawv epg bpm ocvxwelmz bzmiawv apwctl mdmz jm nwzowb.