다음은 책의 ASCII 표현입니다.
|\
| \
| \
| \
| \__________
| || |
| || Lorem i |
\ || psum do |
\ || lor sit |
\ || amet, |
\ || consect |
\||_________|
텍스트 부분은 오른쪽 페이지에만 있으며 7 자 x 5 자입니다. 또한 책의 상단 가장자리에는 5 개의 백 슬래시와 10 개의 밑줄이 있습니다. 10은 텍스트 너비에 3을 더한 값이고 5는 10의 절반입니다.
우리는 책의 크기를 조정할 수있는 동일한 확장 형식을 사용하면 텍스트 영역이하는 w 다양한 문자와 시간의 경우, 높은 승 어떤이다 홀수 양의 정수와 시간은 양의 정수입니다.
일부 w × h 책 : 1 × 1, 1 × 2, 3 × 2
|\
|\ | \
|\ | \____ | \______
| \____ | || | | || |
| || | | || L | \ || Lor |
\ || L | \ || o | \ || em |
\||___| \||___| \||_____|
맨 밑줄 수는 항상 w +3이고 백 슬래시 수는 항상 ( w +3) / 2입니다.
골
파일 이름과 w 및 h 를 명령 줄 인수로 사용하고 해당 텍스트 크기의 책을 표준 출력으로 출력하여 파일의 내용을 표시하는 프로그램을 작성하십시오.
파일에 한 페이지에 들어갈 수있는 것보다 더 많은 텍스트가 N
있으면 키는 다음 페이지를 인쇄하고 페이지를 B
다시 이동해야합니다. B
첫 페이지 N
에서을 누르 거나 마지막 페이지에서을 누르면 아무 일도 일어나지 않습니다 . Q
키를 누르면 프로그램이 중지됩니다 .
예
f.txt
포함 Lorem ipsum dol?
하고 사용자가 키 시퀀스를 눌렀다 고 가정하십시오 N N B N N Q
. 프로그램은 다음과 같이 실행되어야합니다.
>>> bookmaker f.txt 3 2
|\
| \
| \______
| || |
\ || Lor |
\ || em |
\||_____|
|\
| \
| \______
| || |
\ || ips |
\ || um |
\||_____|
|\
| \
| \______
| || |
\ || dol |
\ || ? |
\||_____|
|\
| \
| \______
| || |
\ || ips |
\ || um |
\||_____|
|\
| \
| \______
| || |
\ || dol |
\ || ? |
\||_____|
>>>
모든 책 뒤에 줄 바꿈이 있으며 뒤에 공백이 없습니다. 필수입니다.
노트
- 파일에 인쇄 가능한 ASCII 문자 (16 진 20-7E) 만 포함되어 있다고 가정 할 수 있습니다 .
- 단어 경계에 상관없이 사용 가능한 각 지점에서 한 문자를 인쇄하십시오.
- w 와 h 는 각각 기본적으로 7과 5 인 선택적 인수입니다. 당신의 프로그램은 둘 다 또는 둘 다 주어지지 않을 것입니다. (입력이 항상 잘 구성되어 있다고 가정 할 수 있습니다.)
- 마지막 페이지의 빈 텍스트 공간을 공백으로 채 웁니다.
Q
한 페이지 만 있으면 여전히 종료해야합니다.
승리
보너스가 적용된 후 가장 짧은 바이트 단위의 프로그램이 승리합니다.
보너스
- 모든 행이 단어 (또는 단어 세그먼트)로 시작하도록 선행 공백을 제거하십시오. 예
| amet, |
를 들어 첫 번째 예 에서는| amet, c |
. (-30 바이트) - 후 이전에 그려진 책의 화면을 취소
N
하거나B
누를 때 (그리고T
이 후 보너스를 할 경우) 자리에 변화하는 페이지와 같은 책 외모 때문에. (-20 바이트) T
왼쪽에서 오른쪽으로 위에서 아래로 (기본값), 위에서 아래로 왼쪽에서 오른쪽으로 텍스트가 전환 되도록 키를 즉시 설정합니다. 첫 번째 보너스를 한 경우 상단에서 하단 모드의 열에 적용됩니다. (-100 바이트)예를 들어 :
|\ | \ | \______ | || | \ || Lor | \ || em | \||_____|
된다
|\ | \ | \______ | || | \ || Lrm | \ || oe | \||_____|
\033[2J\033[;H