combinatorics, . ,
def guess(smudged_numbers):
from itertools import product
num_smudges = len(smudged_numbers)
for raw in product(smudged_numbers, repeat=4):
if len(set(raw)) == num_smudges:
yield raw
count = 0
for nums in guess([1, 8]):
print nums
count += 1
print "total", count
:
(1, 1, 1, 8)
(1, 1, 8, 1)
(1, 1, 8, 8)
(1, 8, 1, 1)
(1, 8, 1, 8)
(1, 8, 8, 1)
(1, 8, 8, 8)
(8, 1, 1, 1)
(8, 1, 1, 8)
(8, 1, 8, 1)
(8, 1, 8, 8)
(8, 8, 1, 1)
(8, 8, 1, 8)
(8, 8, 8, 1)
total 14
(len(num_smudges)**4, , , 4 ** 4 = 256), , -)
: (product) 4-tuples (repeat=4), . , [1, 8] 2 ** 4 = len(smudged_numbers)**4= 16 4-, 1 8.
set , (len) 4-. , . , . [1, 8] 2 16 4-: (1, 1, 1, 1) (8, 8, 8, 8).