2011-02-02 2 views
5

오른쪽에서 왼쪽으로, 아래에서 위로 인쇄 할 수 있는지 궁금합니다 ... 다음 사각형을 인쇄하는 프로그램을 작성할 때이 생각이 들었습니다 (입력 'n', 여기 n = 4)char (개행 문자와 반대) 문자가 있습니까?

1 2 3 4 
12 13 14 5 
11 16 15 6 
10 9 8 7 

이것은 2D 배열에 저장하고 배열을 인쇄하여 여러 가지 방법으로 해결할 수 있습니다 ... (모든 언어 : Perl, C, C++, Java).

+0

왼쪽에서 오른쪽, 위 아래로 갈 수없는 이유가 있습니까? 나는 열 - 주요 인쇄 (당신은 행 메이저) 코드를 가지고 있는데, 이것은 매우 유용하다. column-major 인'ls -C'의 정상 출력을 생각해보십시오. – tchrist

+0

필자는 농담으로 '라인 굶주림'이라고 부르는 문자 시퀀스가 ​​줄 바꿈의 추정 된 역수라고 들었습니다. 그것은 확실히 단말기 의존적입니다. http://foldoc.org/line+starve –

답변

1

이 가능합니다. 그러나 기존의 회선 기반 단말기에는 없습니다. 화면 픽셀 기반을 액세스 할 때이 문제를 해결하기가 쉽습니다. 적어도 ASCII로 정의 된 실제 대응 물은 없습니다.

또는 왼쪽에서 오른쪽 및 아래에서 위로 읽는 문화권으로 터미널의 입력 방법을 변경하여 보관할 수도 있습니다.

7

긴 대답은 터미널이 지원하는 모든 것을 할 수 있다는 것입니다. 많은 종류의 터미널 (또는 "문자 출력 장치")이 있으며, 그 중 많은 수가 커서 동작을 지원합니다. (Termcap Library 프로젝트를 보면 다른 터미널 유형이하는 그림을 만들 수 있습니다.) 선을 위로 움직이게하는 터미널 명령이 있습니다. 그렇기 때문에 그렇습니다. 그렇게 할 수 있어야합니다. termcap database에 파고 후, 나는 다음과 함께했다 : 즉

$ printf "\n"; printf '\e[A'; echo Foo 
Foo 

\e[A 문자열은 당신에게 하나 개의 라인업 얻을 수있는 비 - 제로 기회가있다. 일부 터미널에서 :)

+0

빠른 CNAP 검색 결과 [Term :: Cap] (http://search.cpan.org/~jstowe/Term-Cap-1.12/Cap.pm). 나는 그것을 사용하지 않았다. – Dallaylaen

+0

아, 내 터미널 사냥에서 해결책이 단순한 이스케이프 문자열 일 필요는 없다는 것을 완전히 잊었습니다. 이 경우에는 커서 위치 지정을위한 라이브러리가 충분히 있습니다. – zoul

+0

"역행 입력"은'\ eM'입니다. – o11c

관련 문제