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,y
notaçã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
cmd
shell 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 (usandoxterm
ou 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')