mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-04-30 16:01:14 -04:00
70 lines
1.7 KiB
Markdown
70 lines
1.7 KiB
Markdown
---
|
|
id: 6554e0adc7bb193cbfdb36d5
|
|
title: Step 73
|
|
challengeType: 20
|
|
dashedName: step-73
|
|
---
|
|
|
|
# --description--
|
|
|
|
Check if the function can decrypt the string back to the plain text.
|
|
|
|
Declare another variable called `decryption` and assign it `vigenere(encryption, custom_key, -1)`.
|
|
|
|
# --hints--
|
|
|
|
You should call `vigenere` passing `encryption`, `custom_key` and `-1` as the arguments.
|
|
|
|
```js
|
|
({ test: () => assert.match(code, /vigenere\s*\(\s*encryption\s*,\s*custom_key\s*,\s*-\s*1\s*\)/) })
|
|
```
|
|
|
|
You should declare a `decryption` variable.
|
|
|
|
```js
|
|
({ test: () => assert(__userGlobals.has("decryption")) })
|
|
```
|
|
|
|
Your `decryption` variable should have the value of `vigenere(encryption, custom_key, -1)`.
|
|
|
|
```js
|
|
({ test: () => assert.match(code, /^decryption\s*=\s*vigenere\s*\(\s*encryption\s*,\s*custom_key\s*,\s*-\s*1\s*\)/m) })
|
|
```
|
|
|
|
# --seed--
|
|
|
|
## --seed-contents--
|
|
|
|
```py
|
|
text = 'Hello Zaira'
|
|
custom_key = 'python'
|
|
|
|
def vigenere(message, key, direction):
|
|
key_index = 0
|
|
alphabet = 'abcdefghijklmnopqrstuvwxyz'
|
|
encrypted_text = ''
|
|
|
|
for char in message.lower():
|
|
|
|
# Append space to the message
|
|
if char == ' ':
|
|
encrypted_text += char
|
|
else:
|
|
# Find the right key character to encode
|
|
key_char = key[key_index % len(key)]
|
|
key_index += 1
|
|
|
|
# Define the offset and the encrypted letter
|
|
offset = alphabet.index(key_char)
|
|
index = alphabet.find(char)
|
|
new_index = (index + offset*direction) % len(alphabet)
|
|
encrypted_text += alphabet[new_index]
|
|
|
|
return encrypted_text
|
|
--fcc-editable-region--
|
|
encryption = vigenere(text, custom_key, 1)
|
|
print(encryption)
|
|
|
|
--fcc-editable-region--
|
|
```
|