이 과제는 MPDL ( Mondrian Painting Description Language) 의 통역사를 코딩하는 데 있습니다 .
언어 정의
언어는 사각형 스택에서 작동합니다. 사각형은 왼쪽 위 좌표와 오른쪽 아래 좌표로 정의됩니다. 좌표는 정수 여야합니다. 스택은 속성을 가진 단일 사각형으로 초기화됩니다(1,1,254,254)
각 명령의 형식은 다음과 같습니다.
<character><integer>
세 가지 명령이 있습니다.
v<integer>
: 스택의 최신 사각형에서 매개 변수로 표시된 위치 (백분율)에서 수직 분할을 수행합니다. 소스 사각형이 스택에서 제거되고 분할 결과로 생성 된 두 개의 새 사각형으로 바뀝니다. 왼쪽 사각형이 스택에서 밀린 다음 오른쪽 사각형이 밀립니다. 사각형 좌표는 정수이므로 분수는 가장 큰 작은 정수로 반올림해야합니다.
h<integer>
: 수평 분할. 맨 위 사각형이 스택에서 밀린 다음 맨 아래 사각형이 밀립니다.
c<integer>
: 스택에서 최신 직사각형을 제거하고 매개 변수로 지정된 색상으로 칠합니다. 1 = 흰색, 2 = 빨간색, 3 = 파란색, 4 = 노란색
도전
그림 설명을 매개 변수로 사용하고 그려진 사각형의 256x256 비트 맵 표현을 만드는 프로그램을 작성하십시오. 사각형은 3 픽셀의 검은 선으로 구분해야합니다. 하나 또는 두 개의 픽셀 사각형에는 검은 색이 아닌 픽셀이 검은 색 테두리로 숨겨져 있어야합니다.
입력은 매개 변수 또는 파일로 읽을 수 있습니다. 명령은 공백으로 구분해야합니다. 입력 파일에 올바른 구문이 있고 후행 또는 선행 공백, 탭 등이 없다고 가정 할 수 있습니다. 출력은 화면에 직접 표시되거나 파일에 직접 저장 될 수 있습니다.
가장 짧은 코드가 승리합니다.
테스트
다음 출처 :
v25 h71 v93 h50 c4 c1 c1 c2 h71 c3 h44 c1 c1
빨간색, 파란색 및 노란색으로 컴포지션 II를 생성해야합니다 .
v30 v50 c1 c5 h70 v50 c1 c3 c2
.
v
및h
인수 픽셀에 있어야합니다