변경이력

돌아가기
11 689개 문자 추가 689개 문자 삭제

2015/04/29 07:57

BangC

파이선으로 변수선언 말고는 한줄코드 추가합니다. ```{.python} w = 6 h = 9 Margin = lambda x, half: half - abs(half - x - 0.5) - 0.5 MinMargin = lambda x, y: min(Margin(x, w / 2.0), Margin(y, h / 2.0)) StartBase = lambda x: (w * h) - ((w - x * 2) * (h - x * 2)) Offset1 = lambda x, y, m:(x - m, y - m, w - m * 2, h - m * 2) Offset2 = lambda x: x[0] + x[1] if x[1] == 0 or x[0] == (x[2] - 1) else (x[2] * 2 + x[3] * 2 - 4) - (x[0] + x[1]) print '\n'.join([''.join(['%4d' % m for m in [Offset2(Offset1(x, y, MinMargin(x, y))) + StartBase(MinMargin(x, y)) for y in range(h) for x in range(w)][n * w : (n + 1) * w]]) for n in range(h)]) ``` python 2.7.6 -------------------------------------- 저장하지않고 자리에 맞는 숫자를 한번에 출력합니다. ```{.cpp} #include <algorithm> #include <iomanip> int _tmain(int argc, _TCHAR* argv[]) { int iWidth = 6; int iHeight = 9; for (int ixPosY = 0; ixPosY < iHeight; ++ixPosY) { for (int ixPosX = 0; ixPosX < iWidth; ++ixPosX) { int iMinMargin = std::min(std::min(ixPosY, (iWidth - 1) - ixPosX), std::min((iHeight - 1) - ixPosY, ixPosX)); int iInnerBoxIndex = iWidth * iHeight - ((iWidth - iMinMargin * 2) * (iHeight - iMinMargin * 2)); int iInnerBoxWidth = iWidth - iMinMargin * 2; int iInnerBoxHeight = iHeight - iMinMargin * 2; int iNowNumber = 0; if (ixPosY == iMinMargin || ixPosX == (iInnerBoxWidth - 1) + iMinMargin) { iNowNumber = iInnerBoxIndex + ixPosX + ixPosY - iMinMargin * 2; } else { iNowNumber = iInnerBoxIndex + iInnerBoxWidth * 2 + iInnerBoxHeight * 2 - 4 - (ixPosX + ixPosY - iMinMargin * 2); } std::cout << std::setw(4) << iNowNumber; } std::cout << std::endl; } system("pause"); return 0; } ``` -------------------------------------- 파이선으로 변수선언 말고는 한줄코드 추가합니다. ```{.python} w = 6 h = 9 Margin = lambda x, half: half - abs(half - x - 0.5) - 0.5 MinMargin = lambda x, y: min(Margin(x, w / 2.0), Margin(y, h / 2.0)) StartBase = lambda x: (w * h) - ((w - x * 2) * (h - x * 2)) Offset1 = lambda x, y, m:(x - m, y - m, w - m * 2, h - m * 2) Offset2 = lambda x: x[0] + x[1] if x[1] == 0 or x[0] == (x[2] - 1) else (x[2] * 2 + x[3] * 2 - 4) - (x[0] + x[1]) print '\n'.join([''.join(['%4d' % m for m in [Offset2(Offset1(x, y, MinMargin(x, y))) + StartBase(MinMargin(x, y)) for y in range(h) for x in range(w)][n * w : (n + 1) * w]]) for n in range(h)]) ``` python 2.7.6
파이선으로 변수선언 말고는 한줄코드 추가합니다. ```{.python} w = 6 h = 9 Margin = lambda x, half: half - abs(half - x - 0.5) - 0.5 MinMargin = lambda x, y: min(Margin(x, w / 2.0), Margin(y, h / 2.0)) StartBase = lambda x: (w * h) - ((w - x * 2) * (h - x * 2)) Offset1 = lambda x, y, m:(x - m, y - m, w - m * 2, h - m * 2) Offset2 = lambda x: x[0] + x[1] if x[1] == 0 or x[0] == (x[2] - 1) else (x[2] * 2 + x[3] * 2 - 4) - (x[0] + x[1]) print '\n'.join([''.join(['%4d' % m for m in [Offset2(Offset1(x, y, MinMargin(x, y))) + StartBase(MinMargin(x, y)) for y in range(h) for x in range(w)][n * w : (n + 1) * w]]) for n in range(h)]) ``` python 2.7.6 -------------------------------------- 저장하지않고 자리에 맞는 숫자를 한번에 출력합니다. ```{.cpp} #include <algorithm> #include <iomanip> int _tmain(int argc, _TCHAR* argv[]) { int iWidth = 6; int iHeight = 9; for (int ixPosY = 0; ixPosY < iHeight; ++ixPosY) { for (int ixPosX = 0; ixPosX < iWidth; ++ixPosX) { int iMinMargin = std::min(std::min(ixPosY, (iWidth - 1) - ixPosX), std::min((iHeight - 1) - ixPosY, ixPosX)); int iInnerBoxIndex = iWidth * iHeight - ((iWidth - iMinMargin * 2) * (iHeight - iMinMargin * 2)); int iInnerBoxWidth = iWidth - iMinMargin * 2; int iInnerBoxHeight = iHeight - iMinMargin * 2; int iNowNumber = 0; if (ixPosY == iMinMargin || ixPosX == (iInnerBoxWidth - 1) + iMinMargin) { iNowNumber = iInnerBoxIndex + ixPosX + ixPosY - iMinMargin * 2; } else { iNowNumber = iInnerBoxIndex + iInnerBoxWidth * 2 + iInnerBoxHeight * 2 - 4 - (ixPosX + ixPosY - iMinMargin * 2); } std::cout << std::setw(4) << iNowNumber; } std::cout << std::endl; } system("pause"); return 0; } ``` -------------------------------------- 파이선으로 변수선언 말고는 한줄코드 추가합니다. ```{.python} w = 6 h = 9 Margin = lambda x, half: half - abs(half - x - 0.5) - 0.5 MinMargin = lambda x, y: min(Margin(x, w / 2.0), Margin(y, h / 2.0)) StartBase = lambda x: (w * h) - ((w - x * 2) * (h - x * 2)) Offset1 = lambda x, y, m:(x - m, y - m, w - m * 2, h - m * 2) Offset2 = lambda x: x[0] + x[1] if x[1] == 0 or x[0] == (x[2] - 1) else (x[2] * 2 + x[3] * 2 - 4) - (x[0] + x[1]) print '\n'.join([''.join(['%4d' % m for m in [Offset2(Offset1(x, y, MinMargin(x, y))) + StartBase(MinMargin(x, y)) for y in range(h) for x in range(w)][n * w : (n + 1) * w]]) for n in range(h)]) ``` python 2.7.6
10 689개 문자 추가 9개 문자 삭제

2015/04/29 07:57

BangC

9 1개 문자 추가 1개 문자 삭제

2015/04/29 07:43

BangC

8 2개 문자 추가 6개 문자 삭제

2015/04/29 07:41

BangC

7 405개 문자 추가 1218개 문자 삭제

2015/04/29 07:41

BangC

6 7개 문자 추가

2015/04/29 02:00

BangC

5 4개 문자 삭제

2015/04/29 01:58

BangC

4 50개 문자 추가

2015/04/29 01:54

BangC

3 18개 문자 추가 19개 문자 삭제

2015/04/29 01:31

BangC

2 28개 문자 추가

2015/04/29 01:30

BangC

1 Original

2014/03/04 12:45

BangC

코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.