Задание
Это довольно простая задача кодирования, все, что ваша программа должна сделать, это поместить точку на холст (или вашу альтернативу на другом языке кодирования) и подключить ее ко всем уже размещенным точкам. Ваша программа должна принимать за один вход количество точек, которые должны быть размещены, и выводить какой-то вид отображения с подключенными точками. пример
Требования
- Я должен быть в состоянии запустить его, а это значит, что он должен иметь компилятор / инструмент для запуска его в Интернете или в открытом доступе для загрузки.
- Вам разрешается использовать любую библиотеку, созданную до того, как была поставлена эта задача, если она не была предназначена исключительно для решения этой проблемы.
- Это задача кратчайшего кода, что означает символы. Комментарии, код, который меняет цвет (для красивости) и библиотеки, будут игнорироваться.
- Ваш ответ должен быть уникальным, не крадите чужой код, сокращайте его до нескольких символов и размещайте его повторно.
- Он должен быть в состоянии работать менее чем за 5 минут, для значений 5 и 100. Он также должен использовать разрешение не менее 200 * 200 и размещать каждую точку в случайном месте на холсте, используя нетривиальное распределение.
Текущий список лидеров
Flawr - Matlab - 22 - Confirmed
Falko - Python 2 - 41 - Confirmed
Wyldstallyns - NetLogo - 51 - Confirmed
Ssdecontrol - R - 66 - Confirmed
David - Mathematica - 95 - Confirmed
ILoveQBasic - QBasic - 130 - Confirmed
Adriweb - TI-Nspire Lua - 145 - Confirmed
Manatwork - Bash - 148 - Confirmed
Doorknob - Python 2 - 158 - Confirmed
Kevin - TCL - 161 - Confirmed
M L - HPPPL - 231 - Confirmed
Manatwork - HTML/JS - 261 - Confirmed - Improved code of Scrblnrd3
Makando - C# - 278 - Confirmed
Scrblnrd3 - HTML/JS - 281 - Confirmed
Geobits - Java - 282 - Confirmed
Если я скучал по тебе, мне очень жаль, просто добавь комментарий к своей работе, и я добавлю его, как только увижу =)
TL; DR
- Input - количество точек (int, может быть жестко закодировано)
- Вывод - изображение случайно расположенных точек, связанных друг с другом (рисунок)
- Победитель - кратчайший код
Ответы:
Матлаб (22)
Предполагается, что n является числом точек, и это выглядит так при n = 10:
n=6
:Explaination
gplot
это команда для построения графиков Первый аргумент - этоn x n
матрица инцидентности (очевидно, она полна единиц). Второй аргумент должен бытьn x 2
матрицей с координатами точек, но не имеет значения, если второе измерение больше 2, поэтому я просто генерируюn x n
матрицу случайных значений (которая на 2 символа короче генерацииn x 2
матрицы).Ссылки на документацию
источник
Ява:
318 282265Потому что, вы знаете, Java:
Это простой цикл, который создает случайные точки и рисует линии между текущей точкой и всеми предыдущими.
Пример с 25 точками:
С переносами строк и импортом:
Изменить: так как мы не считаем импорт, я импортировал еще пару вещей, чтобы сохранить некоторые символы позже.
Редактировать 2: OP добавил поправку на количество точек. -17 символов :)
источник
Python 2 -
4135После импорта некоторых библиотек, как разрешено для этой задачи
мы можем построить некоторое количество связанных точек всего одной строкой кода:
(Снимок экрана был создан с 10 баллами.)
источник
import
утверждения в нормальном вызове для игры в гольф.Mathematica
9587С некоторой помощью Велисария.
п = 5
п = 100
Время: 2.082654 сек
источник
CompleteGraph[100, VertexCoordinates -> RandomReal[{0, 199}, {100, 2}]]
100
включать его не нужно, и этоInput[]
необязательно.Python 2, 158
Операторы импорта, не включенные в число символов, как отмечено в вопросе («библиотеки будут игнорироваться»).
Пример выходов:
n = 2 (...):
n = 10 (выглядит как причудливая трехмерная вещь или что-то в этом роде):
n = 100 (похоже, кто-то пошел BLELEEEAARARGHHH с красной ручкой):
n = 500, 1000, 10000 (работает примерно через 1,5 секунды, 5-6 секунд и 3,5 минуты соответственно):
Примечание: 10000 баллов было выполнено со слегка оптимизированной версией, которая изменила строку 3 (не включая импорт) на эту:
Иначе это заняло бы вечность. :П
Ungolfed:
источник
x=255
и используя его для замены экземпляров200
и255
.Р, 66
Это граничный обман, но я все еще думаю, что это в рамках правил. Настройте, загрузив
igraph
пакет сlibrary(igraph)
, который можно загрузить из CRAN сinstall.packages("igraph")
. Затем назначьте вход для переменнойN
. Согласно правилам, они не учитываются в сумме.N = 50
Обратите внимание, что этот код также рисует самоподключения. Устранение их (хотя против них нет правил) добавляет 6 символов:
R 141
Это честное решение в базе R:
хотя вам еще нужно войти
N
вручную.N = 50
Мне интересно, если бы в
for
цикле было меньше символов,apply
но я доволен тем, что у меня есть.источник
,"un"
в конце первой строки.QBasic или QuickBasic, 130 символов
Варианты кода
RANDOMIZE
наRANDOMIZE TIMER
.N=10
наINPUT N
илиINPUT "N";N
.Пробные прогоны
Для
N=5
, протестировано с QBasic 1.1, работающим на DOSBox 0.74:Для
N=100
, протестировано с QBasic 1.1, работающим на DOSBox 0.74:источник
Bash + ImageMagick: 148 символов
Образец прогона:
Образец вывода:
Образец прогона:
Образец вывода:
Образец прогона:
Образец вывода:
источник
TCL 161 символ
Ясно, что не собираюсь побеждать, но побеждает несколько других, представленных здесь, и я думаю, что это хорошо использует язык с высокой степенью недооценки.
По умолчанию размер холста в моей системе составляет 291x204. Не знаю почему, но при его использовании сохраняется 13 символов.
Довольно быстро, 400 очков за <5 секунд, 500 за ~ 10 с. Размер и точки можно масштабировать произвольно, а цвета и стили линий можно изменять, конечно же, за счет символов. Отключите гольф и используйте переменные, чтобы сделать его более понятным и легче масштабировать и окрашивать:
источник
[TI-Nspire] Lua -
145135130(Обновлена исправленная версия)
«Импортируя» math.random как «r», сначала, как разрешено:
r=math.random
Актуальный код:
Примечание. Этот код работает на калькуляторах TI-Nspire (например, TI добавил Lua-скрипты в последние операционные системы этой платформы с API-интерфейсом, основанным на четном коде, что позволяет пользователям, например, создавать графики и т. Д.).
Его также можно попробовать онлайн здесь (просто стереть демо-скрипт и добавьте мой
n=10
например)источник
C # Windows формы, 268
N = 5
N = 50
Полный код приведен ниже
источник
Pens.Tan
вместоnew Pen(Color.Tan)
?HTML / JS, 210, благодаря manatwork
JSFiddle
источник
~~
вместо того,m.floor
чтобы сохранить 5 байтовcanvas
метку самозакрывающуюся и удалить одиночные кавычкиid
значения:<canvas id=q />
. (Обратите внимание, что вы должны оставить один пробел между последним значением атрибута и самозакрывающимся/
.) Кстати, в Firefox отлично работает безm.floor()
и~~
.C # WPF
306296Я хотел бы сказать, что я мог бы удалить Stroke = Brushed.Red. Но, к сожалению, это означает, что я рисую прозрачные линии, и я думаю, что это не имеет значения. : PI также может сбрить пару байтов, просто создав сетку в представлении XAML. Но это казалось несправедливым, поэтому я лишил XAML, чтобы стать чистым холстом. (Я не считаю XAML байтами ...)
XAML
5
100
источник
var
при объявлении переменных.HPPPL,
231220(Язык программирования HP Prime для цветного графического калькулятора HP Prime)
Гольф это вниз. 11 меньше символов, рисуя все возможные новые линии сразу после каждого создания новой точки. Только две вложенные петли вместо предыдущих трех.
Ungolfed (270 символов):
Примеры:
с (10)
с (30)
Цветной графический калькулятор HP Prime оснащен цветным дисплеем с разрешением 320x240 пикселей.
Эмулятор, который также работает с комплектом подключения, доступен на веб-сайте HP или здесь: http://www.hp-prime.de/en/category/6-downloads.
... все еще жду прибытия оборудования. Обновление о времени выполнения будет следовать.
Сегодня прибыл мой HP Prime. Вот время выполнения для n = 100 на реальном калькуляторе:
Около 0,65 с для n = 100.
Эмулятор работает примерно в 4 раза быстрее (около 0,178 с) на моем ноутбуке Core i5 2410M.
источник
NetLogo, 51 байт
Замените 9 с другими константами или переменными по мере необходимости.
источник