Trouvez un moyen de faire des cercles d'un rayon donné en utilisant des caractères dans une console. Veuillez spécifier le nom et la taille de la police. Veuillez également fournir au moins un exemple de sortie.
Par exemple:
Contribution:
3
Production:
******
** **
** **
* *
** **
** **
******
... Eh bien, quelque chose de plus beau que ce "cercle" "dessiné à la main" avec un rayon de 3.
Question bonus: Ellipses. :)
code-challenge
ascii-art
Mateen Ulhaq
la source
la source
Réponses:
Javascript (360)
http://jsfiddle.net/YssSb/3/ (
f
est un facteur de correction pour le rapport hauteur de ligne / largeur de police. Si vous utilisez un paramètre de police carré, par exemple, définissez line-height = font-size, vous pouvez définir f = 1 et obtenez des cercles "carrés". Ou définissezf
arbitrairement les ellipses.)Sortie pour 3 (assez intéressant, accidentellement exactement la même forme que OP), 5, 15:
la source
un cercle de Bresenham à Scala (35)
L'algorithme de Bresenham a 2 points principaux:
Comment faire:
Ce n'est pas du golf de code, mais tous ces chiffres en haut des solutions existantes m'ont fait penser que c'était le cas, alors j'ai passé un temps inutile à jouer au golf avec ma solution. J'ai donc ajouté un numéro inutile en haut aussi. C'est 11 fois Pi arrondi.
La question de police est décidée par le serveur Web des sites et les paramètres de votre navigateur. Maintenant que je regarde c'est
La taille de la police est de 12 pixels. Des informations assez inutiles, si vous me demandez, mais qui le fait?
Bonus: ellipses et exemple de sortie:
L'invocation est
par exemple
J'ai restreint le paramètre ratio pour Int pour qu'il reste simple, mais il peut facilement être élargi pour autoriser les flottants.
la source
Python (172)
172 caractères, y compris les deux sauts de ligne obligatoires. Utilise l'algorithme de Bresenham pour les courbes coniques (sans divisions ni multiplications); il ne produit que des cercles pour les polices carrées, mais doit être exempté des effets d'escalier ( c'est-à-dire qu'il a toujours la même largeur).
Pas très joli, mais bon, j'ai pensé que je pourrais essayer.
Edit : faute de frappe, ajout remplacé par division .
la source
Perl (92)
Je suis allé pour la "question bonus" et l'ai fait exploiter le rapport hauteur / largeur des caractères pour dessiner des ellipses :)
Exemples de sorties:
la source
Haskell (
112109)Cela fonctionne en vérifiant si x² + y² - r² <n pour tous les points. Tous les points pour lesquels cela est vrai sont des étoiles, tous les autres sont des blancs.
Exemples:
Voir ici pour un grand exemple: http://www.ideone.com/t042u
la source
Python, 180 caractères
Ce code fait des cercles si la police est carrée. Il est assez facile de modifier pour générer des ellipses nominales si vous connaissez le rapport hauteur / largeur de votre police.
Exemples:
la source
C, 127 octets, nom de la police: Arial Super Bold
Résultat:
la source