Я ненавижу раздувание кода!
Поэтому я решил заменить свою систему Windows 7 на версию для гольфа. Однако я знаю, что это нелегко, поэтому давайте сначала создадим прототип. Он возьмет список окон у пользователя и покажет их с помощью псевдографического дисплея на стандартном выходе.
Например: пользовательский ввод:
0,0,15,10 15,10,20,15 10,13,15,15 9,1,16,3 17,5,20,7 11,2,17,4 15,4,19,6 13,3,18,5
Выходы Code Golf® Window Manager ™:
┌──────────────┐ │ :::::::: ┌─────┴┐ │ │ ::::::::: ┌────┴┐ │ :::::::: └─┤: ┌───┴┐ │ :::::::::: └─┤ :::: ├┐ │ :::::::::::: └─┬──┘├┐ │ :::::::::::::: ├─┬─┘│ │ :::::::::::::: │ └──┘ │ │ :::::::::::::: │ │ :::::::::::::: └──────────────┼────┐ │ │ :::: │ │ :::: ┌────┤ :::: │ │ │ :::: :::: │ └────┴────┘
Входные данные:
- Взяты из стандартного ввода (или, если ваша система не имеет
stdin
, любой метод, который может обеспечить несколько строк ввода) - Каждая строка содержит 4 числа, разделенных запятыми - координаты окна
- Первые два числа: левый верхний угол; последние два числа: нижний правый угол
- Использование
x,y
обозначений
Выход:
- Запишите его в стандартный вывод (или, если ваша система не имеет
stdout
, что-нибудь, что отображает моноширинный текст) - Используйте одиночные символы рисования рамки из кодовой страницы 437 для рисования границ окна
- Окна, указанные позже во входных данных, скрывают указанные ранее
- Заполните окна символом двоеточия:
:
- Начальные и конечные пробелы в порядке, если они не нарушают выравнивание окон
Примечания:
- Максимальное разрешение, которое я хочу поддерживать: 76 (горизонтальное) на 57 (вертикальное)
- Не нужно поддерживать плохой ввод
- Максимальное количество окон: 255 (если вам нужен лимит)
- Моя
cmd
оболочка Windows 7 отображает кодовую страницу 437 символов по умолчанию; если у кого-то есть способ сделать это на Linux (используяxterm
или что-то еще), пожалуйста, опишите это здесь
Для справки, коды символов:
┌da ─c4 ┬c2 ┐bf
│b3 :3a │b3 │b3
├c3 ─c4 ┼c5 ┤b4
└c0 ─c4 ┴c1 ┘d9
Всего: 12 разных персонажей.
javascript:$('pre').css('line-height','1em')