Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from argparse import ArgumentParser, FileType
- def parse(src):
- return [int(line) for line in src.splitlines() if line != '']
- def mix_prune(secret, other):
- return (secret ^ other) & 0xFFFFFF
- def step(secret):
- secret = mix_prune(secret, secret << 6)
- secret = mix_prune(secret, secret >> 5)
- return mix_prune(secret, secret << 11)
- def main(numbers, verbose):
- total = 0
- for original_number in numbers:
- number = original_number
- for _ in range(2000):
- number = step(number)
- if verbose:
- print(f'{original_number}: {number}')
- total += number
- return total
- arg_parser = ArgumentParser()
- arg_parser.add_argument('src', type=FileType('r'))
- arg_parser.add_argument('-v', '--verbose', action='store_true')
- if __name__ == '__main__':
- args = arg_parser.parse_args()
- print(main(parse(args.src.read()), args.verbose))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement