Un taquin sans trou

This commit is contained in:
2022-11-05 22:49:45 +01:00
parent 8be64c6155
commit c8ab2307e2
2 changed files with 134 additions and 0 deletions

134
Un taquin sans trou.py Normal file
View File

@@ -0,0 +1,134 @@
from PIL import Image
img = "m-taquin-m.png"
input = """h, 0, 23
v, 7, -10
h, 23, -18
h, 18, 3
h, 0, -19
h, 7, 8
h, 17, -12
v, 7, 4
v, 0, 24
h, 22, 3
v, 8, -15
h, 24, -3
h, 2, 0
h, 11, -2
v, 1, 22
v, 17, -17
v, 2, 11
v, 20, 15
v, 18, -12
h, 1, 18
h, 24, -6
h, 7, -18
v, 8, 5
v, 5, -1
v, 6, 18
v, 22, 19
h, 19, 16
h, 17, 22
h, 5, 5
v, 8, 16
h, 21, -4
h, 7, -22
v, 12, -7
h, 6, 12
v, 6, 17
v, 12, 17
v, 4, -8
h, 7, 23
v, 23, 13
v, 18, 1
v, 7, -16
v, 2, 24
h, 3, -15
h, 21, 3
h, 12, 0
v, 16, -8
h, 21, 22
h, 21, 10
v, 24, 17
v, 3, -6
v, 5, 5
h, 23, 22
v, 16, 24
h, 16, -18
v, 20, 8
h, 4, -1
h, 17, 9
h, 19, -4
v, 0, -17
v, 9, -9
h, 7, 12
h, 2, 22
v, 2, 24
h, 4, 18
v, 17, -14
v, 16, 14
v, 6, 10
h, 22, -5
v, 21, 17
v, 14, 9
v, 3, -9
h, 2, -3
h, 18, 11
h, 18, -10
h, 2, 21
h, 7, -20
h, 10, -20
h, 8, 18
v, 6, 10
h, 23, 12
v, 7, 6
v, 6, -18
h, 21, 3
v, 13, 2
v, 23, -21
h, 1, 1
v, 3, -9
h, 6, 10
v, 4, 3
h, 8, 5
h, 2, 4
h, 1, 17
h, 2, 24
h, 5, 2
v, 15, -11
v, 1, -14
v, 0, 0
v, 14, -6
v, 22, 22
v, 4, -12"""
bandelettes = 25
img = Image.open(img)
width, height = img.size
bandelette_largeur = width//bandelettes
img_h = Image.new(img.mode, (width, bandelette_largeur))
img_v = Image.new(img.mode, (bandelette_largeur, height))
for move in input.split("\n")[::-1]:
move_type, move_band, move_size = move.replace(" ", "").split(",")
print(move_type, move_band, move_size)
move_band = int(move_band)
move_size = (-int(move_size))%bandelettes
if move_type == "h":
region1 = img.crop((width - move_size*bandelette_largeur, move_band*bandelette_largeur, width, (move_band+1)*bandelette_largeur))
region2 = img.crop((0, move_band*bandelette_largeur, width - move_size*bandelette_largeur, (move_band+1)*bandelette_largeur))
img.paste(region1, (0, move_band*bandelette_largeur))
img.paste(region2, (move_size*bandelette_largeur, move_band*bandelette_largeur))
else:
region1 = img.crop((move_band*bandelette_largeur, height - move_size*bandelette_largeur, (move_band+1)*bandelette_largeur, height))
region2 = img.crop((move_band*bandelette_largeur, 0, (move_band+1)*bandelette_largeur, height - move_size*bandelette_largeur))
img.paste(region1, (move_band*bandelette_largeur, 0))
img.paste(region2, (move_band*bandelette_largeur, move_size*bandelette_largeur))
img.show()