nota: a arte das cordas pode parecer horrível aqui por causa da estranheza da fonte SE: P :(
Dada uma lista de quatro tuplas representando os cantos dos retângulos, desenhe retângulos translúcidos um sobre o outro nessa ordem.
Para esse desafio, você deve ter a menor coordenada no canto superior esquerdo e o eixo x aumentando para a direita e o eixo y aumentando para baixo.
Uma tupla de quatro (x0, y0, x1, y1)
ou (x0, x1, y0, y1)
representa os (x, y)
pares de coordenadas dos cantos superior esquerdo e inferior direito de um retângulo (você pode escolher um dos dois formatos para retângulos, mas deve ser consistente)
O que quero dizer com "retângulo translúcido"? Bem, para esse desafio, você usará o caractere de espaço e a maioria dos caracteres de desenho de caixa ; especificamente, todos os usados para desenhar retângulos, incluindo caracteres "em negrito". Quando um retângulo translúcido é desenhado, primeiro todas as linhas finas no espaço ocupado desaparecem e todas as linhas em negrito se tornam finas e, em seguida, o próprio retângulo é desenhado em linhas em negrito.
Por exemplo, se você desenhar um retângulo na parte superior esquerda e depois na parte inferior direita, pode ser algo como isto:
┏━━━━┓
┃ ┃
┃ ┃
┃ ┏━━╇━━┓
┃ ┃ │ ┃
┗━╉──┘ ┃
┃ ┃
┃ ┃
┗━━━━━┛
Para ficar claro, as linhas são iluminadas (negrito -> fino -> nenhum) para todas as linhas estritamente dentro do retângulo (por exemplo, as linhas voltadas para baixo são afetadas pela borda superior, mas não pela borda inferior).
Casos de teste
Algum número de linhas de entrada será fornecido, seguido pela arte em Unicode, para cada caso de teste.
0 0 5 5
5 5 10 10
3 3 7 7
2 2 8 8
┏━━━━┓
┃ ┃
┃ ┏━━╇━━┓
┃ ┃┌─┴─┐┃
┃ ┃│ │┃
┗━╉┤ ├╊━┓
┃│ │┃ ┃
┃└─┬─┘┃ ┃
┗━━╈━━┛ ┃
┃ ┃
┗━━━━┛
14 5 15 9
13 2 15 16
6 4 15 11
┏━┓
┃ ┃
┏━━━━━━╇━┫
┃ │ ┃
┃ │ ┃
┃ │ ┃
┃ │ ┃
┃ │ ┃
┃ │ ┃
┗━━━━━━╈━┫
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┗━┛
6 8 10 11
15 12 16 16
14 10 16 16
9 1 15 15
┏━━━━━┓
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┏━━╉┐ ┃
┃ ┃│ ┃
┃ ┃│ ┌╊┓
┗━━╉┘ │┃┃
┃ │┠┨
┃ │┃┃
┃ │┃┃
┗━━━━╈┩┃
┗┷┛
Regras
- A entrada pode estar em qualquer formato razoável para uma lista de quatro tuplas. A entrada pode ser um indexado ou zero indexados ao longo de cada eixo (isto é, o canto superior esquerdo pode ser qualquer um de
(0, 0)
,(0, 1)
,(1, 0)
,(1, 1)
. - A saída deve ter a arte unicode conforme descrito. A saída pode não ter novas linhas iniciais e pode ter no máximo uma nova linha à direita (após a última linha). O espaço em branco à direita será ignorado para os propósitos deste desafio.
Pontos de código
Os tubos horizontais e verticais em negrito e leves estão na faixa [U+2500, U+2503]
. Os vários tubos de canto estão no intervalo [U+250C, U+251C)
. Os canos de três braços estão ao alcance [U+251C, U+253C)
. Os canos de quatro braços estão ao alcance [U+253C, U+254C)
. Os tubos restantes que podem ser encontrados no meu programa nunca são realmente usados.
Typically this uses only 95 printable (from a total of 128) characters defined by the ASCII Standard from 1963.