Dada apenas uma régua e uma bússola, inscreva um losango dentro do retângulo, compartilhando dois pontos opostos.
Entrada
Entrada é as dimensões do retângulo. No exemplo mostrado, isso seria 125, 50
. Você pode receber entradas da maneira que for mais conveniente (como dois números inteiros, lista, seqüências de caracteres, etc.).
A dimensão maior será no mínimo 100, enquanto a menor será no mínimo 25. Ambos terminam em 200.
Saída
A saída será uma imagem (exibida na tela ou salva como um arquivo) mostrando
- O retângulo de entrada
- Todas as linhas / círculos "funcionais"
- O losango inscrito
em cores distintas. Na imagem acima, o retângulo é preto, as linhas de trabalho são azuis e o losango é laranja. As linhas devem ser desenhadas na ordem mostrada na lista (por exemplo, losango substitui as linhas de trabalho e o retângulo).
A imagem de saída precisa ser grande o suficiente para conter tudo. Por exemplo, os círculos mostrados não podem sair dos limites.
Método
O método usado na imagem de exemplo acima é:
- Desenhe um círculo usando o canto inferior esquerdo como centro e o canto superior direito como um ponto no perímetro, fornecendo um raio igual à diagonal do retângulo.
- Faça o mesmo, mas trocando pontos de centro e perímetro.
- Desenhe uma linha entre as interseções dos dois círculos, dando uma bissetor perpendicular à diagonal do retângulo.
- Use as interseções da nova linha e retângulo para desenhar o losango.
Isso funciona porque as diagonais interiores de um losango sempre se cortam perpendicularmente. Não estou incluindo aqui uma prova completa disso.
Este não é o único método para obter seu losango, e você pode usar outro, desde que explique o que está fazendo. Eu acredito que é provavelmente o mais fácil, no entanto.
Regras
Você só pode desenhar círculos e linhas (ou melhor, segmentos de linha). Um círculo é definido com um ponto central e um ponto de perímetro. Uma linha é definida por quaisquer dois pontos. As linhas não precisam ter nenhum comprimento especificado, mas devem cobrir pelo menos os pontos de definição (observe a imagem de exemplo: a linha passa um pouco além das interseções do círculo, mas não até a aresta). Para círculos, o raio do centro até o ponto de perímetro escolhido é considerado uma linha de trabalho e deve ser mostrado.
Para rasterizar as linhas, você pode usar qualquer algoritmo reconhecido (por exemplo, o de Bresenham) ou confiar em quaisquer recursos internos que sua linguagem possa ter. Se sua saída for baseada em vetores, verifique se é exibida em uma resolução pelo menos tão grande quanto o retângulo de entrada em pixels. Além disso, você desenhará em uma tela simples, portanto, suprima quaisquer marcas de grade ou saída estranha.
Sem trapaça! Você só pode determinar o posicionamento de pontos / linhas / círculos usando o que você estabeleceu até agora. Se você não consegue explicar como usar suas linhas / círculos de trabalho para mostrar que é um losango, está fazendo errado.
Você pode usar o par de pontos opostos desejado e o retângulo não precisa ser desenhado alinhado ao eixo, desde que a saída esteja correta.
A entrada sempre será um retângulo não quadrado, portanto, não se preocupe com maiúsculas e minúsculas.
Por fim, este é o código padrão de golfe, e o tamanho mais baixo em bytes vence.