Есть ли какой-либо (противоположный символу новой строки) символ? - PullRequest
5 голосов
/ 02 февраля 2011

Интересно, можем ли мы печатать справа налево, снизу вверх ... У меня возникла эта мысль при попытке написать программу для печати следующего квадрата (для ввода 'n', здесь n = 4)

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

Эту проблему можно решить многими способами: сохранить в 2D-массив и распечатать массив ... (на любом языке: Perl, C, C ++, Java).

Ответы [ 2 ]

7 голосов
/ 02 февраля 2011

Длинный ответ: вы можете делать все, что поддерживает терминал.Существует много видов терминалов (или «устройств вывода символов»), многие из которых поддерживают движения курсора.(Вы можете увидеть проект Termcap Library , чтобы создать картину того, что делают разные типы терминалов.) Существует команда терминала для перемещения вверх по линии, поэтому, по сути, да, вы должны это сделать.После поиска в базе данных termcap я обнаружил следующее:

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

Другими словами, строка \e[A имеет ненулевой шанс получить вам одну строчку вверх,На некоторых терминалах:)

1 голос
/ 02 февраля 2011

Baiscly это возможно. Но не на традиционном линейном терминале. При доступе к экрану на пиксельной основе довольно легко решить эту проблему. По крайней мере, в ASCII не определен реальный аналог \ n.

Или, может быть, это можно заархивировать, изменив метод ввода терминала на какой-нибудь язык, который читает слева направо и снизу вверх.

...