A tarefa
Essa é uma tarefa de codificação bastante simples, tudo o que seu programa precisa fazer é colocar um ponto em uma tela (ou sua alternativa em outra linguagem de codificação) e conectá-lo a todos os pontos já colocados. Seu programa deve receber uma entrada, o número de pontos que devem ser colocados e gerar algum tipo de exibição com os pontos conectados. Exemplo
Exigências
- Eu preciso executá-lo, o que significa que ele precisa ter um compilador / ferramenta para executá-lo on-line ou publicamente disponível para download.
- Você pode usar qualquer biblioteca criada antes que esse desafio seja definido, desde que não tenha sido projetado com o único objetivo de solucionar isso.
- Essa é uma tarefa de código mais curta, o que significa caracteres. Comentários, códigos que mudam de cor (por beleza) e bibliotecas serão ignorados.
- Sua resposta deve ser única, não roube o código de outras pessoas, reduza alguns caracteres e repita-o.
- Ele deve ser capaz de executar em menos de 5 minutos, para os valores de 5 e 100. Também deve usar uma resolução de pelo menos 200 * 200 e colocar cada ponto em um local aleatório na tela usando uma distribuição não trivial.
Classificação atual
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
Se eu senti sua falta, sinto muito, basta adicionar um comentário ao seu trabalho dizendo isso e eu o adicionarei assim que o ver =)
TL; DR
- Entrada - Número de pontos (int, pode ser codificado)
- Saída - Imagem de pontos colocados aleatoriamente, todos conectados um ao outro (gráfico)
- Vencedor - Código mais curto
Respostas:
Matlab (22)
Supõe-se que n é o número de pontos e é assim para n = 10:
n=6
:Explicação
gplot
é um comando para plotar gráficos. O primeiro argumento é uman x n
matriz de incidência (cheia de uns, obviamente). O segundo argumento deve ser uman x 2
matriz com as coordenadas dos pontos, mas não importa se a segunda dimensão é maior que 2, então eu apenas gero uman x n
matriz de valores aleatórios (que é 2 caracteres menor que a geração de uman x 2
matriz).Links para documentação
fonte
Java:
318282265Porque, você sabe, Java:
É apenas um loop simples que cria pontos aleatórios e desenha linhas entre o ponto atual e todos os anteriores.
Exemplo com 25 pontos:
Com quebras de linha e importações:
Edit: Como não estamos contando as importações, importei mais algumas coisas para salvar alguns caracteres posteriormente.
Edit 2: OP adicionou uma permissão para o número de pontos codificados. -17 caracteres :)
fonte
Python
2-4135Depois de importar algumas bibliotecas conforme permitido para esse desafio
podemos plotar algum número de pontos conectados com apenas uma linha de código:
(A captura de tela foi gerada com 10 pontos.)
fonte
import
instruções em um desafio normal de golfe com código.Mathematica
9587Com alguma ajuda de belisarius.
n = 5
n = 100
Tempo: 2,082654 seg
fonte
CompleteGraph[100, VertexCoordinates -> RandomReal[{0, 199}, {100, 2}]]
100
era desnecessário incluir e issoInput[]
era opcional.Python 2, 158
Instruções de importação não incluídas na contagem de caracteres, conforme observado na pergunta ("as bibliotecas serão ignoradas").
Saídas de amostra:
n = 2 (...):
n = 10 (parece coisa 3D chique ou algo assim):
n = 100 (parece que alguém foi BLELEEEAARARHHHH com uma caneta vermelha):
n = 500, 1000, 10000 (executado em cerca de 1,5 segundos, 5-6 segundos e 3,5 minutos, respectivamente):
Nota: os 10000 pontos um foram executados com uma versão ligeiramente otimizada que alterou a linha 3 (não incluindo importações) para isso:
Caso contrário, levaria uma eternidade. : P
Ungolfed:
fonte
x=255
e usando para substituir as instâncias de200
e255
.R, 66
Essa é uma trapaça na fronteira, mas ainda acho que está dentro das regras. Configure carregando o
igraph
pacote comlibrary(igraph)
, que pode ser baixado do CRAN cominstall.packages("igraph")
. Em seguida, atribua a entrada à variávelN
. De acordo com as regras, elas não são contadas no total.N = 50
Observe que esse código também desenha auto-conexões. Eliminá-los (embora não haja regra contra eles) adiciona 6 caracteres:
R, 141
Esta é uma solução honesta para a bondade na base R:
embora você ainda precise entrar
N
manualmente.N = 50
Gostaria de saber se um
for
loop seria menos caracteres do que,apply
mas estou feliz com o que tenho.fonte
,"un"
no final da primeira linha.QBasic ou QuickBasic, 130 caracteres
Variações de código
RANDOMIZE
porRANDOMIZE TIMER
.N=10
porINPUT N
ouINPUT "N";N
.Execuções de amostra
Para
N=5
, testado com o QBasic 1.1 em execução no DOSBox 0.74:Para
N=100
, testado com o QBasic 1.1 em execução no DOSBox 0.74:fonte
Bash + ImageMagick: 148 caracteres
Exemplo de execução:
Saída de amostra:
Exemplo de execução:
Saída de amostra:
Exemplo de execução:
Saída de amostra:
fonte
TCL 161 chars
Claramente não vai ganhar, mas supera vários outros apresentados aqui, e acho que faz bom uso de uma linguagem altamente subvalorizada.
O tamanho da tela padrão no meu sistema parece ser 291x204. Não sei por que, mas usá-lo salva 13 caracteres.
Bastante rápido, 400 pontos em <5 segundos, 500 em ~ 10 s. O tamanho e os pontos podem ser escalados arbitrariamente e as cores e os estilos de linha podem ser alterados, ao custo dos caracteres, é claro. Sem golfe e usando variáveis para torná-lo mais claro e fácil de dimensionar e colorir:
fonte
[TI-Nspire] Lua -
145135130(Versão fixa atualizada)
"Importando" math.random como "r", primeiro, conforme permitido:
r=math.random
Código atual:
Nota: Este código funciona nas calculadoras TI-Nspire (a TI adicionou scripts Lua aos sistemas operacionais recentes desta plataforma, com uma API uniforme que permite aos usuários criar gráficos etc., por exemplo.)
Ele também pode ser experimentado online aqui (basta apagar o script de demonstração e inclua o meu
n=10
por exemplo)fonte
Formulários C # Windows, 268
N = 5
N = 50
Código completo é fornecido abaixo
fonte
Pens.Tan
vez denew Pen(Color.Tan)
?HTML / JS, 210, graças à manatwork
JSFiddle
fonte
~~
em vez dem.floor
salvar 5 bytescanvas
auto-fechamento tag e remover as aspas simples ao redor doid
valor:<canvas id=q />
. (Observe que você deve deixar um espaço entre o último valor do atributo e o fechamento automático/
.) Aliás, no Firefox funciona bem semm.floor()
e~~
.C # WPF
306296Gostaria de dizer que eu poderia remover o Stroke = Brushed.Red. Mas, infelizmente, isso significa que estou pintando linhas transparentes, e acho que isso realmente não conta. : O PI também pode raspar alguns bytes apenas criando uma grade na exibição XAML. Mas isso parecia injusto, então tirei o XAML para se tornar uma tela em branco. (Não conto o XAML como bytes ...)
XAML
5
100
fonte
var
ao declarar variáveis.HPPPL,
231220(Linguagem de programação HP Prime para a calculadora gráfica em cores HP Prime)
jogou para baixo. 11 caracteres a menos, desenhando todas as novas linhas possíveis logo após cada nova criação de ponto. Apenas dois loops aninhados em vez dos três anteriores.
Sem Golfe (270 caracteres):
exemplos:
c (10)
c (30)
A calculadora gráfica em cores HP Prime possui uma tela colorida de 320x240 pixels.
Um emulador que também funciona com o kit de conectividade está disponível no site da HP ou aqui: http://www.hp-prime.de/en/category/6-downloads
... ainda esperando o hardware chegar. Atualização sobre o tempo de execução seguirá.
Hoje meu HP Prime chegou. Aqui está o tempo de execução para n = 100 em uma calculadora real:
Cerca de 0,65 s para n = 100.
O emulador é cerca de 4 vezes mais rápido (cerca de 0,178 s) no meu laptop Core i5 2410M.
fonte
NetLogo, 51 bytes
Substitua 9s por outras constantes ou variáveis, conforme necessário.
fonte