Eu odeio o inchaço do código!
Por isso, decidi substituir meu sistema Windows 7 por uma versão com golf. No entanto, eu sei que não é fácil, então vamos construir um protótipo primeiro. Ele pega uma lista de janelas do usuário e as mostra usando uma exibição pseudo-gráfica na saída padrão.
Por exemplo: entrada do usuário:
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
O Code Golf® Window Manager ™ produz:
┌──────────────┐
│ :::::::: ┌─────┴┐
│ :::::::: │: ┌────┴┐
│ :::::::: └─┤: ┌───┴┐
│ :::::::::: └─┤ :::: ├┐
│ :::::::::::: └─┬──┘├┐
│ :::::::::::::: ├─┬─┘│
│ :::::::::::::: │ └──┘
: :::::::::::::: │
: :::::::::::::: │
└──────────────┼────┐
│ :::: │
│ :::: │
┌────┤ :::: │
│ :::: │ :::: │
└────┴────┘
Entrada:
- Retirado da entrada padrão (ou, se o seu sistema não possuir
stdin, qualquer método que possa fornecer várias linhas de entrada) - Cada linha contém 4 números, delimitados por vírgulas - coordenadas de uma janela
- Dois primeiros números: canto superior esquerdo; dois últimos números: canto inferior direito
- Usando
x,ynotação
Resultado:
- Escreva na saída padrão (ou, se o seu sistema não possuir
stdout, qualquer coisa que exiba texto monoespaçado) - Use caracteres de desenho de caixa únicos da Página de Código 437 para desenhar limites da janela
- O Windows especificado posteriormente na entrada obscurece os especificados anteriormente
- Preencha as janelas com o caractere de dois pontos:
: - Espaços à esquerda e à direita são bons, desde que não quebrem o alinhamento das janelas
Notas:
- Resolução máxima que eu quero apoiar: 76 (horizontal) por 57 (vertical)
- Não há necessidade de suportar entrada incorreta
- Número máximo de janelas: 255 (se você precisar de um limite)
- Meu
cmdshell do Windows 7 exibe os caracteres da página de código 437 por padrão; se alguém tiver uma maneira de fazer isso no linux (usandoxtermou o que for), descreva-o aqui
Para referência, os códigos de caracteres são:
┌da ─c4 ┬c2 ┐bf
│b3 :3a │b3 │b3
├c3 ─c4 ┼c5 ┤b4
└c0 ─c4 ┴c1 ┘d9
Total: 12 caracteres diferentes.
javascript:$('pre').css('line-height','1em')