4 # DO NOT SEE HERE! IT WORKED!
11 def de_scramble(self
, path_src
: str, path_dst
: str, data
: list):
12 self
.__image
_src
= Image
.open(path_src
, 'r')
14 self
.__image
_dst
.save(path_dst
)
15 self
.__image
_src
.close()
16 self
.__image
_dst
.close()
18 def __process(self
, data
: list):
19 size_src
= self
.__image
_src
.size
21 self
.__image
_dst
= Image
.new(self
.__image
_src
.mode
, size_src
)
24 x
, y
= i
['srcX'] + i
['width'], i
['srcY'] + i
['height']
25 dx
, dy
= i
['destX'] + i
['width'], i
['destY'] + i
['height']
27 c1
= i
['srcX'] < size_src
[0]
28 c2
= i
['srcX'] + i
['width'] >= 0
29 c3
= i
['srcY'] < size_src
[1]
30 c4
= i
['srcY'] + i
['height'] >= 0
31 if c1
and c2
and c3
and c4
:
32 region
= self
.__image
_src
.crop((i
['destX'], i
['destY'], dx
, dy
))
33 self
.__image
_dst
.paste(region
, (i
['srcX'], i
['srcY'], x
, y
))
36 class SundayWebryCom
: # pragma: no cover
39 def solve_by_img(self
, src
: str, element_width
: int, element_height
: int, n
: int):
43 return self
.solve(*sizes
, element_width
, element_height
, n
)
45 def solve(self
, width
: int, height
: int, element_width
: int, element_height
: int, n
: int):
67 self
.def1(f
, b
, s
, r
, a
, i
)
69 self
.def2(y
, i
, n
, a
, s
, f
, r
, g
, b
)
72 self
.def3(g
, n
, s
, a
, y
, b
, i
, r
, f
)
74 self
.def4(y
, g
, n
, r
, f
, s
, a
, i
, b
)
78 def def1(self
, f
, b
, s
, r
, a
, i
):
92 def def2(self
, y
, i
, n
, a
, s
, f
, r
, g
, b
):
94 d
= self
._calc
_x
_x
(l
, y
, n
)
95 h
= self
._calc
_y
_x
(d
, s
, a
, g
, n
)
96 c
= self
._calc
_pos
_rest
(d
, s
, f
, r
)
98 o
= self
._calc
_pos
_rest
(l
, s
, f
, r
)
100 self
._result
.append({
110 def def3(self
, g
, n
, s
, a
, y
, b
, i
, r
, f
):
112 h
= self
._calc
_y
_y
(m
, g
, n
)
113 d
= self
._calc
_x
_y
(h
, s
, a
, y
, n
)
114 p
= self
._calc
_pos
_rest
(h
, a
, b
, i
)
115 u
= self
._calc
_pos
_rest
(m
, a
, b
, i
)
116 self
._result
.append({
126 def def4(self
, y
, g
, n
, r
, f
, s
, a
, i
, b
):
129 d
= (l
+ 29 * n
+ 31 * m
) % y
130 h
= (m
+ 37 * n
+ 41 * d
) % g
131 c
= d
* r
+ (f
if d
>= self
._calc
_x
_y
(h
, s
, a
, y
, n
) else 0)
132 p
= h
* i
+ (b
if h
>= self
._calc
_y
_x
(d
, s
, a
, g
, n
) else 0)
133 o
= l
* r
+ (f
if l
>= s
else 0)
134 u
= m
* i
+ (b
if m
>= a
else 0)
135 self
._result
.append({
146 def _calc_pos_rest(e
, t
, r
, i
):
153 def _calc_x_x(e
, t
, r
):
154 return (e
+ 61 * r
) % t
157 def _calc_x_y(e
, t
, r
, i
, n
):
159 if (e
< r
and o
) or (e
>= r
and not o
):
165 return (e
+ 67 * n
+ t
+ 71) % a
+ s
168 def _calc_y_x(e
, t
, r
, i
, n
):
170 if (e
< t
and o
) or (e
>= t
and not o
):
176 return (e
+ 53 * n
+ 59 * r
) % a
+ s
179 def _calc_y_y(e
, t
, r
):
180 return (e
+ 73 * r
) % t