puzzler.py : ์ด๋ฏธ์ง๋ฅผ M x N์ผ๋ก ์กฐ๊ฐ๋ด์ด mirror, flip, rotation(90๋ ๋๋ 270๋)์ 0.5์ ํ๋ฅ ๋ก ๋ณํํ ๋ค ์
ํํ๋ค.
unpuzzler.py : ์์ธ ์ด๋ฏธ์ง๋ฅผ ์ํ์ข์ฐ๋ฉด์ ํฝ์
๊ฐ์ ๋น๊ตํ์ฌ ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ฌํํ๋ค.
M, N ํฌ๊ธฐ๋ก ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ์กฐ๊ฐ๋ด์ mirror โ flip โ rotation ์์๋ก 0.5์ ํ๋ฅ ๋ก ๋ณํ ํจ๊ณผ๋ฅผ ์ฃผ๊ณ , ์กฐ๊ฐ์ ์์๋ฅผ ์๋๋ค. ์ด๋ฏธ์ง๋ {image_file_name}_puzzle.png์ ์ด๋ฆ์ผ๋ก ์ ์ฅ๋๋ค.
[usage]: python puzzler.py image_file_name M N
[example]: $ python puzzler.py lenna.png 3 3
- ์กฐ๊ฐ์ ๋ณํ์ 8๊ฐ์ง์ ๊ฒฝ์ฐ์ ์๊ฐ ๋์ค๋๋ฐ, ๊ฐ ์กฐ๊ฐ์ 8๊ฐ์ง ๊ฒฝ์ฐ์ ์ํ์ข์ฐ ํฝ์ ๊ฐ์ ๋น๊ตํ๊ณ threshold๋ฅผ ์ฃผ์ด ๊ฐ์ฅ ์ด์ํ ์กฐ๊ฐ์ ์ ๋ณํ๋ค.
- 0๋ฒ์งธ ์กฐ๊ฐ์ ๊ธฐ์ค ์กฐ๊ฐ์ผ๋ก ์์ํด์ ์์ ๊ตฌํ ์ด์ํ ์กฐ๊ฐ ์์๋ก ์ฐจ๋ก๋ก ์์ ๊ณผ์ ์ ํ๋ฒ ๋ ์งํํ๋ค.
(์) 0๋ฒ ์กฐ๊ฐ์ ์ด์ํ ์กฐ๊ฐ์ด 3๊ณผ 5๋ฒ์ด๋ผ๋ฉด, ๋ค์ ๋น๊ต ๊ธฐ์ค์ 3๋ฒ ์กฐ๊ฐ, 5๋ฒ ์กฐ๊ฐ ์์๋ก ๋น๊ต๋ฅผ ์งํ - ๊ธฐ์ค ์กฐ๊ฐ๊ณผ ๋น๊ต ์กฐ๊ฐ ๊ฐ์ ๋ณํ ๊ด๊ณ๋ฅผ ๊ตฌํ ๋ค์ ๊ธฐ์ค ์กฐ๊ฐ์ ์ค์ฌ์ผ๋ก ๋น๊ต ์กฐ๊ฐ์ ๋ณํ์ํจ๋ค.
- ๋ชจ๋ ์กฐ๊ฐ์ ์ด์ํ ์กฐ๊ฐ์ ๊ตฌํ๋ฉด ์ข์๋จ์ ์กฐ๊ฐ๋ถํฐ ์ ํ ๋ค์ ๊ทธ ์กฐ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ด์ํ ์กฐ๊ฐ์ ๋ฐ๋ผ๊ฐ๋ฉฐ ํผ์ฆ ์กฐ๊ฐ์ ๋ง์ถ๋ค.
[usage]: python unpuzzler.py file_name M N
[example]: $ python unpuzzler.py lenna_puzzle.png 3 3
ํ์ฌ 2 x 2, 3 x 3์ ๋ํด์๋ง ํ
์คํธ๋ฅผ ์๋ฃ ํ ์ํ์ด๊ณ , ์ด๋ฏธ์ง๊ฐ 1:1 ๋น์จ์ด ์๋ ๋ค๋ฅธ ์ด๋ฏธ์ง ๋น์จ์ ๋ํด์๋ ์ ํํ๊ฒ ๋์ํ์ง ์๋ ์ํ์ด๋ค.
1:1 ๋น์จ์ด ์๋ ๋ค๋ฅธ ๋น์จ์ ์ด๋ฏธ์ง์ ์ ์ฉํ๊ธฐ ์ํด์๋ ๋ชจ๋ ์กฐ๊ฐ์ ๊ฐ๋ก ์ธ๋ก ํฝ์
์ ๋์ผํ๊ฒ ํด์ผํ๋ค. ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํด์๋ rotation ํจ๊ณผ๊ฐ ์ ์ฉ๋ ์กฐ๊ฐ๋ค์ ํ๋ฐฉํฅ์ผ๋ก (์: 90๋) ํ์ ์์ผ ๊ฐ๋ก ์ธ๋ก ํฝ์
์ ๋์ผํ๊ฒ ๋ง์ถ ๋ค ์์ ๊ณผ์ ์ ์งํํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํด ๋ณผ ์ ์๋ค.

