Найдите способ сделать круги заданного радиуса, используя символы в консоли. Пожалуйста, укажите название и размер шрифта. Также предоставьте хотя бы один пример выходных данных.
Например:
Входные данные:
3
Вывод:
******
** **
** **
* *
** **
** **
******
... Ну, что-то лучше, чем этот "нарисованный от руки" "круг" с радиусом 3.
Бонусный вопрос: эллипсы. :)
code-challenge
ascii-art
Матин Улхак
источник
источник
Ответы:
Javascript (360)
http://jsfiddle.net/YssSb/3/ (
f
это поправочный коэффициент для отношения line-height / font-width. Если вы используете квадратную настройку шрифта, т.е. установите line-height = font-size, вы можете установить f = 1 и получить "квадратные" круги. Или установитьf
произвольно для эллипсов.)Вывод для 3 (достаточно интересно, случайно точно такой же формы, как и ОП), 5, 15:
источник
круг Брезенема в Скале (35)
Алгоритм Брезенхема имеет 2 основных момента:
Как это сделать:
Это не кодекс гольф, но все эти цифры в верхней части существующих решений заставили меня думать, что я потратил бесполезное время на игру в гольф. Поэтому я добавил бесполезный номер наверху тоже. Это 11 раз Пи округлил.
Вопрос о шрифте определяется веб-сервером сайта и настройками вашего браузера. Теперь, когда я смотрю это
Размер шрифта составляет 12 пикселей. Довольно бесполезная информация, если вы спросите меня, но кто это делает?
Бонус: эллипсы и пример вывода:
Вызов
например
Я ограничил параметр ratio для Int, чтобы он был простым, но его можно легко расширить, чтобы разрешить значения с плавающей точкой.
источник
Python (172)
172 символа, включая два обязательных перевода строки. Использует алгоритм Брезенхэма для конических кривых (без делений и умножений); он выводит круги только для квадратных шрифтов, но должен быть освобожден от эффектов лестничной клетки ( т. е. всегда имеет одинаковую ширину).
Не очень красиво, но хорошо, я решил попробовать.
Редактировать : опечатка, заменено дополнение с делением .
источник
Perl (92)
Я выбрал «бонусный вопрос» и заставил его использовать пропорции персонажа для рисования эллипсов :)
Пример выходов:
источник
Хаскелл (
112109)Это работает, проверяя, x² + y² - r² <n для всех точек. Все точки, для которых это верно, являются звездами, все остальные являются пробелами.
Примеры:
Смотрите здесь для большого примера: http://www.ideone.com/t042u
источник
Python, 180 символов
Этот код делает круги, если шрифт квадратный. Это довольно легко изменить, чтобы создать номинальные эллипсы, если вы знаете соотношение высоты и ширины шрифта.
Примеры:
источник
C, 127 байт, название шрифта: Arial Super Bold
Результат:
источник