Encuentra una forma de hacer círculos de un radio determinado usando los personajes de una consola. Por favor, especifique el nombre y el tamaño de la fuente. Además, proporcione al menos un ejemplo de la salida.
Por ejemplo:
Entrada:
3
Salida:
******
** **
** **
* *
** **
** **
******
... Bueno, algo mejor que ese "círculo" "dibujado a mano" con un radio de 3.
Pregunta extra: elipses. :)
code-challenge
ascii-art
Mateen Ulhaq
fuente
fuente
Respuestas:
Javascript (360)
http://jsfiddle.net/YssSb/3/ (
f
es un factor de corrección para la relación de altura de línea / ancho de fuente. Si utiliza una configuración de fuente cuadrada, es decir, establecer line-height = font-size, puede establecer f = 1 y obtener círculos "cuadrados". O establecerf
arbitrariamente para elipses.)Salida para 3 (bastante interesante, accidentalmente exactamente la misma forma que OP), 5, 15:
fuente
un círculo de Bresenham en Scala (35)
El algoritmo de Bresenham tiene 2 puntos principales:
Cómo hacerlo:
Este no es el código de golf, pero todos esos números en la parte superior de las soluciones existentes me hicieron pensar que sí, así que pasé un tiempo inútil en jugar golf en mi solución. Por lo tanto, agregué un número inútil en la parte superior también. Es 11 veces que Pi se redondea.
La pregunta sobre la fuente es decidida por el servidor web de los sitios y la configuración de su navegador. Ahora que estoy mirando es
El tamaño de fuente es 12px. Información bastante inútil, si me preguntas, pero ¿quién lo hace?
Bonus: puntos suspensivos y salida de muestra:
La invocación es
por ejemplo
Restringí el parámetro de relación para Int para que sea simple, pero se puede ampliar fácilmente para permitir flotantes.
fuente
Pitón (172)
172 caracteres incluyendo las dos nuevas líneas obligatorias. Utiliza el algoritmo de Bresenham para curvas cónicas (sin divisiones ni multiplicaciones); solo genera círculos para fuentes cuadradas, pero debe estar exento de efectos de escalera ( es decir, siempre tiene el mismo ancho).
No muy bonita, pero bueno, pensé en intentarlo.
Editar : error tipográfico, reemplazó la suma con la división .
fuente
Perl (92)
Fui por la "pregunta extra" e hice que explotara la relación de aspecto del personaje para dibujar puntos suspensivos :)
Salidas de ejemplo:
fuente
Haskell (
112109)Esto funciona comprobando si x² + y² - r² <n para todos los puntos. Todos los puntos para los que esto es cierto son estrellas, todos los demás son espacios en blanco.
Ejemplos:
Ver aquí para un gran ejemplo: http://www.ideone.com/t042u
fuente
Python, 180 caracteres
Este código hace círculos si la fuente es cuadrada. Es bastante fácil de modificar para generar puntos suspensivos nominales si conoce la relación altura / ancho de la fuente.
Ejemplos:
fuente
C, 127 bytes, nombre de fuente: Arial Super Bold
Resultado:
fuente