classed passwords

This commit is contained in:
randomuser 2023-07-14 23:52:08 -05:00
parent f94a7aa9e2
commit 9603c859bc
1 changed files with 69 additions and 27 deletions

View File

@ -1,33 +1,75 @@
passwords = [
'about', 'after', 'again', 'below', 'could',
'every', 'first', 'found', 'great', 'house',
'large', 'learn', 'never', 'other', 'place',
'plant', 'point', 'right', 'small', 'sound',
'spell', 'still', 'study', 'their', 'there',
'these', 'thing', 'think', 'three', 'water',
'where', 'which', 'world', 'would', 'write'
]
final = passwords
class FoundCondition(Exception): class FoundCondition(Exception):
pass pass
responses = [] class PasswordModule:
for i in range(5): """
response = [*input("{}th letters: ".format(str(i)))] takes in information about passwords and returns the password
responses.append(response) it could be given the information. implementation is pursuant
Bomb Defusal Manual, Version 1, English, Page 16.
"""
passwords = [
'about', 'after', 'again', 'below', 'could',
'every', 'first', 'found', 'great', 'house',
'large', 'learn', 'never', 'other', 'place',
'plant', 'point', 'right', 'small', 'sound',
'spell', 'still', 'study', 'their', 'there',
'these', 'thing', 'think', 'three', 'water',
'where', 'which', 'world', 'would', 'write'
]
def check(index, word, responses): def __init__(self, cols):
if index == 5: """
raise FoundCondition(word) cols should contain a five element long array of numbers,
the first element containing all the possible characters for
the first position, the second containing all the characters for
the second position, and so on.
"""
for a in responses[index]: self.responses = cols
if a == word[index]: self.word = None
check(index + 1, word, responses)
for word in passwords: def solve(self):
try: """
check(0, word, responses) start solving.
except FoundCondition as e: """
print(str(e)) for word in self.passwords:
try:
self._solver(0, word)
except FoundCondition as e:
self.word = str(e)
return self.word
def _solver(self, index, word):
"""
internal method. end users need not use.
"""
responses = self.responses
if index == 5:
raise FoundCondition(word)
for a in responses[index]:
if a == word[index]:
self._solver(index + 1, word)
@classmethod
def human_helper(cls):
"""
prints stuff out to console to prompt for information.
useful for module specific debugging. see usage in the
default module execution location
(hint, default module execution location is where __name__ ==
"__main__"
"""
responses = []
for i in range(5):
response = [*input("{}th letters: ".format(str(i)))]
responses.append(response)
obj = cls(responses)
return obj.solve()
if __name__ == "__main__":
print(PasswordModule.human_helper())