Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions 01-moyen/exercice-7/enonce-exercice-7.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Exercice 7

En cryptographie, le **chiffrement par décalage**, également connu sous le nom de **chiffre de César** est l'une des techniques de cryptage les plus simples et les plus connues. C'est un type de chiffrement de substitution dans lequel chaque lettre du texte brut est remplacée par une lettre à un nombre fixe de positions dans l'alphabet. Par exemple, avec un décalage à gauche de -3, D serait remplacé par A, E deviendrait B, et ainsi de suite. La méthode porte le nom de Jules César, qui l'a utilisée dans sa correspondance privée.

## Exemple de l'alphabet avec un décalage de +3 (décalage vers la droite)

```text
Alphabet original : ABCDEFGHIJKLMNOPQRSTUVWXYZ
Alphabet décalé +3 : DEFGHIJKLMNOPQRSTUVWXYZABC
```

Créez une fonction qui renverra la phrase après avoir décalé l'alphabet.

La fonction prendra les paramètres suivants :

- `phrase`: une chaîne de caractère (tout en majuscules)
- `decalage`: un entier, le décalage dans l'alphabet
- Si c'est un nombre **positif** alors on décale l'alphabet vers la **droite**
- Si c'est un nombre **négatif** alors on décale l'alphabet vers la **gauche**

## Exemples

- `exercice7('HEY', 5)`, la fonction retournera `'MJD'`
- `exercice7('CODING DOJO', 0)`, la fonction retournera `'CODING DOJO'`
- `exercice7('JAVASCRIPT', -11)`, la fonction retournera `'YPKPHRGXEI'`
- `exercice7('ANTHONY', -2)`, la fonction retournera `'YLRFMLW'`
6 changes: 6 additions & 0 deletions 01-moyen/exercice-7/exercice-7.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
function exercice7(phrase, decalage) {

}

// Ne touchez pas à la ligne suivante
module.exports = exercice7;
29 changes: 29 additions & 0 deletions 01-moyen/exercice-7/exercice-7.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const exercice7 = require('./exercice-7');

test("exercice7('ANTHONY', -2) devrait retourner 'YLRFMLW'", () => {
expect(exercice7('ANTHONY', -2)).toBe('YLRFMLW');
});

test("exercice7('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG', -23) devrait retourner 'WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ'", () => {
expect(exercice7('THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG', -23)).toBe('WKH TXLFN EURZQ IRA MXPSV RYHU WKH ODCB GRJ');
});

test("exercice7('PROGRAMMING CHALLENGES IS AWESOME', -12) devrait retourner 'DFCUFOAAWBU QVOZZSBUSG WG OKSGCAS'", () => {
expect(exercice7('PROGRAMMING CHALLENGES IS AWESOME', -12)).toBe('DFCUFOAAWBU QVOZZSBUSG WG OKSGCAS');
});

test("exercice7('JVUNYHABSHAPVUZ', -19) devrait retourner 'QCBUFOHIZOHWCBG'", () => {
expect(exercice7('JVUNYHABSHAPVUZ', -19)).toBe('QCBUFOHIZOHWCBG');
});

test("exercice7('JAVASCRIPT', -11) devrait retourner 'YPKPHRGXEI'", () => {
expect(exercice7('JAVASCRIPT', -11)).toBe('YPKPHRGXEI');
});

test("exercice7('HEY', 5) devrait retourner 'MJD'", () => {
expect(exercice7('HEY', 5)).toBe('MJD');
});

test("exercice7('CODING DOJO', 0) devrait retourner 'CODING DOJO'", () => {
expect(exercice7('CODING DOJO', 0)).toBe('CODING DOJO');
});