kupuguy

Untitled

Feb 13th, 2016
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.90 KB | None | 0 0
  1. def is_answer(seq):
  2.     """Found an answer if:"""
  3.     return all(seq.count(i)==seq[i] for i in range(10))
  4.  
  5. def reset(last):
  6.     seq = [0]*10
  7.     seq[0] = 9
  8.     seq[last] = 1
  9.     return seq
  10.  
  11. def next_candidate(seq):
  12.     if seq[0] != 0:
  13.         seq[0] -= 1
  14.         seq[1] += 1
  15.         if seq[1] > 9:
  16.             return reset(2)
  17.         return seq
  18.     # seq[0] == 0
  19.     # Find first non-zero value. Add 1 to following value and
  20.     # move remainder back down to 0
  21.     for first in range(10):
  22.         if seq[first] != 0:
  23.             break
  24.     seq[first+1] += 1
  25.     seq[0] = seq[first]-1
  26.     seq[first] = 0
  27.     return seq
  28.    
  29. def scan():
  30.     seq = reset(1)
  31.     trials = 1
  32.     while not is_answer(seq):
  33.         trials += 1
  34.         seq = next_candidate(seq)
  35.        
  36.     print("Found {} after {} trials".format(''.join(str(c) for c in seq), trials))
  37.  
  38. if __name__=='__main__':
  39.     scan()
Advertisement
Add Comment
Please, Sign In to add comment