무작위로 포인트를 배치하고 연결하는 가장 짧은 코드


26

작업

이것은 매우 간단한 코딩 작업입니다. 프로그램에서 캔버스 (또는 다른 코딩 언어의 대안)에 포인트를 놓고 이미 배치 된 모든 점에 연결하면됩니다. 프로그램은 하나의 입력과 배치해야하는 도트 수를 가져 와서 도트가 연결된 상태에서 일종의 디스플레이를 출력해야합니다.

요구 사항

  • 나는 그것을 실행할 수 있어야한다. 즉, 온라인으로 또는 공개적으로 다운로드 할 수있는 컴파일러 / 도구가 있어야한다는 것을 의미한다.
  • 이 문제를 해결하기위한 목적으로 만 설계된 것이 아니라면이 문제가 설정되기 전에 만들어진 라이브러리를 사용할 수 있습니다.
  • 이것은 문자를 의미하는 가장 짧은 코드 작업입니다. 주석, 색상 변경 (예쁜) 및 라이브러리는 무시됩니다.
  • 답은 고유해야하며 다른 사람들의 코드를 훔치지 말고 몇 글자를 줄인 후 다시 게시하십시오.
  • 5와 100의 값에 대해 5 분 이내에 실행될 수 있어야합니다. 또한 최소 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

  • 입력-도트 수 (int, 하드 코딩 가능)
  • 출력-무작위로 배치 된 점의 이미지, 모두 서로 연결됨 (그래픽)
  • 우승자-최단 코드

1
수학 라이브러리가 허용됩니까? 요구 사항 # 2로 정확히 피하려고하는 라이브러리는 무엇입니까?
Nathan Merrill

2
해결에 대한 제한이 있습니까? 1x1 이미지를 출력하게한다면 매우 쉽습니다
John Dvorak

3
"math"라이브러리를 말하지 않으면 "math"에 기본 PRNG가 포함 된 언어는 어떻습니까? 생성기를 작성하고 싶지 않습니다.
Geobits

1
작업과 직접 관련된 라이브러리 코드를 허용하지 않으며 해당 작업은 기본적으로 임의 네트워크 그래프를 그리는 것이므로 기본 그래프 그리기 기능을 사용할 수 없습니까? 이 제한은 잘 정의되어 있지 않습니다.
comperendinous

3
@PopeyGilbert 나는 새로운 사용자가 질문에 대한 반응을 보지 못하고 각 답변을 개별적으로 테스트하고 리더 보드를 유지하는 것을 본 적이 없다고 말해야합니다. PPGC에 오신 것을 환영합니다!
Calvin 's Hobbies

답변:


21

MATLAB (22)

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

n은 점의 수라고 가정하고 n = 10의 경우 다음과 같습니다. 무작위 그래프

n=6:

무작위

설명

gplot그래프를 그리는 명령입니다. 첫 번째 논증은 n x n발병률 행렬입니다. 두 번째 인수는 n x 2점의 좌표 가있는 행렬 이어야 하지만 두 번째 차원이 2보다 큰 경우 중요하지 않으므로 n x n임의 값 의 행렬을 생성합니다 ( 매트릭스를 생성하는 것보다 2 문자가 짧음 n x 2).

문서에 대한 링크


Matlab을 사용하지 않았으므로 테스트하는 데 약간의 시간이 걸립니다. 그러나 이미지에서는 괜찮아 보입니다! 22 자로 된 것을 축하합니다. 편집-나는 이것을 테스트 할 수 없다는 것이 밝혀졌지만 이미지를 보면 그것이 올바른 것처럼 보이기 때문에 허용 할 것입니다. 그러나 다른 누군가가 그것을 테스트 할 수 있습니까?
Alexander Craggs

3
감사합니다 =) 여기에서 테스트 할 수 있습니다 : octave-online.net 옥타브는 기본적으로 MatLab의 오픈 소스 버전이므로.
flawr

27

자바 : 318 282 265

왜냐하면, 자바는 :

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

임의의 점을 만들고 현재 점과 모든 이전 점 사이에 선을 그리는 간단한 루프입니다.

25 개의 점이있는 예 :

여기에 이미지 설명을 입력하십시오

줄 바꿈 및 가져 오기

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

