2011-02-02 26 views
5

Đã tự hỏi liệu chúng ta có thể in từ phải sang trái, từ dưới lên trên ... Tôi có suy nghĩ này khi cố gắng viết chương trình in hình vuông sau (cho đầu vào 'n', tại đây n = 4)Có char nào (đối diện với dòng mới) không?

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

Điều này có thể được giải quyết bằng nhiều cách, bằng cách lưu trữ vào mảng 2D và in mảng ... (Bất kỳ ngôn ngữ nào: Perl, C, C++, Java).

+0

Có lý do nào khiến bạn không thể đi từ trái sang phải, từ trên xuống dưới không? Tôi có mã mà in cột lớn (bạn làm hàng-lớn), mà là khá hữu ích. Hãy suy nghĩ về đầu ra bình thường của 'ls -C', là cột lớn. – tchrist

+0

Tôi đã nghe một chuỗi ký tự như vậy được gọi là một 'dòng đói' như được coi là nghịch đảo của một nguồn cấp dữ liệu dòng. Nó chắc chắn phụ thuộc vào thiết bị đầu cuối mặc dù. http://foldoc.org/line+starve –

Trả lời

1

Baiscly điều này là có thể. Nhưng không phải trên một thiết bị đầu cuối dựa trên dòng truyền thống. Khi truy cập vào màn hình dựa trên pixel, nó khá dễ dàng để giải quyết vấn đề này. Ít nhất không có đối tác thực sự nào được định nghĩa trong ASCII.

Hoặc có thể điều này có thể được lưu trữ bằng cách thay đổi phương thức nhập của thiết bị đầu cuối sang một số nền văn hóa đọc từ trái sang phải và từ dưới lên trên.

7

Câu trả lời dài là bạn có thể làm bất cứ điều gì mà thiết bị đầu cuối hỗ trợ. Có nhiều loại thiết bị đầu cuối (hoặc “thiết bị đầu ra ký tự”), nhiều trong số chúng hỗ trợ chuyển động của con trỏ. (Bạn có thể thấy dự án Termcap Library để tạo ra một hình ảnh mà các loại thiết bị đầu cuối khác nhau làm.) Có một lệnh thiết bị đầu cuối để di chuyển lên một dòng, do đó, có thể có, bạn sẽ có thể thực hiện điều đó. Sau khi đâm vào termcap database, tôi đã đưa ra những điều sau đây:

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

Nói cách khác, chuỗi \e[A có một-không không có cơ hội để giúp bạn có một dòng lên. Trên một số thiết bị đầu cuối :)

+0

Tìm kiếm CNAP nhanh chóng được tìm thấy [Thuật ngữ :: Cap] (http://search.cpan.org/~jstowe/Term-Cap-1.12/Cap.pm). Tôi đã không sử dụng nó mặc dù. – Dallaylaen

+0

À vâng, trong cuộc săn đầu cuối của tôi, tôi hoàn toàn quên rằng giải pháp không phải là một chuỗi thoát đơn giản. Trong trường hợp đó, có rất nhiều thư viện chắc chắn sẽ định vị con trỏ cho bạn. – zoul

+0

"nguồn cấp dữ liệu ngược dòng" là '\ eM' – o11c

Các vấn đề liên quan