Encontre uma maneira de fazer círculos de um determinado raio usando caracteres em um console. Especifique o nome e o tamanho da fonte. Além disso, forneça pelo menos um exemplo da saída.
Por exemplo:
Entrada:
3
Resultado:
******
** **
** **
* *
** **
** **
******
... Bem, algo mais bonito do que aquele "círculo desenhado à mão" com um raio de 3.
Pergunta bônus: Elipses. :)
code-challenge
ascii-art
Mateen Ulhaq
fonte
fonte
Respostas:
Javascript (360)
http://jsfiddle.net/YssSb/3/ (
f
é um fator de correção para a relação altura da linha / largura da fonte. Se você usar uma configuração de fonte quadrada, por exemplo, defina line-height = font-size, você poderá definir f = 1 e obtenha círculos "quadrados" ou definaf
arbitrariamente as elipses.)Saída para 3 (de maneira interessante, acidentalmente exatamente da mesma forma que OP), 5, 15:
fonte
um círculo de Bresenham em Scala (35)
O algoritmo Bresenham - possui 2 pontos principais:
Como fazer isso:
Isso não é código de golfe, mas todos esses números no topo das soluções existentes me fizeram pensar que era, então eu passei um tempo inútil jogando minha solução no golfe. Por isso, adicionei também um número inútil no topo. É 11 vezes o Pi arredondado.
A questão da fonte é decidida pelo servidor de sites e pelas configurações do seu navegador. Agora, que eu estou olhando, é
O tamanho da fonte é 12 px. Informações bastante inúteis, se você me perguntar, mas quem faz?
Bônus: elipses e saída de amostra:
A invocação é
por exemplo
Eu restringi o parâmetro ratio para Int para simplificá-lo, mas ele pode ser facilmente ampliado para permitir flutuações.
fonte
Python (172)
172 caracteres, incluindo as duas novas linhas obrigatórias. Usa o algoritmo de Bresenham para curvas cônicas (sem divisões ou multiplicações); ele gera apenas círculos para fontes quadradas, mas deve ser isento de efeitos de escada ( ou seja, sempre tem a mesma largura).
Não é muito bonito, mas bem, pensei em tentar.
Editar : erro de digitação, substituído disso com divisão .
fonte
Perl (92)
Eu fui para a “questão bônus” e a fiz explorar a proporção do personagem para desenhar elipses :)
Exemplo de saídas:
fonte
Haskell (
112109)Isso funciona verificando se x² + y² - r² <n para todos os pontos. Todos os pontos em que isso é verdade são estrelas, todos os outros são espaços em branco.
Exemplos:
Veja aqui um grande exemplo: http://www.ideone.com/t042u
fonte
Python, 180 caracteres
Esse código faz círculos se a fonte for quadrada. É muito fácil modificar para gerar elipses nominais, se você conhece a proporção altura / largura da fonte.
Exemplos:
fonte
C, 127 bytes, Nome da fonte: Arial Super Bold
Resultado:
fonte