편집 : 가져 오기를 계산하지 않기 때문에 나중에 일부 문자를 저장하기 위해 몇 가지 더 가져 왔습니다.

편집 2 : OP는 도트 수의 하드 코딩에 대한 여유를 추가했습니다. -17 자 :)


좋은! 첫 번째가 된 것을 축하합니다.
Alexander Craggs

2
첫째, 그러나 그것이 긴 샷으로 가장 짧지는 않을 것이라고 확신합니다. Java
,;

3
나는 항상 자바로 작업을 해결하는 사람들을 존경합니다. 심지어 희망이 없더라도 일식을 시작하기에는 너무 게으
르기도합니다

1
@Chruncher 네, java는 코드 골프에서 가장 좋은 언어는 아닙니다. 그러나 내가 배운 첫 번째 언어 였고, 배우는 것은 매우 쉽습니다. 그것은 또한 나를 대신해서 좋게 해 주었고, 개인적으로, 내가 가장 좋아하는 언어입니다.
Alexander Craggs

1
main의 매개 변수를 final로 정의 할 필요는 없습니다. 당신은 그 6 개의 문자를 잘라낼 수 있습니다
Cruncher

11

파이썬 2-41 35

이 챌린지에 허용 된대로 일부 라이브러리를 가져온 후

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

한 줄의 코드로 몇 개의 연결된 점을 그릴 수 있습니다.

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

(스크린 샷은 10 포인트로 생성되었습니다.)


[삭제 된 댓글 참조 :] 알고 있지만 여기서 "라이브러리는 무시됩니다". 그렇지 않다면 분명히 다르게 구현할 것입니다. 이러한 라이브러리를 사용한다고 import해서 정상적인 코드 골프 챌린지에서 진술 을 정당화하기에 충분한 문자가 절약되지는 않습니다 .
Falko

pylab은 표준 배포판의 일부입니까? 원하는 것을 가져올 수는 없다고 생각합니다. 해당 메트릭에서 단일 import 문으로 파이썬으로 무엇이든 구현할 수 있습니다.
Cruncher

그것입니다 . 방금 유효하다고 생각한 것을했습니다. 그러나 나는 확실하지 않다. 그리고 의견을 살펴보면 진행중인 큰 토론이 표시됩니다. 이것이 명확 해지면 내 코드를 기꺼이 조정할 것입니다.
Falko

어떤 도서관이 허용되는지에 대한이 경쟁 견해는 매일 바뀌는 것처럼 보이지만 PyLab은 반드시 허용되어야합니다.
Alexander Craggs

8

매스 매 티카 95 87

벨리 사리우스의 도움으로.

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

n = 5

5


n = 100

타이밍 : 2.082654 초

100


이것은 확인되었습니다, 작동하도록했습니다! Mathematica는 보통 언어로 계산합니까?
Alexander Craggs

1
@PopeyGilbert 물론입니다. 지금까지 Mathematica 에는 ~ 750 개의 답변 이 있습니다 .
Geobits

오,와! 충분히 공정한 <3
Alexander Craggs 14:01에

Methinks 이것은 더 짧고 규칙을 만족합니다CompleteGraph[100, VertexCoordinates -> RandomReal[{0, 199}, {100, 2}]]
Dr. belisarius

고마워요 나는 내가 이길 수 없다고 생각해서 그것을 예쁘게 만들 것이라고 생각했다 (VertexSize-> {2,2}. 그러나 100포함 할 필요가없는 사실을 간과했지만 Input[]선택 사항이었다.
DavidC

7

파이썬 2, 158

질문에 언급 된대로 문자 수에 포함되지 않은 가져 오기 문 ( "라이브러리는 무시 됨")

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

샘플 출력 :

n = 2 (...) :

n = 2

n = 10 (공상적인 3d 또는 다른 것 같습니다) :

n = 10

n = 100 (누군가가 빨간색 펜으로 BLELEEEAARARGHHH로 간 것처럼 보입니다) :

n = 100

n = 500, 1000, 10000 (각각 약 1.5 초, 5-6 초 및 3.5 분으로 실행) :

참고 : 10000 포인트 하나는 라인 3 (수입 제외)을 다음과 같이 약간 최적화 된 버전으로 실행했습니다.

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

그렇지 않으면 영원히 걸릴 것입니다. :피

언 골프 드 :

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
현재 가장 짧은 참가자가 된 것을 축하합니다! n = 100에 대한 귀하의 의견을 사랑하십시오. image.new 및 image_size를 800으로 설정하는 것이 가장 좋습니다. 이상하게 보이지 않을 수도 있습니다 =)
Alexander Craggs

