Codice più breve per posizionare casualmente punti e collegarli


26

L'obiettivo

Questa è un'attività di codifica piuttosto semplice, tutto ciò che il tuo programma deve fare è posizionare un punto su una tela (o la tua alternativa in un altro linguaggio di codifica) e collegarlo a tutti i punti già posizionati. Il programma deve contenere un input, il numero di punti da posizionare e produrre una sorta di display con i punti collegati. Esempio

Requisiti

  • Devo essere in grado di eseguirlo, il che significa che deve avere un compilatore / strumento per eseguirlo online o disponibile pubblicamente per il download.
  • È consentito utilizzare qualsiasi libreria creata prima dell'impostazione di questa sfida, purché non sia stata progettata al solo scopo di risolverlo.
  • Questa è un'attività di codice più breve, che significa caratteri. Commenti, codice che cambia colore (per la bellezza) e librerie verranno ignorati.
  • La tua risposta deve essere unica, non rubare il codice di altre persone, accorciarlo di alcuni caratteri e ripubblicarlo.
  • Deve essere in grado di funzionare in meno di 5 minuti, per i valori di 5 e 100. Deve inoltre utilizzare una risoluzione di almeno 200 * 200 e posizionare ciascun punto in una posizione casuale sulla tela utilizzando una distribuzione non banale.

Classifica attuale

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 mi sei mancato, mi dispiace molto, basta aggiungere un commento al tuo lavoro dicendo così e lo aggiungerò non appena lo vedo =)

TL; DR

  • Input - Numero di punti (int, può essere hard coded)
  • Output - Immagine di punti posizionati casualmente, tutti collegati tra loro (grafico)
  • Vincitore: il codice più breve

1
Sono autorizzate le biblioteche matematiche? Quali librerie stai esattamente cercando di evitare con il requisito n. 2?
Nathan Merrill,

2
C'è qualche limite per la risoluzione? Questo è abbastanza facile se mi permetti di produrre un'immagine 1x1
John Dvorak,

3
Quando non dici librerie "matematiche", che dire delle lingue in cui il PRNG predefinito è incluso in "matematica"? Non voglio scrivere un generatore.
Geobits il

1
Dal momento che non si consente il codice della libreria che si riferisce direttamente all'attività e tale attività è essenzialmente quella di disegnare un grafico di rete casuale, non è vietato anche l'uso delle funzioni native di disegno grafico? Questa restrizione è tutt'altro che ben definita.
comperendinous

3
@PopeyGilbert Devo dire che non ho mai visto un nuovo utente così sensibile ai problemi con la sua domanda e anche testare individualmente ogni risposta e mantenere una classifica. Buon lavoro e benvenuto in PPGC!
Hobby di Calvin il

Risposte:


21

Matlab (22)

gplot(ones(n),rand(n))

Si presume che n sia il numero di punti e si presenta così per n = 10: grafico casuale

n=6:

casuale

spiegazione

gplotè un comando per tracciare grafici. Il primo argomento è una n x nmatrice di incidenza (piena di quelli, ovviamente). Il secondo argomento dovrebbe essere una n x 2matrice con le coordinate dei punti, ma non importa se la seconda dimensione è maggiore di 2, quindi ho appena generato una n x nmatrice di valori casuali (che è più corta di 2 caratteri rispetto alla generazione di una n x 2matrice).

Collegamenti alla documentazione


Non ho mai usato Matlab, quindi ci vorrà un momento per testarlo - Ma dall'immagine sembra a posto! Complimenti per averlo fatto in 22 personaggi. EDIT - Si scopre che non posso provarlo, tuttavia guardando l'immagine sembra corretto, quindi lo permetterò. Tuttavia, qualcun altro può testarlo per favore?
Alexander Craggs,

3
Grazie =) Puoi provarlo qui: octave-online.net Poiché octave è sostanzialmente la versione open source di MatLab.
Flawr,

27

Java: 318282 265

Perché, sai, Java:

class M{public static void main(String[]a){new Frame(){public void paint(Graphics g){int i=0,j,d=640,n=25,x[]=new int[n],y[]=x.clone();for(setSize(d,d);i<n;i++)for(j=0,x[i]=(int)(random()*d),y[i]=(int)(random()*d);j<i;g.drawLine(x[i],y[i],x[j],y[j++]));}}.show();}}

È solo un semplice ciclo che crea punti casuali e traccia linee tra il punto corrente e tutti quelli precedenti.

Esempio con 25 punti:

inserisci qui la descrizione dell'immagine

Con interruzioni di riga e importazioni:

import java.awt.*;
import static java.lang.Math.*;

class M{
    public static void main(String[]a){
        new Frame(){
            public void paint(Graphics g){
                int i=0,j,d=640,n=25,x[]=new int[n],y[]=x.clone();
                for(setSize(d,d);i<n;i++)
                    for(j=0,x[i]=(int)(random()*d),y[i]=(int)(random()*d);
                        j<i;
                        g.drawLine(x[i],y[i],x[j],y[j++]));
            }
        }.show();
    }
}

Modifica: dal momento che non stiamo contando le importazioni, ho importato un paio di cose in più per salvare alcuni personaggi in seguito.

Modifica 2: OP ha aggiunto un margine per il numero di punti hardcoding. -17 caratteri :)


Bello! Complimenti per essere stato il primo.
Alexander Craggs,

2
Prima di tutto, ma sono sicuro che non sarà il più breve di una lunga possibilità. Causa, lo sai, Java;)
Geobits

3
Ammiro le persone che risolvono sempre l'attività in Java, anche se senza speranza, sarei anche troppo pigro per iniziare l'eclissi ... quindi +1 =)
flawr

1
@Chruncher Sì, java non è sicuramente la lingua migliore per il golf del codice. Tuttavia è stata la prima lingua che ho imparato ed è abbastanza facile da imparare. Mi ha anche tenuto bene, ed è personalmente la mia lingua preferita.
Alexander Craggs,

1
Non è necessario definire il parametro di main come final. Puoi tagliare quei 6 personaggi
Cruncher,

11

Python 2-41 35

Dopo aver importato alcune librerie come consentito per questa sfida

from pylab import rand as r
from pylab import plot as p
from itertools import product as x
from itertools import chain as c

possiamo tracciare un numero di punti collegati con una sola riga di codice:

X=r(5,2);p(*zip(*c(*list(x(X,X)))))

(Lo screenshot è stato generato con 10 punti.)


[Facendo riferimento a un commento eliminato:] Lo so, ma qui "le librerie verranno ignorate". In caso contrario, lo implementerei sicuramente diversamente. L'uso di quelle librerie non salva abbastanza caratteri per giustificare le importaffermazioni in una normale sfida del golf in codice.
Falko,

pylab fa parte della distribuzione standard? Immagino che non possiamo semplicemente importare tutto ciò che ci piace. Sotto quella metrica puoi implementare qualsiasi cosa in Python con una singola istruzione di importazione.
Cruncher,

lo è . Ho appena fatto quello che pensavo fosse valido. Ma non sono sicuro. E guardare nei commenti mostra un'enorme discussione in corso. Non appena questo sarà chiarito, sarei disposto a modificare il mio codice.
Falko,

Anche se questa visione delle competizioni su ciò che le biblioteche sono autorizzate sembra cambiare di giorno in giorno, PyLab dovrebbe assolutamente essere autorizzato.
Alexander Craggs,

8

Mathematica 95 87

Con l'aiuto di Belisarius.

CompleteGraph[n, VertexSize -> {2, 2},
VertexCoordinates -> Table[RandomInteger[{0, 199}, 2], {n}]]

n = 5

5


n = 100

Tempi: 2.082654 sec

100


Questo è verificato, l'ho fatto funzionare! Ma Mathematica normalmente conta come una lingua?
Alexander Craggs,

1
@PopeyGilbert Certo che lo fa. Finora ci sono circa 750 risposte in Mathematica.
Geobits il

Oh, wow, okay! Abbastanza giusto <3
Alexander Craggs

Pensa che sia più breve e soddisfi le regoleCompleteGraph[100, VertexCoordinates -> RandomReal[{0, 199}, {100, 2}]]
Dr. belisarius,

Grazie, hai ragione. Ho pensato di non poter vincere, quindi ho pensato di renderlo carino (VertexSize -> {2,2}. Tuttavia, ho trascurato il fatto che 100non era necessario includerlo e che Input[]era facoltativo.
DavidC

7

Python 2, 158

Dichiarazioni di importazione non incluse nel conteggio dei caratteri, come indicato nella domanda ("le librerie verranno ignorate").

from PIL import Image,ImageDraw
from random import randint

s=[(randint(0,200),randint(0,200))for _ in range(int(input()))]
i=Image.new('RGB',(200,200))
[ImageDraw.Draw(i).line((p,q),255)for p in s for q in s]
i.show()

Output di esempio:

n = 2 (...):

n = 2

n = 10 (sembra qualcosa di fantasia 3d o qualcosa del genere):

n = 10

n = 100 (sembra che qualcuno sia andato BLELEEEAARARGHHH con una penna rossa):

n = 100

n = 500, 1000, 10000 (funziona rispettivamente in circa 1,5 secondi, 5-6 secondi e 3,5 minuti):

Nota: i 10000 punti uno è stato eseguito con una versione leggermente ottimizzata che ha cambiato la linea 3 (escluse le importazioni) in questo:

d=ImageDraw.Draw
for p in s:
  for q in s:d.line((p,q),255)

Altrimenti ci sarebbe voluto per sempre. : P

Ungolfed:

from PIL import Image, ImageDraw
from random import randint
point_count = int(input())
image_size = 200
points = [(randint(0, image_size), randint(0, image_size)) for _ in range(point_count)]
image = Image.new('RGB', (200, 200))
draw = ImageDraw.Draw(image)
for start_point in points:
    for end_point in points:
        draw.line((start_point, end_point), 255)
image.show()

1
Congratulazioni per essere attualmente il concorrente più corto! Adoro il tuo commento su n = 100. Potrebbe essere meglio mettere image.new e image_size a 800. Potrebbe sembrare meno strano =)
Alexander Craggs

@PopeyGilbert Quindi posso rimuovere le dichiarazioni di importazione dalle mie? Supponevo che "ignorare le librerie" significasse che la libreria stessa non veniva conteggiata (come al solito).
Geobits il

Sì, perché alcune lingue hanno pochissime funzioni di base e devono importare tutte le loro cose. Se pensi che questo non sia Geobit equo, allora per favore dì =) Voglio provare a renderlo giusto.
Alexander Craggs,

@PopeyGilbert Ho appena chiesto perché non è la norma e volevo chiarirlo prima di
tagliare

1
Poiché la risoluzione deve essere almeno 200x200, è possibile salvare alcuni caratteri (5, credo) impostando x=255e utilizzandolo per sostituire le istanze di 200e 255.
comperendinous

5

R, 66

Questo è un imbroglio borderline ma penso ancora che rientri nelle regole. Configurare caricando il igraphpacchetto con library(igraph), che può essere scaricato da CRAN con install.packages("igraph"). Quindi assegnare l'input alla variabile N. Secondo le regole, queste non sono conteggiate nel totale.

G=graph.adjacency(matrix(1,N,N),"un")
plot(G,layout=layout.random)

N = 50

inserisci qui la descrizione dell'immagine

Si noti che questo codice disegna anche le auto-connessioni. Eliminandoli (anche se non ci sono regole contro di loro) si aggiungono 6 caratteri:

G=graph.adjacency(matrix(1,N,N),"un",diag=F)
plot(G,layout=layout.random)

R, 141

Questa è una soluzione onesta per la bontà nella base R:

p=replicate(2,runif(N))
g=as.matrix(expand.grid(1:N,1:N))
plot.new()
apply(g,1,function(i) segments(p[i[1],1],p[i[1],2],p[i[2],1],p[i[2],2]))

anche se devi ancora entrare Na mano.

N = 50

inserisci qui la descrizione dell'immagine

Mi chiedo se un forloop sarebbe composto da meno personaggi rispetto a applyma sono contento di quello che ho.


Accetterò l'auto-connessione, tecnicamente la domanda è disegnare una linea per TUTTI i punti. L'ho provato e confermato anche.
Alexander Craggs,

Ti dispiace le frecce che collegano i punti? Ciò salverà altri 5 eliminando ,"un"alla fine della prima riga.
Shadowtalker,

Se non ti dispiace, penso che dovremmo tenerlo, quindi devono essere linee che collegano ciascuno dei punti. In questo modo la risposta apparirà simile in ciascuna delle risposte.
Alexander Craggs,

5

QBasic o QuickBasic, 130 caratteri

SCREEN 1:RANDOMIZE:N=10:DIM X(100),Y(100):FOR I=1 TO N:X(I)=RND*320:Y(I)=RND*200:FOR J=1 TO I:LINE(X(I),Y(I))-(X(J),Y(J)):NEXT J,I

Variazioni del codice

  • Se non si desidera che venga richiesto un seme, sostituirlo RANDOMIZEcon RANDOMIZE TIMER.
  • Se si desidera che venga richiesto N, sostituirlo N=10con INPUT No INPUT "N";N.

Esecuzioni campione

Per N=5, testato con QBasic 1.1 in esecuzione su DOSBox 0.74:

Per N=100, testato con QBasic 1.1 in esecuzione su DOSBox 0.74:


Oh, wow, bella immagine per N = 5! Adoro che sia un pentagramma quando il seme ha 42 anni. Testato e confermato.
Alexander Craggs,

4

Bash + ImageMagick: 148 caratteri

c=()
while((i++<$1)); do
p=$[RANDOM%200],$[RANDOM%200]
c+=($p)
for e in ${c[@]};do
d+="line $p $e"
done
done
convert -size 200x200 xc: -draw "$d" x:

Esecuzione di esempio:

bash-4.3$ time ./line.sh 5

real    0m5.256s
user    0m0.137s
sys     0m0.017s

Uscita campione:

5 punti collegati

Esecuzione di esempio:

bash-4.3$ time ./line.sh 25

real    0m3.043s
user    0m0.574s
sys     0m0.023s

Uscita campione:

25 punti collegati

Esecuzione di esempio:

bash-4.3$ time ./line.sh 100

real    0m5.662s
user    0m11.156s
sys     0m0.076s

Uscita campione:

100 punti collegati


Testato e confermato. Manatwork ben fatto!
Alexander Craggs,

Mi dispiace molto, ho completamente dimenticato di aggiungere questo alle classifiche? Lo farò ora.
Alexander Craggs,

4

TCL 161 caratteri

Chiaramente non vincerà, ma batte molti altri qui presentati, e penso che faccia buon uso di un linguaggio altamente sottovalutato.

for {set i 0} {$i<10} {incr i} {lappend l [expr rand()*291] [expr rand()*204]}
pack [canvas .c]
foreach {x y} $l {foreach {w z} $l {.c create line $x $y $w $z}}

Esempio

La dimensione di tela predefinita sul mio sistema sembra essere 291x204. Non so perché, ma usandolo salva 13 caratteri.

Abbastanza veloce, 400 punti in <5 secondi, 500 in ~ 10 s. Dimensioni e punti possono essere ridimensionati in modo arbitrario e i colori e gli stili di linea possono essere modificati, ovviamente a spese dei personaggi. Non golfato e utilizzo di variabili per rendere più chiaro e facile ridimensionare e colorare:

set n 20
set width 500
set height 500
set bg_color black
set line_color white
for {set i 0} {$i < $n} {incr i} {
        lappend points [expr rand() * $width] [expr rand() * $height]
}
canvas .c -width $width -height $height -background $bg_color 
pack .c
foreach {x1 y1} $points {
        foreach {x2 y2} $points {
                .c create line $x1 $y1 $x2 $y2 -fill $line_color
        }
}       

1
L'immagine sembra a posto, purtroppo il mio computer non funziona, quindi lo proverò più tardi. Congratulazioni per aver usato un linguaggio così poco apprezzato.
Alexander Craggs,

L'ho appena confermato, congratulazioni per l'entrata riuscita!
Alexander Craggs,



4

[TI-Nspire] Lua - 145 135 130

(Versione fissa aggiornata)

Schermata con n = 10

"Importazione" math.random come "r", innanzitutto, come consentito: r=math.random

Codice reale:

function on.paint(g)t={}for b=1,2*n-1,2 do t[b]=r(318)t[b+1]=r(212)for c=1,b-1,2 do g:drawLine(t[b],t[b+1],t[c],t[c+1])end end end

Nota: questo codice funziona sui calcolatori TI-Nspire (TI ha aggiunto gli script Lua ai recenti sistemi operativi di questa piattaforma, con un'API basata su pari che consente agli utenti di rappresentare graficamente cose ecc., Ad esempio.)
Può anche essere provato online qui (basta cancellare lo script demo e anteporre il mio con n=10ad esempio)


È tempo che io impari Lua!
Decadimento beta

1
Questo sembra soffrire dallo stesso errore di fuandon 's eliminato PowerShell risposta e Vlo ' anche cancellati R risposta: ci si connette i punti in coppia, non tutti i punti con tutti gli altri punti. (Lua è così raro su questo sito. Correggi il tuo codice invece di eliminarlo.)
manatwork

Oh, mio ​​cattivo - lo riparerò presto!
Adriweb,

Eccoci, grazie per
avermelo

Questo è stato testato e confermato! Ben fatto usando Lua.
Alexander Craggs,

3

Moduli Windows C #, 268

static void k(int n,int s){var f=new Form{Height=s+50,Width=s+25};f.Paint+=(u,v)=>{var r=new Random();var p=new Point[n];while(n>0)p[--n]=new Point(r.Next(s),r.Next(s));foreach(var a in p)foreach(var b in p)f.CreateGraphics().DrawLine(Pens.Tan,a,b);};f.ShowDialog();}

N = 5

Traccia usando 5 punti

N = 50

Traccia usando N = 50

Di seguito è riportato il codice completo

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    static class Program
    {
        static void Main()
        {
            k(50, 200);
        }
        static void k(int n, int s)
        {
            var f = new Form {Height = s + 50, Width = s + 25};
            f.Paint += (u, v) =>
            {
                var r = new Random();
                var p = new Point[n];
                while (n > 0)
                    p[--n] = new Point(r.Next(s), r.Next(s));
                foreach (var a in p)
                    foreach (var b in p)
                        f.CreateGraphics().DrawLine(Pens.Tan, a, b);
            };
            f.ShowDialog();
        }
    }
}

Testato e confermato! Quando ho controllato il conteggio dei caratteri, ho usato il codice completo e sono rimasto sorpreso quando si è arrivati ​​a <700 caratteri ...>. <. Ad ogni modo, congratulazioni per aver inserito con successo!
Alexander Craggs,

Non c'è qualche scorciatoia come Pens.Taninvece di new Pen(Color.Tan)?
CompuChip

Modificato per utilizzare Pens.Tan, risparmiando un ulteriore 10
Zed Coder il

2

HTML / JS, 210, grazie a manatwork

<canvas id=q /><script>c=q.getContext("2d");r=Math.random;e=prompt(a=[]);for(i=0;i<e;i++){a[i]={x:r()*300,y:r()*150};for(j in a)c.beginPath()+c.moveTo(a[i].x,a[i].y)+c.lineTo(a[j].x,a[j].y)+c.stroke()}</script>

JSFiddle


Questo è verificato, l'ho fatto funzionare!
Alexander Craggs,

È possibile utilizzare ~~invece di m.floorsalvare 5 byte
William Barbosa,

Effettuare la canvaschiusura automatica di tag e rimuovere le virgolette singole attorno al idvalore di: <canvas id=q />. (Nota che devi lasciare uno spazio tra l'ultimo valore dell'attributo e l'auto-chiusura /.) A proposito, in Firefox funziona bene senza m.floor()e ~~.
arte


La prima volta che ho provato jsfiddle di manatwork, ho pensato che la casella di avviso avesse bisogno di una password! Ero perplesso. Quanto può essere stupida una persona. Credo che ciò sia sufficientemente diverso dalla risposta di un'altra persona per giustificare un altro posto nella classifica. Altre persone pensano che questo sia abbastanza diverso?
Alexander Craggs,

2

C # WPF 306 296

partial class W:Window{public W(){InitializeComponent();int x=5,i=0,j,z=200;int[]f=new int[x],s=new int[x];var r=new Random();var X=new Grid();AddChild(X);for(;i<x;i++){f[i]=r.Next(z);s[i]=r.Next(z);for(j=i;j>=0;)X.Children.Add(newLine(){X1=s[j],Y1=f[j--],X2=s[i],Y2=f[i],Stroke=Brushes.Red});}}}

Vorrei dire che potrei rimuovere Stroke = Brushed.Red. Ma purtroppo questo significa che sto dipingendo linee trasparenti, e la mia ipotesi è che non conterebbe davvero. : PI può anche radere un paio di byte semplicemente creando una griglia nella vista XAML. Ma ciò sembrava ingiusto, quindi ho spogliato la XAML per diventare una tela bianca. (Non conto XAML come byte ...)

partial class W:Window
{
    public W()
    {
        InitializeComponent();
        int x=5,i=0,j,z=200;
        int[]f=new int[x],s=new int[x];
        var r = new Random();
        var X = new Grid();
        AddChild(X);
        for (;i<x;i++)
        {
            f[i]=r.Next(z);
            s[i]=r.Next(z);
            for (j=i;j>=0;)
                X.Children.Add(new Line()
                {
                    X1 = s[j],
                    Y1 = f[j--],
                    X2 = s[i],
                    Y2 = f[i],
                    Stroke = Brushes.Red
                });
        }
    }
}

XAML

<Window x:Class="W"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
</Window>

5

5

100

100


4
Poiché si tratta di WPF, si arresterà in modo anomalo a circa 3k punti per l'eccezione di memoria esaurita.
WozzeC,

Testato e confermato, ben fatto nel farlo in C # WPF!
Alexander Craggs,

2
Potrebbe essere in cortocircuito usando varquando si dichiarano le variabili.
MarcinJuraszek,

Sì, davvero. Grazie! Sono stato anche in grado di rimuovere "questo" da "this.AddChild".
WozzeC,

1

HPPPL, 231 220

(Linguaggio di programmazione HP Prime per la calcolatrice grafica a colori HP Prime)

lo golfò. 11 caratteri in meno disegnando tutte le possibili nuove linee subito dopo ogni nuova creazione di punti. Solo due loop nidificati anziché i tre precedenti.

export c(n) begin rect();local g,h;a:=makemat(0,n,2);for g from 1 to n do a(g,1):=ip(random(1,320));a(g,2):=ip(random(1,240));if g>1 then for h from 1 to g-1 do line_p(a(h,1),a(h,2),a(g,1),a(g,2));end;end;end;freeze;end;

Ungolfed (270 caratteri):

export randomnet(n)
begin
rect();
local g,h;
a:=makemat(0,n,2);
for g from 1 to n do
  a(g,1):=ip(random(1,320));
  a(g,2):=ip(random(1,240));
    if g>1 then
      for h from 1 to g-1 do
        line_p(a(h,1),a(h,2),a(g,1),a(g,2));
      end;
    end;
end;
freeze;
end;

esempi:

c (10)

connect_10_points_HPPPL

connect_10_points_HPPPL_2

c (30)

connect_30_points_HPPPL

La calcolatrice grafica a colori HP Prime ha un display a colori da 320x240 pixel.

inserisci qui la descrizione dell'immagine

Un emulatore che funziona anche con il kit di connettività è disponibile sul sito Web HP o qui: http://www.hp-prime.de/en/category/6-downloads

... sto ancora aspettando che arrivi l'hardware. Seguirà l'aggiornamento sul tempo di esecuzione.

Oggi è arrivato il mio HP Prime. Ecco il tempo di esecuzione per n = 100 su un calcolatore effettivo:

tempo medio di esecuzione

Circa 0,65 s per n = 100.

L'emulatore è circa 4 volte più veloce (circa 0,178 s) sul mio laptop Core i5 2410M.


1
Bene, non ho mai nemmeno sentito parlare di quel linguaggio di programmazione, ma ha funzionato sull'emulatore, quindi congratulazioni! Ti ho aggiunto alla classifica.
Alexander Craggs,

Grazie. Non appena avrò l'hardware, controllerò i tempi di esecuzione. L'emulatore è più veloce del calcolatore reale. Ma penso che il limite di 5 minuti per n = 100 sia molto generoso per la calcolatrice.
ML

1

NetLogo, 51 byte

crt 9 [create-links-with other turtles fd random 9]

Sostituisci 9s con altre costanti o variabili secondo necessità.

Uscita NetLogo


1
Aggiunto alla classifica! Temo di non essere del tutto sicuro di come testarlo. Ho scaricato NetLogo e l'ho digitato nella sezione osservatore, quindi ho provato a impostarlo come comando penna su un grafico, né sembrava funzionare. Se potessi darmi alcuni suggerimenti, sarei in grado di confermarlo =)
Alexander Craggs

F'rinstance: vai nella scheda 'code' e avvolgi quella linea in una funzione che inizia "per andare" e termina con "fine". Quindi puoi aggiungere un pulsante al primo che chiama "go" e premerlo.
wyldstallyns,

1
Confermato! Bella soluzione È fantastico come se sai cos'è una tartaruga puoi leggere il codice come se fosse inglese. Quasi sicuramente la soluzione più leggibile di sempre.
Alexander Craggs,

! Neat Grazie! Sono stato alla ricerca di domande come questa che NetLogo è orientata a risolvere. Ironia della sorte, sto anche costruendo un front-end pitone per rimuovere quella bella verbosità per cercare di rendere NetLogo un vero contendente di golf.
wyldstallyns,

1
Eh, ho pensato che fosse ancora un'ottima risposta! Non vedo l'ora di vedere il tuo codice Pyth NetLogo, spero sia uno spettacolo da vedere!
Alexander Craggs,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.