Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def is_answer(seq):
- """Found an answer if:"""
- return all(seq.count(i)==seq[i] for i in range(10))
- def reset(last):
- seq = [0]*10
- seq[0] = 9
- seq[last] = 1
- return seq
- def next_candidate(seq):
- if seq[0] != 0:
- seq[0] -= 1
- seq[1] += 1
- if seq[1] > 9:
- return reset(2)
- return seq
- # seq[0] == 0
- # Find first non-zero value. Add 1 to following value and
- # move remainder back down to 0
- for first in range(10):
- if seq[first] != 0:
- break
- seq[first+1] += 1
- seq[0] = seq[first]-1
- seq[first] = 0
- return seq
- def scan():
- seq = reset(1)
- trials = 1
- while not is_answer(seq):
- trials += 1
- seq = next_candidate(seq)
- print("Found {} after {} trials".format(''.join(str(c) for c in seq), trials))
- if __name__=='__main__':
- scan()
Advertisement
Add Comment
Please, Sign In to add comment