@PopeyGilbert 그래서 내 수입 명세서를 제거 할 수 있습니까? "라이브러리 무시"는 라이브러리 자체가 (평소대로) 계산되지 않았 음을 의미한다고 가정했습니다.
Geobits

예, 일부 언어에는 기본 기능이 거의 없으므로 모든 내용을 가져와야합니다. 이것이 공정한 Geobits가 아니라고 생각되면 =)라고 말하십시오. 나는 이것을 공정하게 만들고 싶습니다.
Alexander Craggs

@PopeyGilbert 나는 그것이 표준이 아니기 때문에 방금 물었고 내 코드에서 더 많은 문자를
자르기

1
해상도는 것으로되어 있기 때문에 적어도 하여 200x200을, 당신은 설정하여 몇 글자를 (5, 내 생각) 줄일 수 x=255와의 인스턴스를 대체하기 위해 그것을 사용 200하고 255.
comperendinous

5

제 66 화

이것은 경계선 부정 행위이지만 여전히 규칙 내에 있다고 생각합니다. 로 igraph패키지를 로드하여 설정하면 library(igraph)CRAN에서 다운로드 할 수 있습니다 install.packages("igraph"). 그런 다음 입력을 variable에 지정하십시오 N. 규칙에 따라 총계에는 포함되지 않습니다.

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

N = 50

여기에 이미지 설명을 입력하십시오

이 코드는 또한 자체 연결을 그립니다. 그것들을 제거하면 (거의 규칙은 없지만) 6 문자가 추가됩니다.

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

R, 141

이것은 기본 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]))

여전히 N직접 입력해야합니다 .

N = 50

여기에 이미지 설명을 입력하십시오

for루프가 문자 수보다 적을 지 궁금 apply하지만 내가 가진 것에 만족합니다.


기술적으로 문제는 모든 지점에 선을 그리는 것입니다. 나는 그것을 테스트하고 또한 확인했다.
Alexander Craggs

포인트를 연결하는 화살표가 있습니까? ,"un"첫 번째 줄 끝에서 제거 하여 5를 더 절약 할 수 있습니다.
shadowtalker

마음에 들지 않으면 각 점을 연결하는 선이되어야한다고 생각합니다. 이렇게하면 각 답변에서 답변이 비슷하게 나타납니다.
Alexander Craggs

5

QBasic 또는 QuickBasic, 130 자

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

코드 변형

  • 당신이 씨에 대한 메시지를 표시하지 않으려면, 교체 RANDOMIZE와 함께 RANDOMIZE TIMER.
  • 당신이 N에 대해 확인 메시지를 표시하려면, 대신 N=10INPUT N또는 INPUT "N";N.

샘플 런

의 경우 N=5DOSBox 0.74에서 실행되는 QBasic 1.1로 테스트되었습니다.

의 경우 N=100DOSBox 0.74에서 실행되는 QBasic 1.1로 테스트되었습니다.


오, 와우, N = 5에 대한 좋은 이미지! 씨앗이 42 일 때 오각형 인 것을 좋아하십시오. 테스트하고 확인했습니다.
Alexander Craggs

4

배쉬 + ImageMagick : 148 자

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:

샘플 실행 :

bash-4.3$ time ./line.sh 5

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

샘플 출력 :

연결된 5 점

샘플 실행 :

bash-4.3$ time ./line.sh 25

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

샘플 출력 :

연결된 포인트 25 개

샘플 실행 :

bash-4.3$ time ./line.sh 100

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

샘플 출력 :

연결된 포인트 100 개


테스트 및 확인 잘 했어!
Alexander Craggs

죄송합니다. 리더 보드에 추가하는 것을 완전히 잊었습니까? 지금 할게요
Alexander Craggs

4

TCL 161 자

