diff --git a/e079.py b/e079.py new file mode 100644 index 0000000..2cd5407 --- /dev/null +++ b/e079.py @@ -0,0 +1,38 @@ +"""By analysing a user's login attempts, can you determine the secret numeric passcode? + +A common security method used for online banking is to ask the user for three random characters from a passcode. For example, if the passcode was 531278, they may ask for the 2nd, 3rd, and 5th characters; the expected reply would be: 317. + +The text file, keylog.txt, contains fifty successful login attempts. + +Given that the three characters are always asked for in order, analyse the file so as to determine the shortest possible secret passcode of unknown length. +""" + +def main(): + key = [] + with open('p079/keylog.txt', 'r') as f: + while True: + line = f.readline() + if not line: + break + prev = None + for c in line.strip(): + c = int(c) + if c not in key: + if prev: + # Place right of prev + i = key.index(prev) + 1 + key.insert(i, c) + pass + else: + key.insert(0, c) + elif prev and key.index(c) < key.index(prev): + # Move if not right of prev + old = key.index(c) + key.insert(key.index(prev) + 1, c) + key.pop(old) + pass + prev = c + print 'Key:', ''.join(str(c) for c in key) + +if __name__ == '__main__': + main() diff --git a/p079/keylog.txt b/p079/keylog.txt new file mode 100644 index 0000000..b6f9903 --- /dev/null +++ b/p079/keylog.txt @@ -0,0 +1,50 @@ +319 +680 +180 +690 +129 +620 +762 +689 +762 +318 +368 +710 +720 +710 +629 +168 +160 +689 +716 +731 +736 +729 +316 +729 +729 +710 +769 +290 +719 +680 +318 +389 +162 +289 +162 +718 +729 +319 +790 +680 +890 +362 +319 +760 +316 +729 +380 +319 +728 +716