Jump to content

Pentomino tiling: Difference between revisions

Line 1,471:
YYYYLLLL</pre>
 
=={{header|Python}}==
<lang python>from itertools import product
minos = (((197123, 7, 6), (1797, 6, 7), (1287, 6, 7), (196867, 7, 6)), ((263937, 6, 6), (197126, 6, 6), (393731, 6, 6), (67332, 6, 6)),
((16843011, 7, 5), (2063, 5, 7), (3841, 5, 7), (271, 5, 7), (3848, 5, 7), (50463234, 7, 5), (50397441, 7, 5), (33686019, 7, 5)),
((131843, 7, 6), (1798, 6, 7), (775, 6, 7), (1795, 6, 7), (1543, 6, 7), (197377, 7, 6), (197378, 7, 6), (66307, 7, 6)),
((132865, 6, 6), (131846, 6, 6), (198146, 6, 6), (132611, 6, 6), (393986, 6, 6), (263938, 6, 6), (67330, 6, 6), (132868, 6, 6)),
((1039, 5, 7), (33751554, 7, 5), (16843521, 7, 5), (16974081, 7, 5), (33686274, 7, 5), (3842, 5, 7), (3844, 5, 7), (527, 5, 7)),
((1804, 5, 7), (33751297, 7, 5), (33686273, 7, 5), (16974338, 7, 5), (16843522, 7, 5), (782, 5, 7), (3079, 5, 7), (3587, 5, 7)),
((263683, 6, 6), (198148, 6, 6), (66310, 6, 6), (393985, 6, 6)),
((67329, 6, 6), (131591, 6, 6), (459266, 6, 6), (263940, 6, 6)),
((459780, 6, 6), (459009, 6, 6), (263175, 6, 6), (65799, 6, 6)),
((4311810305, 8, 4), (31, 4, 8)),
((132866, 6, 6),))
 
def show(seq):
b = [[-1]*10 for _ in range(10)]
 
for i, s in enumerate(seq):
for j, k in product(range(8), range(8)):
if s & (1<<(j*8 + k)):
b[j + 1][k + 1] = i
 
vert = ([' |'[row[i] != row[i+1]] for i in range(9)] for row in b)
hori = ([' _'[b[i+1][j] != b[i][j]] for j in range(1, 10)] for i in range(9))
 
print('\n'.join([''.join(a + b for a, b in zip(v, h)) for v, h in zip(vert, hori)]))
 
 
def tile(board, i, seq=tuple()):
if not i:
show(seq)
return
 
for c, x, y in minos[i - 1]:
for shift in (b*8 + a for a, b in product(range(x), range(y))):
if not ((cc := c<<shift) & board):
tile(board|cc, i - 1, (cc,) + seq)
 
tile(0, len(minos))</lang>
{{out}}
<pre> _ _ _ _ _ _ _
_| |_ |_ _ _|
|_ _|_ | |_| |
| |_| |_|_|_ _ _|
| | |_ _ |_|_ |
| | _ _|_| _| |
| |_| |_ _ _| | |
|_|_| | |_ |_|
|_ _ _|_ _ _|_ _|
_ _ _ _ _ _
_| |_ |_| |_ |
|_ _|_ | _| |
| |_| |_|_| |_ _|
| | |_ _ |_|_ |
| | _ _|_| _| |
| |_| |_ _ _| | |
|_|_| | |_ |_|
|_ _ _|_ _ _|_ _|
.
.
.</pre>
=={{header|Raku}}==
{{trans|Java}}
Cookies help us deliver our services. By using our services, you agree to our use of cookies.