분명히 이길 수는 없지만 여기에 제시된 다른 몇 가지를 능가합니다. 저평가 된 언어를 잘 활용한다고 생각합니다.

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

예

내 시스템의 기본 캔버스 크기는 291x204입니다. 이유는 확실하지 않지만 사용하면 13자를 절약 할 수 있습니다.

상당히 빠르며 <5 초 안에 400 포인트, ~ 10 초에 500 포인트. 물론 크기와 포인트는 임의로 크기를 조정할 수 있으며 물론 문자와 비용으로 색상과 선 스타일을 변경할 수 있습니다. 골프를 치지 않고 변수를 사용하여보다 명확하고 쉽게 스케일링하고 색상을 지정할 수 있습니다.

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
불행히도 내 컴퓨터가 작동하지 않아 이미지를 테스트 한 후 나중에 테스트 해 보겠습니다. 이해가되지 않는 언어를 사용해 주셔서 감사합니다.
Alexander Craggs

성공적으로 입장을 축하합니다!
Alexander Craggs



4

[TI-Nspire] 루아 - 145 135 130

(고정 버전 업데이트)

n = 10 인 스크린 샷

허용 된대로 math.random을 "r"로 "가져 오기": r=math.random

실제 코드 :

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

참고 :이 코드는 TI-Nspire 계산기에서 작동합니다 . (TI 예를 들어 등을 그래프 물건에 대한 사용자를 허용하는 경우에도 기반 API로,이 플랫폼의 최신 운영체제에 루아 스크립트를 추가)
또한 할 수있다 여기에 온라인 시도 (단지 삭제 데모 스크립트 및 n=10예를 들어 내 앞에 추가 )


루아를 배울 시간이야!
Beta Decay

1
이 같은 실수로 고통을 보인다 fuandon 의 삭제 PowerShell을의 대답과 VLO이 '도 삭제 s의 R의 대답 : 당신이 모든 다른 점으로, 쌍에없는 모든 점 점들을 연결합니다. (루아는이 사이트에서 매우 드물다. 코드를 삭제하는 대신 수정하십시오.)
manatwork

오, 내 나쁜-곧 고칠거야!
Adriweb

우리가 간다, 알려 줘서 고마워 :)
Adriweb

이것은 테스트 및 확인되었습니다! 루아 사용을 잘했습니다.
Alexander Craggs

3

C # Windows 양식, 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

5 점을 사용하여 플롯

N = 50

N = 50을 사용하여 플로팅

전체 코드는 다음과 같습니다.

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

테스트 및 확인! 문자 수를 확인할 때 전체 코드를 사용했으며 <700 자 ...>. <가되었을 때 놀랐습니다. 어쨌든, 성공적인 입장을 축하합니다!
Alexander Craggs

Pens.Tan대신에 지름길 이 new Pen(Color.Tan)없습니까?
CompuChip

추가 10 저장 Pens.Tan을 사용하도록 변경
데이빗 코더를

2

manatwork 덕분에 HTML / JS, 210

<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


이것은 확인되었습니다, 작동하도록했습니다!
Alexander Craggs

~~대신 m.floor5 바이트를 절약 할 수 있습니다
William Barbosa

만들기 기능 canvas태그 자동 폐쇄를하고 주위에 작은 따옴표 제거 id값을 : <canvas id=q />. (마지막 속성 값과 자동 폐쇄 사이에 하나의 공간을 떠날 필요가 있음을 참고 /.) BTW, 파이어 폭스에없이 잘 작동 m.floor()하고 ~~.
manatwork


manatwork의 jsfiddle을 처음 시도했을 때 경고 상자에 암호가 필요하다고 생각했습니다! 나는 당황했다. 사람이 얼마나 바보가 될 수 있습니까? 나는 이것이 리더 보드의 다른 장소를 보증하기 위해 다른 사람들의 대답과 충분히 다르다고 생각합니다. 다른 사람들은 이것이 충분히 다르다고 생각합니까?
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});}}}

