Last active
October 11, 2018 12:57
-
-
Save yuitest/b8d2a72af41e8506416280d6d221e820 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#patterns = 160 | |
--- | |
BAC | |
BBA | |
BAA | |
--- | |
ABA | |
BCB | |
ABA | |
--- | |
BBA | |
CBB | |
AAA | |
--- | |
ABB | |
BBA | |
CAA | |
--- | |
ABA | |
ABB | |
CAB | |
--- | |
AAB | |
BAC | |
BAB | |
--- | |
ACA | |
BBB | |
ABA | |
--- | |
CBB | |
AAB | |
BAA | |
--- | |
ABB | |
ABA | |
ACB | |
--- | |
BAA | |
ABB | |
CAB | |
--- | |
BCB | |
AAB | |
AAB | |
--- | |
ABB | |
BBC | |
AAA | |
--- | |
ACB | |
AAB | |
BBA | |
--- | |
ACB | |
AAA | |
BBB | |
--- | |
BCB | |
ABA | |
AAB | |
--- | |
ABB | |
CBB | |
AAA | |
--- | |
BBC | |
BAA | |
BAA | |
--- | |
ABA | |
BBA | |
CBA | |
--- | |
CBA | |
ABA | |
BBA | |
--- | |
BAB | |
CBA | |
AAB | |
--- | |
BBB | |
BAC | |
AAA | |
--- | |
CBA | |
ABA | |
BAB | |
--- | |
BAA | |
ACB | |
ABB | |
--- | |
AAB | |
BCA | |
BAB | |
--- | |
ACB | |
BAA | |
ABB | |
--- | |
ABC | |
BAA | |
ABB | |
--- | |
BAA | |
BBB | |
AAC | |
--- | |
BAB | |
BAA | |
BCA | |
--- | |
BBA | |
BBA | |
AAC | |
--- | |
AAB | |
CAB | |
BBA | |
--- | |
BAC | |
BAB | |
ABA | |
--- | |
BCA | |
ABA | |
BAB | |
--- | |
AAB | |
AAB | |
BCB | |
--- | |
BBB | |
ABC | |
AAA | |
--- | |
BAA | |
BBA | |
CAB | |
--- | |
ABC | |
ABB | |
AAB | |
--- | |
BBA | |
ABB | |
ACA | |
--- | |
BBB | |
CBA | |
AAA | |
--- | |
AAA | |
ABB | |
BCB | |
--- | |
ABA | |
BBB | |
CAA | |
--- | |
ABA | |
BBC | |
AAB | |
--- | |
ACB | |
BAB | |
AAB | |
--- | |
AAA | |
BCB | |
BBA | |
--- | |
AAB | |
BAA | |
BCB | |
--- | |
CAA | |
BBB | |
BAA | |
--- | |
BBA | |
AAB | |
BAC | |
--- | |
BCB | |
BAA | |
ABA | |
--- | |
BCB | |
AAB | |
ABA | |
--- | |
BCA | |
BBA | |
AAB | |
--- | |
BAB | |
ACA | |
BAB | |
--- | |
BAC | |
BAB | |
AAB | |
--- | |
ACA | |
ABB | |
BBA | |
--- | |
CBA | |
BAA | |
ABB | |
--- | |
BAA | |
CAB | |
BAB | |
--- | |
ABA | |
ABB | |
ABC | |
--- | |
ABA | |
ABC | |
BAB | |
--- | |
BCB | |
ABB | |
AAA | |
--- | |
BAA | |
BAA | |
BBC | |
--- | |
ACB | |
ABB | |
BAA | |
--- | |
BCA | |
ABA | |
ABB | |
--- | |
BBC | |
BAB | |
AAA | |
--- | |
ABC | |
ABA | |
BAB | |
--- | |
ABA | |
BBA | |
CAB | |
--- | |
BBA | |
BAC | |
AAB | |
--- | |
BBA | |
ACA | |
ABB | |
--- | |
CAB | |
ABB | |
BAA | |
--- | |
BBA | |
ABA | |
CBA | |
--- | |
BAA | |
AAB | |
BBC | |
--- | |
ABA | |
CAB | |
ABB | |
--- | |
CAB | |
AAA | |
BBB | |
--- | |
BAB | |
AAB | |
ABC | |
--- | |
BBC | |
AAA | |
ABB | |
--- | |
AAB | |
ACA | |
BBB | |
--- | |
BBA | |
CAA | |
ABB | |
--- | |
ABA | |
CBA | |
BAB | |
--- | |
BAA | |
BCB | |
AAB | |
--- | |
ABA | |
BAC | |
ABB | |
--- | |
BBA | |
BAB | |
CAA | |
--- | |
ABC | |
ABB | |
BAA | |
--- | |
BBA | |
ABC | |
BAA | |
--- | |
BCB | |
ABA | |
ABA | |
--- | |
ABB | |
BAA | |
BAC | |
--- | |
BBB | |
BAA | |
AAC | |
--- | |
BBA | |
BCB | |
AAA | |
--- | |
BBA | |
CAA | |
BBA | |
--- | |
ABC | |
BBA | |
AAB | |
--- | |
BAA | |
BBB | |
ACA | |
--- | |
BBA | |
AAA | |
BBC | |
--- | |
ABB | |
AAB | |
CBA | |
--- | |
BAB | |
BCA | |
ABA | |
--- | |
ACA | |
BAA | |
BBB | |
--- | |
ABA | |
BBA | |
ACB | |
--- | |
BBA | |
ACB | |
ABA | |
--- | |
BAA | |
BBC | |
BAA | |
--- | |
AAB | |
CAB | |
BAB | |
--- | |
BCB | |
ABA | |
BAA | |
--- | |
ABA | |
ABA | |
BBC | |
--- | |
ACB | |
BAA | |
BAB | |
--- | |
ABB | |
ABA | |
BCA | |
--- | |
BCA | |
BAB | |
BAA | |
--- | |
ABA | |
CAB | |
BBA | |
--- | |
BAB | |
AAC | |
BBA | |
--- | |
BAB | |
ABB | |
CAA | |
--- | |
ABB | |
BAA | |
CBA | |
--- | |
CAB | |
BAA | |
BAB | |
--- | |
AAB | |
CAA | |
BBB | |
--- | |
BAB | |
ACA | |
BBA | |
--- | |
BAA | |
BCB | |
BAA | |
--- | |
AAB | |
BBB | |
CAA | |
--- | |
ABA | |
CBA | |
BBA | |
--- | |
ABB | |
ABB | |
ACA | |
--- | |
BCA | |
BAB | |
AAB | |
--- | |
ABB | |
CBA | |
AAB | |
--- | |
BAA | |
AAB | |
BCB | |
--- | |
ABC | |
AAA | |
BBB | |
--- | |
ABA | |
BAB | |
CBA | |
--- | |
ABB | |
CBA | |
BAA | |
--- | |
BAB | |
BAA | |
ABC | |
--- | |
BBA | |
ABB | |
AAC | |
--- | |
CAB | |
AAB | |
ABB | |
--- | |
ABB | |
CAB | |
BAA | |
--- | |
BBB | |
ABA | |
CAA | |
--- | |
ABC | |
BBA | |
ABA | |
--- | |
BBA | |
ABA | |
BCA | |
--- | |
BAB | |
CAA | |
BAB | |
--- | |
AAB | |
ACB | |
BBA | |
--- | |
BAB | |
AAA | |
BBC | |
--- | |
CBB | |
ABB | |
AAA | |
--- | |
BAC | |
BAB | |
BAA | |
--- | |
AAB | |
ABB | |
BAC | |
--- | |
BBA | |
ABC | |
AAB | |
--- | |
ABB | |
ABB | |
AAC | |
--- | |
AAC | |
ABB | |
BAB | |
--- | |
AAC | |
BBA | |
ABB | |
--- | |
BAC | |
AAA | |
BBB | |
--- | |
ABA | |
BCB | |
AAB | |
--- | |
ACB | |
AAB | |
ABB | |
--- | |
BBB | |
BAA | |
ACA | |
--- | |
BBA | |
CBA | |
ABA | |
--- | |
AAB | |
ABA | |
CBB | |
--- | |
CAB | |
BAA | |
BBA | |
--- | |
BBC | |
AAB | |
AAB | |
--- | |
CAA | |
ABB | |
BAB | |
--- | |
ABA | |
BAA | |
CBB | |
--- | |
BAB | |
BAB | |
AAC | |
--- | |
BBA | |
ABC | |
ABA | |
--- | |
CBB | |
BAA | |
ABA | |
--- | |
BBA | |
BCA | |
BAA | |
--- | |
AAB | |
ACB | |
BAB | |
--- | |
BBA | |
ACA | |
BBA | |
--- | |
ABA | |
AAB | |
CBB | |
--- | |
BAB | |
ABA | |
CAB | |
--- | |
AAC | |
BAB | |
BBA | |
--- | |
CBB | |
BAB | |
AAA | |
--- | |
BBA | |
ACB | |
BAA | |
--- | |
AAB | |
ABB | |
ABC | |
--- | |
BBA | |
BAB | |
ACA | |
--- | |
BBB | |
BCA | |
AAA | |
--- | |
ABB | |
BAA | |
ACB | |
--- | |
BBA | |
AAC | |
BBA |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import enum | |
import itertools | |
class Tile(enum.Enum): | |
A = 'A' | |
B = 'B' | |
C = 'C' | |
def __str__(self): | |
return self.value | |
def spin_3x3tiles(tiles): | |
( | |
a, b, c, | |
d, e, f, | |
g, h, i, | |
) = tiles | |
spinned = ( | |
g, d, a, | |
h, e, b, | |
i, f, c, | |
) | |
return spinned | |
def all_spinning_patterns(tiles): | |
deg0 = tiles | |
deg90 = spin_3x3tiles(deg0) | |
deg180 = spin_3x3tiles(deg90) | |
deg270 = spin_3x3tiles(deg180) | |
return frozenset({deg0, deg90, deg180, deg270}) | |
def tiles_to_string(tiles): | |
( | |
a, b, c, | |
d, e, f, | |
g, h, i, | |
) = tiles | |
return f'{a}{b}{c}\n{d}{e}{f}\n{g}{h}{i}' | |
def permutation_of_duplicate_items(*items): | |
for i, item in enumerate(items): | |
count, value = item | |
if count < 1: | |
continue | |
if count == 1: | |
remains = (*items[0:i], *items[i + 1:]) | |
else: | |
remains = (*items[0:i], (count - 1, value), *items[i + 1:]) | |
if not remains: | |
yield (value,) | |
continue | |
for values_from_remains in permutation_of_duplicate_items(*remains): | |
yield (value, *values_from_remains) | |
def make_3x3_tiles_from_9_tiles(line_tiles): | |
a, b, c, d, e, f, g, h, i = line_tiles | |
return ( | |
a, b, c, | |
d, e, f, | |
g, h, i, | |
) | |
def main(): | |
all_tiles_patterns = (make_3x3_tiles_from_9_tiles(v) | |
for v in permutation_of_duplicate_items((4, Tile.A), | |
(4, Tile.B), | |
(1, Tile.C))) | |
every_pattern = frozenset(all_spinning_patterns(tiles) | |
for tiles in all_tiles_patterns) | |
answer = len(every_pattern) | |
print(f'#patterns = {answer}') | |
for group_of_tiles in every_pattern: | |
tiles = list(group_of_tiles)[0] | |
print(f'---\n{tiles_to_string(tiles)}') | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment