Code le plus court pour placer des points au hasard et les connecter

26

La tâche

C'est une tâche de codage assez simple, tout ce que votre programme a à faire est de placer un point sur une toile (ou votre alternative dans un autre langage de codage) et de le connecter à tous les points déjà placés. Votre programme doit prendre en une seule entrée, le nombre de points qui doivent être placés, et produire une sorte d'affichage avec les points connectés. Exemple

Exigences

  • Je dois être en mesure de l'exécuter, ce qui signifie qu'il doit avoir un compilateur / outil pour l'exécuter en ligne ou accessible au téléchargement.
  • Vous êtes autorisé à utiliser n'importe quelle bibliothèque créée avant la définition de ce défi, tant qu'elle n'a pas été conçue dans le seul but de résoudre ce problème.
  • Il s'agit d'une tâche de code la plus courte, ce qui signifie des caractères. Les commentaires, le code qui change de couleur (pour la beauté) et les bibliothèques seront ignorés.
  • Votre réponse doit être unique, ne volez pas le code d'autres personnes, raccourcissez-le de quelques caractères et republiez-le.
  • Il doit pouvoir fonctionner en moins de 5 minutes, pour les valeurs de 5 et 100. Il doit également utiliser une résolution d'au moins 200 * 200 et placer chaque point dans un emplacement aléatoire sur la toile en utilisant une distribution non triviale.

Classement actuel

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

Si vous m'avez manqué, je suis vraiment désolé, ajoutez simplement un commentaire à votre travail en le disant et je l'ajouterai dès que je le verrai =)

TL; DR

  • Entrée - Nombre de points (int, peut être codé en dur)
  • Sortie - Image de points placés au hasard, tous connectés les uns aux autres (graphique)
  • Gagnant - Code le plus court
Alexander Craggs
la source
1
Suis-je autorisé à avoir des bibliothèques de mathématiques? Quelles bibliothèques essayez-vous exactement d'éviter avec l'exigence n ° 2?
Nathan Merrill
2
Y a-t-il une limitation de résolution? C'est assez facile si vous me laissez sortir une image 1x1
John Dvorak
3
Lorsque vous dites qu'il n'y a pas de bibliothèques "mathématiques", qu'en est-il des langues dans lesquelles le PRNG par défaut est inclus dans "mathématiques"? Je ne veux pas écrire de générateur.
Geobits
1
Étant donné que vous interdisez le code de bibliothèque qui se rapporte directement à la tâche, et que cette tâche consiste essentiellement à dessiner un graphe de réseau aléatoire, l'utilisation de fonctions natives de dessin de graphe n'est-elle pas également interdite? Cette restriction est loin d'être bien définie.
compérendin
3
@PopeyGilbert Je dois dire que je n'ai jamais vu un nouvel utilisateur aussi sensible aux problèmes avec sa question et aussi tester individuellement chaque réponse et maintenir un classement. Bon travail et bienvenue à PPGC!
Hobbies de Calvin

Réponses:

21

Matlab (22)

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

On suppose que n est le nombre de points, et cela ressemble à n = 10: random graph

n=6:

random

Explication

gplotest une commande pour tracer des graphiques. Le premier argument est une n x nmatrice d'incidence (pleine de uns, évidemment). Le deuxième argument devrait être une n x 2matrice avec les coordonnées des points, mais peu importe si la deuxième dimension est plus grande que 2, donc je génère juste une n x nmatrice de valeurs aléatoires (qui est 2 caractères plus courte que la génération d'une n x 2matrice).

Liens vers la documentation

flawr
la source
Jamais utilisé Matlab, il faudra donc un moment pour tester - Mais à partir de l'image, cela semble correct! Félicitations pour le faire en 22 caractères. EDIT - Il s'avère que je ne peux pas tester cela, mais en regardant l'image, cela semble correct, donc je vais le permettre. Cependant, quelqu'un d'autre peut-il le tester s'il vous plaît?
Alexander Craggs
3
Merci =) Vous pouvez le tester ici: octave-online.net Puisque l'octave est fondamentalement la version opensource de MatLab.
flawr
27

Java: 318 282 265

Parce que, tu sais, 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();}}

C'est juste une boucle simple qui crée des points aléatoires et trace des lignes entre le point actuel et tous les précédents.

Exemple avec 25 points:

enter image description here

Avec les sauts de ligne et les importations:

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();
    }
}

Edit: Puisque nous ne comptons pas les importations, j'ai importé quelques éléments supplémentaires pour enregistrer certains personnages plus tard.

Édition 2: OP a ajouté une allocation pour le nombre de points codés en dur. -17 caractères :)

Géobits
la source
Agréable! Félicitations d'être le premier.
Alexander Craggs
2
D'abord, mais je suis sûr que ce ne sera pas le plus court par un long shot. Parce que, tu sais, Java;)
Geobits
3
J'admire les gens qui résolvent toujours la tâche en Java, même sans espoir, je serais même trop paresseux pour commencer l'éclipse ... alors +1 =)
flawr
1
@Chruncher Oui, java n'est certainement pas la meilleure langue pour le golf de code. Cependant, c'était la première langue que j'ai apprise, et c'est assez facile à apprendre. Cela m'a également tenu en bonne position, et c'est personnellement ma langue préférée.
Alexander Craggs
1
Il n'est pas nécessaire de définir le paramètre principal comme final. Vous pouvez couper ces 6 personnages
Cruncher
11

Python 2-41 35

Après avoir importé certaines bibliothèques comme autorisé pour ce défi

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

nous pouvons tracer un certain nombre de points connectés avec une seule ligne de code:

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

(La capture d'écran a été générée avec 10 points.)

Falko
la source
[Se référant à un commentaire supprimé:] Je sais, mais ici "les bibliothèques seront ignorées". Sinon, je le mettrais certainement en œuvre différemment. L'utilisation de ces bibliothèques ne sauvegarde pas suffisamment de caractères pour justifier les importdéclarations dans un défi de golf de code normal.
Falko
le pylab fait-il partie de la distribution standard? J'imagine que nous ne pouvons pas simplement importer tout ce que nous aimons. Sous cette métrique, vous pouvez implémenter n'importe quoi en python avec une seule instruction d'importation.
Cruncher
Oui il est . Je viens de faire ce que je pensais être valable. Mais je ne suis pas sur. Et regarder les commentaires montre une énorme discussion en cours. Dès que cela sera clarifié, je serais prêt à ajuster mon code.
Falko
Bien que cette vue des concours sur les bibliothèques autorisées semble changer d'un jour à l'autre, PyLab devrait certainement être autorisé.
Alexander Craggs
8

Mathematica 95 87

Avec l'aide de Bélisaire.

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

n = 5

5


n = 100

Durée: 2,082654 s

100

DavidC
la source
Ceci est vérifié, je l'ai fait fonctionner! Est-ce que Mathematica compte normalement comme une langue?
Alexander Craggs
1
@PopeyGilbert Bien sûr que oui. Jusqu'à présent, il y a environ 750 réponses dans Mathematica.
Geobits
Oh, wow, d'accord! Assez juste <3
Alexander Craggs
Je pense que c'est plus court et satisfait aux règlesCompleteGraph[100, VertexCoordinates -> RandomReal[{0, 199}, {100, 2}]]
Dr. belisarius
Merci, vous avez raison. Je pensais que je ne pouvais pas gagner alors j'ai pensé que je serais jolie (VertexSize -> {2,2}. J'ai cependant ignoré le fait qu'il 100n'était pas nécessaire d'inclure, et Input[]c'était facultatif.
DavidC
7

Python 2, 158

Importer des instructions non incluses dans le nombre de caractères, comme indiqué à la question ("les bibliothèques seront ignorées").

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()

Exemples de sorties:

n = 2 (...):

n = 2

n = 10 (ressemble à une chose ou quelque chose de fantaisie en 3D):

n = 10

n = 100 (on dirait que quelqu'un est allé BLELEEEAARARGHHH avec un stylo rouge):

n = 100

n = 500, 1000, 10000 (s'exécute en environ 1,5 seconde, 5-6 secondes et 3,5 minutes respectivement):

Remarque: le 10000 points a été exécuté avec une version légèrement optimisée qui a changé la ligne 3 (non compris les importations) en ceci:

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

Sinon, cela aurait pris une éternité. : P

Non golfé:

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()
Poignée de porte
la source
1
Félicitations d'être actuellement le participant le plus court! Aimez votre commentaire sur n = 100. Il serait peut-être préférable de mettre image.new et image_size à 800. Cela pourrait paraître moins bizarre =)
Alexander Craggs
@PopeyGilbert Je peux donc supprimer les instructions d'importation des miennes? J'ai supposé que «ignorer les bibliothèques» signifiait que la bibliothèque elle-même n'était pas comptée (comme d'habitude).
Geobits
Oui, parce que certains langages ont très peu de fonctions de base et doivent importer tout leur contenu. Si vous pensez que ce n'est pas des géobits justes, alors dites s'il vous plaît =) Je veux essayer de rendre cela juste.
Alexander Craggs
@PopeyGilbert Je viens de demander parce que ce n'est pas la norme et je voulais clarifier les choses avant de
couper
1
Étant donné que la résolution ne doit être d' au moins 200x200, vous pouvez enregistrer quelques caractères (5, je pense) en la définissant x=255et en l'utilisant pour remplacer les instances de 200et 255.
concerendin
5

R, 66

Celui-ci est une triche limite mais je pense toujours que c'est dans les règles. Configurer en chargeant le igraphpackage avec library(igraph), qui peut être téléchargé depuis CRAN avec install.packages("igraph"). Attribuez ensuite l'entrée à la variable N. Selon les règles, celles-ci ne sont pas comptées dans le total.

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

N = 50

entrez la description de l'image ici

Notez que ce code dessine également des auto-connexions. Les éliminer (bien qu'il n'y ait aucune règle contre eux) ajoute 6 caractères:

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

R, 141

Il s'agit d'une solution honnête à la bonté dans la 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]))

même si vous devez toujours entrer Nà la main.

N = 50

entrez la description de l'image ici

Je me demande si une forboucle serait moins de caractères que applymais je suis content de ce que j'ai.

shadowtalker
la source
J'accepte les auto-connexions, techniquement, la question est de tracer une ligne sur TOUS les points. Je l'ai testé et confirmé également.
Alexander Craggs
Cela vous dérange-t-il des flèches reliant les points? Cela sauvera encore 5 en éliminant ,"un"à la fin de la première ligne.
shadowtalker
Si cela ne vous dérange pas, je pense que nous devrions le garder afin que ce soit des lignes reliant chacun des points. De cette façon, la réponse apparaîtra similaire dans chacune des réponses.
Alexander Craggs du
5

QBasic ou QuickBasic, 130 caractères

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

Variations de code

  • Si vous ne voulez pas qu'on vous demande une graine, remplacez RANDOMIZEparRANDOMIZE TIMER .
  • Si vous souhaitez être invité à entrer N, remplacez N=10par INPUT Nou INPUT "N";N.

Exemples de parcours

Pour N=5, testé avec QBasic 1.1 exécuté sur DOSBox 0.74:

Pour N=100, testé avec QBasic 1.1 exécuté sur DOSBox 0.74:

ILoveQBasic
la source
Oh, wow, belle image pour N = 5! J'adore que ce soit un pentagramme lorsque la graine a 42 ans. Testé et confirmé.
Alexander Craggs
4

Bash + ImageMagick: 148 caractères

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:

Exemple d'exécution:

bash-4.3$ time ./line.sh 5

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

Exemple de sortie:

5 points connectés

Exemple d'exécution:

bash-4.3$ time ./line.sh 25

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

Exemple de sortie:

25 points connectés

Exemple d'exécution:

bash-4.3$ time ./line.sh 100

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

Exemple de sortie:

100 points connectés

homme au travail
la source
Testé et confirmé. Manatwork bien fait!
Alexander Craggs
Je suis vraiment désolé, ai-je complètement oublié d'ajouter ceci aux tableaux des leaders? Je vais le faire maintenant.
Alexander Craggs
4

TCL 161 caractères

De toute évidence, cela ne va pas gagner, mais en bat plusieurs autres présentés ici, et je pense qu'il fait bon usage d'un langage très sous-évalué.

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}}

Exemple

La taille de toile par défaut sur mon système semble être 291x204. Je ne sais pas pourquoi, mais son utilisation permet d'économiser 13 caractères.

Assez rapide, 400 points en <5 secondes, 500 en ~ 10 s. La taille et les points peuvent être mis à l'échelle arbitrairement et les couleurs et les styles de ligne peuvent être modifiés, au détriment des caractères bien sûr. Sans golf et en utilisant des variables pour le rendre plus clair et plus facile à mettre à l'échelle et à colorer:

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
        }
}       
Kevin
la source
1
L'image semble correcte, malheureusement mon ordinateur ne fonctionne pas, je vais donc la tester plus tard. Félicitations pour avoir utilisé un langage aussi peu apprécié.
Alexander Craggs
Je viens de le confirmer, félicitations pour une entrée réussie!
Alexander Craggs
129
sergiol
122
sergiol
4

[TI-Nspire] Lua - 145 135 130

(Version fixe mise à jour)

Capture d'écran avec n = 10

"Importer" math.random en tant que "r", d'abord, comme autorisé: r=math.random

Code réel:

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

Remarque: Ce code fonctionne sur les calculatrices TI-Nspire (TI a ajouté des scripts Lua aux systèmes d'exploitation récents de cette plate-forme, avec une API basée sur les données permettant aux utilisateurs de représenter des trucs, etc. par exemple.)
Il peut également être essayé en ligne ici (effacer simplement le script de démonstration et le mien avant avec n=10par exemple)

Adriweb
la source
Il est temps pour moi d'apprendre Lua!
Beta Decay
1
Cela semble souffrir par la même erreur que fuandon est supprimé PowerShell réponse et Vlo est également supprimé R réponse: vous connectez les points en paire, pas tous les points avec tous les autres points. (Lua est si rare sur ce site. Veuillez corriger votre code au lieu de le supprimer.)
manatwork
Oh, ma mauvaise - je vais réparer ça bientôt!
Adriweb
Voilà, merci de m'avoir
prévenu
Cela a été testé et confirmé! Bravo pour l'utilisation de Lua.
Alexander Craggs
3

Formulaires 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

Tracer en utilisant 5 points

N = 50

Tracer en utilisant N = 50

Le code complet est donné ci-dessous

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();
        }
    }
}
Zed Coder
la source
Testé et confirmé! Lorsque j'ai vérifié le nombre de caractères, j'ai utilisé le code complet et j'ai été surpris quand il s'agissait de <700 caractères ...>. <. Quoi qu'il en soit, félicitations pour avoir réussi votre entrée!
Alexander Craggs
N'y a-t-il pas un raccourci comme Pens.Tanau lieu de new Pen(Color.Tan)?
CompuChip
Changé pour utiliser Pens.Tan, économisant 10 supplémentaires
Zed Coder
2

HTML / JS, 210, grâce au 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

scrblnrd3
la source
Ceci est vérifié, je l'ai fait fonctionner!
Alexander Craggs
Vous pouvez utiliser ~~au lieu de m.floorpour économiser 5 octets
William Barbosa
Faire l' canvasauto-fermeture de la balise et enlever les guillemets simples autour de la idvaleur: <canvas id=q />. (Notez que vous devez laisser un espace entre la dernière valeur d'attribut et la fermeture automatique /.) BTW, dans Firefox fonctionne très bien sans m.floor()et ~~.
manatwork
219 personnages: jsfiddle.net/e866azzs/5
manatwork
La première fois que j'ai essayé jsfiddle de manatwork, j'ai pensé que la boîte d'alerte avait besoin d'un mot de passe! J'étais perplexe. Comme une personne peut être stupide. Je crois que cela est suffisamment différent de la réponse d'une autre personne pour justifier une autre place dans le tableau des leaders. D'autres personnes pensent-elles que c'est assez différent?
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});}}}

