# -*- coding: utf-8 -*-
#stones = [ '●', '○' ]
stones = [ 'o', 'x' ]
patterns = [ '00', '10', '01', '11' ]
def test(n, a, b, c, d):
print('=' * 50)
print(" Stones: {}".format(n))
print(" - oo: {}, ox: {},".format(a, b))
print(" - xo: {}, xx: {}".format(c, d))
print('=' * 50)
lines = [ "{{:0{}b}}".format(n).format(x) for x in range(2 ** n) ]
count = 0
for x in lines:
matched = [ 0 ] * len(patterns)
for y in range(0, len(x)-1):
for i, z in enumerate(patterns):
if z == x[y:y+2]:
matched[i] += 1
if matched == [ a, b, c, d ]:
count += 1
print(' ', x.replace('0', stones[0]).replace('1', stones[1]))
print('=' * 50)
print(" Result: {}".format(count))
print('=' * 50)
print()
test(6, 2, 1, 1, 1)
test(10, 4, 2, 2, 1)
IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KCiNzdG9uZXMgPSBbICfil48nLCAn4peLJyBdCnN0b25lcyA9IFsgJ28nLCAneCcgXQpwYXR0ZXJucyA9IFsgJzAwJywgJzEwJywgJzAxJywgJzExJyBdCgpkZWYgdGVzdChuLCBhLCBiLCBjLCBkKToKCXByaW50KCc9JyAqIDUwKQoJcHJpbnQoIiBTdG9uZXM6IHt9Ii5mb3JtYXQobikpCglwcmludCgiIC0gb286IHt9LCBveDoge30sIi5mb3JtYXQoYSwgYikpCglwcmludCgiIC0geG86IHt9LCB4eDoge30iLmZvcm1hdChjLCBkKSkKCXByaW50KCc9JyAqIDUwKQoJbGluZXMgPSBbICJ7ezowe31ifX0iLmZvcm1hdChuKS5mb3JtYXQoeCkgZm9yIHggaW4gcmFuZ2UoMiAqKiBuKSBdCgljb3VudCA9IDAKCWZvciB4IGluIGxpbmVzOgoJCW1hdGNoZWQgPSBbIDAgXSAqIGxlbihwYXR0ZXJucykKCQlmb3IgeSBpbiByYW5nZSgwLCBsZW4oeCktMSk6CgkJCWZvciBpLCB6IGluIGVudW1lcmF0ZShwYXR0ZXJucyk6CgkJCQlpZiB6ID09IHhbeTp5KzJdOgoJCQkJCW1hdGNoZWRbaV0gKz0gMQoJCWlmIG1hdGNoZWQgPT0gWyBhLCBiLCBjLCBkIF06CgkJCWNvdW50ICs9IDEKCQkJcHJpbnQoJyAnLCB4LnJlcGxhY2UoJzAnLCBzdG9uZXNbMF0pLnJlcGxhY2UoJzEnLCBzdG9uZXNbMV0pKQoJcHJpbnQoJz0nICogNTApCglwcmludCgiIFJlc3VsdDoge30iLmZvcm1hdChjb3VudCkpCglwcmludCgnPScgKiA1MCkKCXByaW50KCkKCnRlc3QoNiwgMiwgMSwgMSwgMSkKdGVzdCgxMCwgNCwgMiwgMiwgMSk=