Stroke = Brushed.Red를 제거 할 수 있다고 말하고 싶습니다. 그러나 슬프게도 그것은 내가 투명한 선을 그리는 것을 의미하며, 내 추측은 그것이 실제로 계산되지 않는다는 것입니다. : PI는 XAML보기에서 그리드를 생성하여 몇 바이트를 면도 할 수도 있습니다. 그러나 그것은 불공평 해 보였으므로 XAML을 제거하여 빈 캔버스가되었습니다. (XAML을 바이트로 계산하지 않습니다 ...)

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
WPF이므로 메모리 부족 예외의 경우 약 3k 포인트에서 충돌합니다.
WozzeC

C # WPF에서 테스트하고 확인했습니다!
Alexander Craggs

2
var변수를 선언 할 때 사용하여 약간 단락 될 수 있습니다 .
MarcinJuraszek

네 확실합니다. 감사! 또한 "this.AddChild"에서 "this"를 제거 할 수있었습니다.
WozzeC

1

HPPPL, 231 220

(HP Prime 컬러 그래프 계산기 용 HP Prime 프로그래밍 언어)

골프를 쳤다. 모든 새로운 포인트 생성 직후 가능한 모든 새로운 라인을 그려서 11 개 적은 문자. 이전 세 개 대신 두 개의 중첩 루프 만 있습니다.

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;

언 골프 (270 자) :

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;

예 :

c (10)

connect_10_points_HPPPL

connect_10_points_HPPPL_2

c (30)

connect_30_points_HPPPL

HP Prime 컬러 그래프 계산기에는 320x240 픽셀 컬러 디스플레이가 있습니다.

여기에 이미지 설명을 입력하십시오

연결 키트와 함께 작동하는 에뮬레이터는 HP 웹 사이트 또는 http://www.hp-prime.de/en/category/6-downloads에서 제공 됩니다.

... 여전히 하드웨어가 도착하기를 기다리고 있습니다. 실행 시간에 대한 업데이트가 이어집니다.

오늘 내 HP 프라임이 도착했습니다. 실제 계산기에서 n = 100의 실행 시간은 다음과 같습니다.

평균 실행 시간

n = 100의 경우 약 0.65 초.

에뮬레이터는 Core i5 2410M 랩톱에서 약 4 배 (약 0.178 초) 빠릅니다.


1
글쎄, 나는 그 프로그래밍 언어에 대해 들어 본 적이 없지만 에뮬레이터에서 작동 했으므로 축하합니다! 리더 보드에 추가했습니다.
Alexander Craggs

감사. 하드웨어를 갖추 자마자 실행 시간을 확인하겠습니다. 에뮬레이터는 실제 계산기보다 빠릅니다. 그러나 n = 100의 5 분 제한은 계산기에 매우 관대하다고 생각합니다.
ML

1

NetLogo, 51 바이트

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

필요에 따라 9s를 다른 상수 또는 변수로 바꾸십시오.

NetLogo 출력


1
리더 보드에 추가되었습니다! 이것을 테스트하는 방법을 완전히 모르겠습니다. NetLogo를 다운로드하여 옵저버 섹션에 입력 한 다음 플롯에서 펜 명령으로 설정하려고 시도했지만 작동하지 않았습니다. 당신이 좀 포인터를 줄 수있는 경우에, 나는) =를 확인할 수있을 것
알렉산더 Craggs

F'rinstance : 'code'탭으로 이동하여 "go"로 시작하고 "end"로 중지하는 함수로 해당 줄을 래핑하십시오. 그런 다음 "go"를 호출하는 버튼을 첫 번째 버튼에 추가하고 누르십시오.
wyldstallyns

1
확인했습니다! 아름다운 솔루션. 거북이가 무엇인지 아는 경우 영어처럼 코드를 읽을 수있는 방법이 좋습니다. 거의 확실하게 가장 읽기 쉬운 솔루션입니다.
Alexander Craggs

산뜻한! 감사! NetLogo가 해결을 위해 준비된 것과 같은 질문을 찾고 있습니다. 아이러니하게도, 나는 NetLogo를 진정한 골프 경쟁자로 만들려고 노력하는 멋진 표현을 제거하기 위해 pyth-ish 프론트 엔드를 만들고 있습니다.
wyldstallyns

1
어, 나는 그것이 여전히 훌륭한 대답이라고 생각했습니다! Pyth NetLogo 코드를 기다릴 수 없습니다. 바라 길 바랍니다.
Alexander Craggs 2016
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.