Je voudrais dire que je pourrais supprimer Stroke = Brushed.Red. Mais malheureusement, cela signifie que je peins des lignes transparentes, et je suppose que cela ne compterait pas vraiment. : PI peut également raser quelques octets en créant simplement une grille dans la vue XAML. Mais cela semblait injuste, alors j'ai dépouillé le XAML pour devenir une toile vierge. (Je ne compte pas le XAML comme octets ...)

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

WozzeC
la source
4
Comme il s'agit de WPF, il se bloquera à environ 3 000 points pour l'exception de mémoire insuffisante.
WozzeC
Testé et confirmé, bravo pour le faire en C # WPF!
Alexander Craggs
2
Pourrait être un peu court-circuité en utilisant varlors de la déclaration des variables.
MarcinJuraszek
Oui en effet. Merci! J'ai également pu supprimer "this" de "this.AddChild".
WozzeC
1

HPPPL, 231 220

(Langage de programmation HP Prime pour la calculatrice graphique couleur HP Prime)

joué au golf. 11 caractères de moins en dessinant toutes les nouvelles lignes possibles juste après chaque nouvelle création de point. Seulement deux boucles imbriquées au lieu des trois précédentes.

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;

Non golfé (270 caractères):

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;

exemples:

c (10)

connect_10_points_HPPPL

connect_10_points_HPPPL_2

c (30)

connect_30_points_HPPPL

La calculatrice graphique couleur HP Prime dispose d'un écran couleur 320x240 pixels.

entrez la description de l'image ici

Un émulateur qui fonctionne également avec le kit de connectivité est disponible sur le site Web HP ou ici: http://www.hp-prime.de/en/category/6-downloads

... toujours en attente de l'arrivée du matériel. Une mise à jour sur le temps d'exécution suivra.

Aujourd'hui, mon HP Prime est arrivé. Voici le temps d'exécution pour n = 100 sur une calculatrice réelle:

temps d'exécution moyen

Environ 0,65 s pour n = 100.

L'émulateur est environ 4 fois plus rapide (environ 0,178 s) sur mon ordinateur portable Core i5 2410M.

ML
la source
1
Eh bien, je n'ai même jamais entendu parler de ce langage de programmation, mais cela a fonctionné sur l'émulateur, alors félicitations! Je vous ai ajouté au classement.
Alexander Craggs
Merci. Dès que j'ai le matériel, je vérifie le temps d'exécution. L'émulateur est plus rapide que la calculatrice réelle. Mais je pense que la limite de 5 minutes pour n = 100 est très généreuse pour la calculatrice.
ML
1

NetLogo, 51 octets

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

Remplacez 9s par d'autres constantes ou variables si nécessaire.

Sortie NetLogo

wyldstallyns
la source
1
Ajouté au classement! J'ai peur de ne pas savoir comment tester cela. J'ai téléchargé NetLogo et je l'ai tapé dans la section Observateur, puis j'ai essayé de le définir comme une commande de stylet sur un tracé, aucun ne semblait fonctionner. Si vous pouviez me donner quelques conseils, je serais en mesure de le confirmer =)
Alexander Craggs
F'rinstance: allez dans l'onglet 'code' et encapsulez cette ligne dans une fonction qui commence "to go" et s'arrête avec "end". Ensuite, vous pouvez ajouter un bouton au premier qui appelle "go" et le frapper.
wyldstallyns
1
Confirmé! Belle solution. C'est génial comment si vous savez ce qu'est une tortue, vous pouvez lire le code comme s'il était en anglais. C'est certainement la solution la plus lisible à ce jour.
Alexander Craggs
Soigné! Merci! J'ai été à la recherche de questions comme celle-ci que NetLogo vise à résoudre. Ironiquement, je construis également un frontal pyth-ish pour supprimer cette belle verbosité pour essayer de faire de NetLogo un véritable concurrent de golf.
wyldstallyns
1
Eh, j'ai pensé que c'était toujours une excellente réponse! J'ai hâte de voir votre code Pyth NetLogo, devrait, espérons-le, être un spectacle à voir!
Alexander Craggs du