-
-
Notifications
You must be signed in to change notification settings - Fork 46.8k
Added 2 new algorythms (decrypt message, censor) #5883
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from 22 commits
Commits
Show all changes
24 commits
Select commit
Hold shift + click to select a range
00c22a3
Added censor function
meg-1 4194344
Added censor code
meg-1 e7d4102
Added comments to the code
meg-1 93bd4ac
modified censor function
meg-1 b714278
added decrypt function
meg-1 c879c7f
added cypher and decypher functions, deleted censor and decrypt funct…
meg-1 e60dd6f
Deleted decrypt.py
meg-1 b3e0cb8
Deleted censor.py
meg-1 e14b9ef
Merge branch 'TheAlgorithms:master' into master
meg-1 947f7d8
edited the crypt and decrypt files
meg-1 daf21ad
Update cypher_txt.py
meg-1 d3d8b29
Remove the endline in cypher.py
meg-1 752c197
Removed the print at the end of decypher.py
meg-1 9f44028
comitting changes
meg-1 f72431b
added 4 new algorithms
meg-1 4c891f4
added tests to the four files
meg-1 c600b10
added type hints for the function variables
meg-1 4286e40
Merge branch 'TheAlgorithms:master' into master
meg-1 7a909e2
Deleted decode message
meg-1 f5b5411
Deleted code message
meg-1 bc8388c
Welford average algorithm
meg-1 9be479e
added average welford algorithm
meg-1 5ebf785
indentation added
meg-1 0570692
switched print to return in the end
meg-1 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
def average_welford(values: list) -> float: | ||
""" | ||
>>> average_welford([1, 2, 3, 4, 5]) | ||
3.0 | ||
>>> average_welford([1.2329435, 2.209462409, 3.230925, 4.47626462, 5.2938759204]) | ||
3.2886942898799996 | ||
>>> average_welford([-57386462.2329435, 2246262.209462409, 4632463.230925, 856737354.47626462, -243664265.2938759204]) | ||
112513070.4779665 | ||
""" | ||
avg = 0.0 | ||
"""while looping through the list, | ||
we calculate the average of the | ||
current element and the average | ||
of the elements before it""" | ||
for index in range(0, len(values)): | ||
avg += (values[index]-avg)/(index+1) | ||
return avg | ||
|
||
if __name__ == "__main__": | ||
import doctest | ||
doctest.testmod() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
def censor(txt: str, word: str) -> str: | ||
""" | ||
>>> censor("one two three", "one") | ||
*** two three | ||
>>> censor("email, password", "password") | ||
email, ******** | ||
>>> censor("pin: 2536", "2536") | ||
pin: **** | ||
|
||
""" | ||
|
||
txt_lst = txt.split() | ||
#here we loop through a list which consists of words from the text we should censor | ||
for index, word1 in enumerate(txt_lst): | ||
if word1 == word: | ||
txt_lst[index] = "*" * len(word1) | ||
txt = "" | ||
#here we combine all of the split words in txt_lst into one string | ||
for word1 in txt_lst: | ||
txt += word1 + " " | ||
txt = txt[:-1] | ||
print(txt) | ||
|
||
if __name__ == "__main__": | ||
import doctest | ||
doctest.testmod() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
def decrypt(txt: str, symbol: str) -> str: | ||
""" | ||
>>> decrypt("o$ne", "$") | ||
one | ||
poyea marked this conversation as resolved.
Show resolved
Hide resolved
|
||
>>> decrypt("dec@rypt", "@") | ||
decrypt | ||
>>> decrypt("p#ython cod#e", "#") | ||
python code | ||
|
||
""" | ||
#here we split the string we need to decypher into a list | ||
txt_lst = txt.split() | ||
res_str = "" | ||
#we create a for loop which loops through the newly created list | ||
for word1 in txt_lst: | ||
#here we convert the current word we got through the loop into a list of charachters | ||
word1_lst = list(word1) | ||
#we loop through each charachter in the newly created list of charachters form the word we are looping throuh | ||
for char1 in word1_lst: | ||
#we set a condition, where if the symbol the loop is currently on corresponds to the symbol we need to remove, we stop on it and examine it | ||
if char1 == symbol: | ||
#we find the charachters index from the word | ||
indx = word1.index(char1) | ||
#we remove the list (the list which contains every element and characahter from the word we are looping throuh) element with the same index from the list. | ||
word1_lst[indx] = "" | ||
res_wrd = "" | ||
#we loop throuh the list containing all the charachters from the word, and append those charachters to a new string | ||
for char1 in word1_lst: | ||
res_wrd += char1 | ||
#here we add the newly created, decyphered word to a new string which will contain our full result | ||
res_str += res_wrd + " " | ||
res_str = res_str[:-1] | ||
#and here we print out the final result | ||
print(res_str) | ||
|
||
if __name__ == "__main__": | ||
import doctest | ||
doctest.testmod() |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.