Kode terpendek untuk secara acak menempatkan titik dan menghubungkannya

26

Tugas

Ini adalah tugas pengkodean yang cukup sederhana, yang harus dilakukan oleh program Anda adalah menempatkan titik pada kanvas (atau alternatif Anda dalam bahasa pengkodean lain) dan menghubungkannya ke semua titik yang telah ditempatkan. Program Anda harus menerima satu input, jumlah titik yang harus ditempatkan, dan menampilkan semacam tampilan dengan titik-titik yang terhubung. Contoh

Persyaratan

  • Saya harus dapat menjalankannya, yang berarti harus memiliki kompiler / alat untuk menjalankannya secara online, atau tersedia untuk diunduh secara publik.
  • Anda diizinkan menggunakan pustaka apa pun yang dibuat sebelum tantangan ini ditetapkan, asalkan tidak dirancang untuk tujuan tunggal menyelesaikan masalah ini.
  • Ini adalah tugas kode terpendek, yang berarti karakter. Komentar, kode yang berubah warna (untuk kecantikan) dan pustaka akan diabaikan.
  • Jawaban Anda harus unik, jangan mencuri kode orang lain, persingkat beberapa karakter dan ulangi lagi.
  • Ini harus dapat berjalan dalam waktu kurang dari 5 menit, untuk nilai 5 dan 100. Ini juga harus menggunakan resolusi setidaknya 200 * 200 dan menempatkan setiap titik di lokasi acak di kanvas menggunakan distribusi non-sepele.

Papan Peringkat Saat Ini

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

Jika saya merindukanmu, aku minta maaf, tambahkan saja komentar pada karyamu yang mengatakannya dan aku akan menambahkannya segera setelah aku melihatnya =)

TL; DR

  • Input - Jumlah titik (int, dapat dikodekan dengan keras)
  • Output - Gambar dari titik-titik yang ditempatkan secara acak, semua terhubung satu sama lain (grafik)
  • Pemenang - Kode terpendek
Alexander Craggs
sumber
1
Apakah saya diizinkan perpustakaan matematika? Perpustakaan apa sebenarnya yang Anda coba hindari dengan persyaratan # 2?
Nathan Merrill
2
Apakah ada batasan untuk resolusi? Ini cukup mudah jika Anda membiarkan saya menampilkan gambar 1x1
John Dvorak
3
Ketika Anda mengatakan tidak ada perpustakaan "matematika", bagaimana dengan bahasa di mana PRNG default dimasukkan dalam "matematika"? Saya tidak ingin menulis generator.
Geobits
1
Karena Anda melarang kode pustaka yang berhubungan langsung dengan tugas, dan tugas itu pada dasarnya untuk menggambar grafik jaringan acak, bukankah menggunakan fungsi menggambar grafik asli juga tidak diizinkan? Pembatasan ini masih jauh dari jelas.
comperendinous
3
@PopeyGilbert Harus saya katakan, saya belum pernah melihat pengguna baru yang begitu responsif terhadap masalah dengan pertanyaan mereka dan juga secara individual menguji setiap jawaban dan mempertahankan papan peringkat. Kerja bagus dan selamat datang di PPGC!
Calvin Hobbies

Jawaban:

21

Matlab (22)

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

Diasumsikan bahwa n adalah jumlah poin, dan sepertinya ini untuk n = 10: grafik acak

n=6:

acak

Penjelasan

gplotadalah perintah untuk merencanakan grafik. Argumen pertama adalah n x nmatriks kejadian (penuh yang, jelas). Argumen kedua harus berupa n x 2matriks dengan koordinat titik, tetapi tidak masalah jika dimensi kedua lebih besar dari 2, jadi saya hanya menghasilkan n x nmatriks nilai acak (yang 2 karakter lebih pendek daripada menghasilkan n x 2matriks).

Tautan ke dokumentasi

cacat
sumber
Tidak pernah menggunakan Matlab, jadi akan butuh waktu untuk menguji - Tapi dari gambar itu terlihat baik-baik saja! Selamat melakukannya dalam 22 karakter. EDIT - Ternyata saya tidak bisa menguji ini, namun melihat gambar itu tampaknya benar jadi saya akan mengizinkannya. Namun bisakah orang lain mengujinya?
Alexander Craggs
3
Terima kasih =) Anda dapat mengujinya di sini: octave-online.net Karena oktaf pada dasarnya adalah versi opensource dari MatLab.
flawr
27

Jawa: 318 282 265

Karena, Anda tahu, Jawa:

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

Ini hanya loop sederhana yang membuat titik-titik acak dan menarik garis antara titik saat ini dan semua yang sebelumnya.

Contoh dengan 25 titik:

masukkan deskripsi gambar di sini

Dengan jeda baris dan impor:

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

Sunting: Karena kami tidak menghitung impor, saya mengimpor beberapa hal lagi untuk menyimpan beberapa karakter nanti.

Sunting 2: OP menambahkan penyisihan jumlah titik hardcoding. -17 karakter :)

Geobit
sumber
Bagus! Selamat telah menjadi yang pertama.
Alexander Craggs
2
Pertama, tapi saya yakin itu tidak akan menjadi yang terpendek oleh tembakan panjang. Penyebab, ya tahu, Jawa;)
Geobits
3
Saya mengagumi orang-orang yang selalu menyelesaikan tugas di Jawa, bahkan ketika putus asa, saya bahkan akan terlalu malas untuk memulai gerhana ... jadi +1 =)
flawr
1
@ Chuncher Ya, java jelas bukan bahasa terbaik untuk kode golf. Namun itu adalah bahasa pertama yang saya pelajari, dan cukup mudah untuk mengambilnya. Namun, hal itu membuat saya tetap tenang, dan secara pribadi, bahasa favorit saya.
Alexander Craggs
1
Tidak perlu mendefinisikan parameter utama sebagai final. Anda dapat memotong 6 karakter tersebut
Cruncher
11

Python 2 - 41 35

Setelah mengimpor beberapa perpustakaan yang diizinkan untuk tantangan ini

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

kita dapat memplot sejumlah titik terhubung hanya dengan satu baris kode:

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

(Tangkapan layar dibuat dengan 10 poin.)

Falko
sumber
[Mengacu pada komentar yang dihapus:] Saya tahu, tetapi di sini "perpustakaan akan diabaikan". Jika tidak, saya pasti akan menerapkannya secara berbeda. Menggunakan perpustakaan itu tidak menyimpan cukup karakter untuk membenarkan importpernyataan dalam tantangan golf kode normal.
Falko
Apakah pylab bagian dari distribusi standar? Saya membayangkan kita tidak bisa hanya mengimpor apa pun yang kita suka. Di bawah metrik itu, Anda dapat mengimplementasikan apa pun dalam python dengan satu pernyataan impor.
Cruncher
Ya itu . Saya hanya melakukan apa yang saya pikir akan valid. Tapi saya tidak yakin. Dan melihat ke komentar menunjukkan diskusi besar terjadi. Segera setelah ini diklarifikasi, saya bersedia menyesuaikan kode saya.
Falko
Meskipun kompetisi ini melihat apa yang diizinkan oleh perpustakaan tampaknya berubah dari hari ke hari, PyLab seharusnya diizinkan.
Alexander Craggs
8

Mathematica 95 87

Dengan bantuan belisarius.

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

n = 5

5


n = 100

Pengaturan waktu: 2.082654 dtk

100

DavidC
sumber
Ini diverifikasi, saya berhasil! Apakah Mathematica biasanya dianggap sebagai bahasa?
Alexander Craggs
1
@PopeyGilbert Tentu. Ada ~ 750 jawaban di Mathematica sejauh ini.
Geobits
Oh, wow, oke! Cukup adil <3
Alexander Craggs
Methinks ini lebih pendek dan memenuhi aturanCompleteGraph[100, VertexCoordinates -> RandomReal[{0, 199}, {100, 2}]]
Dr. belisarius
Terima kasih, kamu benar. Saya pikir saya tidak bisa menang jadi saya pikir saya akan membuatnya cantik (VertexSize -> {2,2}. Namun, saya mengabaikan fakta yang 100tidak perlu dimasukkan, dan Input[]itu opsional.
DavidC
7

Python 2, 158

Pernyataan impor tidak termasuk dalam jumlah karakter, seperti yang disebutkan dalam pertanyaan ("perpustakaan akan diabaikan").

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 sampel:

n = 2 (...):

n = 2

n = 10 (terlihat seperti hal 3d mewah atau sesuatu):

n = 10

n = 100 (sepertinya seseorang pergi BLELEEEAARARGHHH dengan pena merah):

n = 100

n = 500, 1000, 10000 (masing-masing berjalan sekitar 1,5 detik, 5-6 detik, dan 3,5 menit):

Catatan: Poin 10000 dijalankan dengan versi yang sedikit dioptimalkan yang mengubah baris 3 (tidak termasuk impor) menjadi ini:

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

Kalau tidak, itu akan diambil selamanya. : P

Tidak Disatukan:

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()
Gagang pintu
sumber
1
Selamat karena saat ini menjadi peserta tersingkat! Cintai komentar Anda di n = 100. Mungkin yang terbaik untuk menempatkan image.new dan image_size ke 800. Mungkin terlihat kurang aneh =)
Alexander Craggs
@PopeyGilbert Jadi saya bisa menghapus pernyataan impor dari saya? Saya berasumsi "abaikan perpustakaan" berarti perpustakaan itu sendiri tidak dihitung (seperti biasa).
Geobits
Ya, karena beberapa bahasa memiliki fungsi dasar yang sangat sedikit, dan harus mengimpor semua barang mereka. Jika Anda pikir ini tidak adil Geobits, maka silakan katakan =) Saya ingin mencoba membuat ini adil.
Alexander Craggs
@PopeyGilbert Saya hanya bertanya karena itu bukan norma dan ingin menjernihkannya sebelum saya memotong beberapa karakter lagi dari kode saya: D
Geobits
1
Karena resolusi hanya harus setidaknya 200x200, Anda bisa menyimpan beberapa karakter (5, saya pikir) dengan menetapkan x=255dan menggunakannya untuk menggantikan contoh 200dan 255.
comperendinous
5

R, 66

Yang ini curang, tapi saya pikir masih dalam aturan. Atur dengan memuat igraphpaket library(igraph)yang dapat diunduh dari CRAN install.packages("igraph"). Kemudian tetapkan input ke variabel N. Sesuai aturan, ini tidak dihitung secara total.

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

N = 50

masukkan deskripsi gambar di sini

Perhatikan bahwa kode ini juga menggambarkan koneksi mandiri. Menghilangkan mereka (meskipun tidak ada aturan terhadap mereka) menambahkan 6 karakter:

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

R, 141

Ini adalah solusi jujur-untuk-kebaikan di basis 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]))

meski kamu masih harus masuk Ndengan tangan.

N = 50

masukkan deskripsi gambar di sini

Saya bertanya-tanya apakah forloop akan lebih sedikit karakter daripada applytapi saya senang dengan apa yang saya dapatkan.

shadowtalker
sumber
Saya akan menerima koneksi sendiri, secara teknis pertanyaannya adalah menarik garis ke SEMUA poin. Saya sudah mengujinya dan mengkonfirmasinya juga.
Alexander Craggs
Apakah Anda keberatan panah yang menghubungkan titik-titik? Itu akan menghemat 5 lainnya dengan menghilangkan ,"un"di akhir baris pertama.
shadowtalker
Jika Anda tidak keberatan, saya pikir kita harus menyimpannya sehingga harus berupa garis yang menghubungkan setiap poin. Dengan begitu jawabannya akan tampak sama di setiap jawaban.
Alexander Craggs
5

QBasic atau QuickBasic, 130 karakter

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

Variasi kode

  • Jika Anda tidak ingin ditanyakan tentang benih, ganti RANDOMIZEdengan RANDOMIZE TIMER.
  • Jika Anda ingin diminta untuk N, ganti N=10dengan INPUT Natau INPUT "N";N.

Sampel dijalankan

Untuk N=5, diuji dengan QBasic 1.1 yang berjalan pada DOSBox 0.74:

Untuk N=100, diuji dengan QBasic 1.1 yang berjalan pada DOSBox 0.74:

ILoveQBasic
sumber
Oh, wow, gambar yang bagus untuk N = 5! Senang bahwa itu adalah pentagram ketika benih adalah 42. Diuji dan dikonfirmasi.
Alexander Craggs
4

Bash + ImageMagick: 148 karakter

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:

Contoh dijalankan:

bash-4.3$ time ./line.sh 5

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

Output sampel:

5 titik terhubung

Contoh dijalankan:

bash-4.3$ time ./line.sh 25

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

Output sampel:

25 titik terhubung

Contoh dijalankan:

bash-4.3$ time ./line.sh 100

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

Output sampel:

100 titik yang terhubung

manatwork
sumber
Diuji dan dikonfirmasi. Manatwork yang dilakukan dengan baik!
Alexander Craggs
Saya sangat menyesal, apakah saya benar-benar lupa menambahkan ini ke papan pimpinan? Saya akan melakukannya sekarang.
Alexander Craggs
4

TCL 161 karakter

Jelas tidak akan menang, tetapi mengalahkan beberapa yang lain yang disajikan di sini, dan saya pikir itu memanfaatkan bahasa yang sangat undervalued.

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

Contoh

Ukuran kanvas default pada sistem saya tampaknya 291x204. Tidak yakin mengapa, tetapi menggunakannya menghemat 13 karakter.

Cukup cepat, 400 poin dalam <5 detik, 500 dalam ~ 10 dtk. Ukuran dan poin dapat diskalakan secara sewenang-wenang dan warna serta gaya garis dapat diubah, dengan mengorbankan karakter tentunya. Hapus golf dan gunakan variabel untuk membuatnya lebih jelas dan lebih mudah untuk skala dan warna:

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
sumber
1
Gambar tampak baik-baik saja, sayangnya komputer saya tidak berfungsi jadi saya akan mengujinya nanti. Selamat menggunakan bahasa yang kurang dihargai.
Alexander Craggs
Cukup konfirmasi, selamat atas entri yang sukses!
Alexander Craggs
129
sergiol
122
sergiol
4

[TI-Nspire] Lua - 145 135 130

(Versi tetap diperbarui)

Tangkapan layar dengan n = 10

"Mengimpor" math.random sebagai "r", pertama, sebagaimana diizinkan: r=math.random

Kode aktual:

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

Catatan: Kode ini berfungsi pada kalkulator TI-Nspire (TI menambahkan skrip Lua ke OS terbaru dari platform ini, dengan API berbasis genap yang memungkinkan pengguna untuk membuat grafik, dll. Misalnya.)
Ia juga dapat dicoba secara online di sini (hapus saja skrip demo dan tambah saya dengan n=10misalnya)

Adriweb
sumber
Waktunya bagiku untuk belajar Lua!
Beta Decay
1
Hal ini tampaknya menderita dengan kesalahan yang sama seperti fuandon 's dihapus PowerShell jawaban dan VLO ' s juga dihapus R jawabannya: Anda menghubungkan titik-titik pada pasangan, tidak setiap titik dengan semua titik-titik lainnya. (Lua sangat jarang di situs ini. Harap perbaiki kode Anda alih-alih menghapusnya.)
manatwork
Oh, salahku - aku akan memperbaikinya segera!
Adriweb
Ini dia, terima kasih sudah memberi tahu saya :)
Adriweb
Ini telah diuji dan dikonfirmasi! Baik dilakukan menggunakan Lua.
Alexander Craggs
3

C # Formulir 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

Plot menggunakan 5 poin

N = 50

Plot menggunakan N = 50

Kode lengkap diberikan di bawah ini

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
sumber
Diuji dan dikonfirmasi! Ketika saya memeriksa jumlah karakter, saya menggunakan kode lengkap dan terkejut ketika sampai <700 karakter ...>. <. Bagaimanapun, selamat telah membuat entri yang sukses!
Alexander Craggs
Bukankah ada jalan pintas seperti Pens.Tanbukan new Pen(Color.Tan)?
CompuChip
Diubah menggunakan Pens.Tan, hemat 10
Zed Coder
2

HTML / JS, 210, terima kasih untuk 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
sumber
Ini diverifikasi, saya berhasil!
Alexander Craggs
Anda dapat menggunakan ~~alih-alih m.floormenyimpan 5 byte
William Barbosa
Membuat canvastag menutup diri dan menghapus tanda kutip tunggal di sekitar idnilai: <canvas id=q />. (Perhatikan bahwa Anda harus meninggalkan satu spasi antara nilai atribut terakhir dan menutup sendiri /.) BTW, di Firefox berfungsi dengan baik tanpa m.floor()dan ~~.
manatwork
219 karakter: jsfiddle.net/e866azzs/5
manatwork
Pertama kali saya mencoba jsfiddle manatwork, saya pikir kotak peringatan membutuhkan kata sandi! Saya bingung. Betapa bodohnya seseorang. Saya percaya ini cukup berbeda dengan jawaban orang lain untuk menjamin tempat lain di dewan pimpinan. Apakah orang lain menganggap ini cukup berbeda?
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});}}}

Saya ingin mengatakan bahwa saya dapat menghapus Stroke = Brushed.Red. Tapi sayangnya itu berarti bahwa saya melukis garis transparan, dan Tebak saya adalah bahwa itu tidak benar-benar masuk hitungan : PI juga dapat mencukur beberapa byte dengan hanya membuat kisi pada tampilan XAML. Tapi itu tampak tidak adil, jadi saya melepas XAML menjadi kanvas kosong. (Saya tidak menghitung XAML sebagai 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

WozzeC
sumber
4
Karena ini adalah WPF, ia akan crash di sekitar 3k Points for Out of Memory, kecuali.
WozzeC
Diuji dan dikonfirmasi, dilakukan dengan baik di C # WPF!
Alexander Craggs
2
Dapat disingkat sedikit dengan menggunakan varsaat mendeklarasikan variabel.
MarcinJuraszek
Ya memang. Terima kasih! Saya juga dapat menghapus "ini" dari "this.AddChild".
WozzeC
1

HPPPL, 231 220

(Bahasa Pemrograman Utama HP untuk kalkulator grafik warna HP Prime)

menurunkannya. 11 karakter yang lebih sedikit dengan menggambar semua garis baru yang mungkin tepat setelah setiap pembuatan titik baru. Hanya dua loop bersarang, bukan tiga loop sebelumnya.

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;

Tidak disatukan (270 karakter):

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;

contoh:

c (10)

connect_10_points_HPPPL

connect_10_points_HPPPL_2

c (30)

connect_30_points_HPPPL

Kalkulator grafik warna HP Prime memiliki tampilan warna 320x240 piksel.

masukkan deskripsi gambar di sini

Emulator yang juga berfungsi dengan kit konektivitas tersedia di situs web HP atau di sini: http://www.hp-prime.de/en/category/6-downloads

... masih menunggu perangkat keras tiba. Pembaruan pada waktu eksekusi akan mengikuti.

Hari ini HP Prime saya tiba. Inilah waktu eksekusi untuk n = 100 pada kalkulator aktual:

waktu eksekusi rata-rata

Sekitar 0,65 detik untuk n = 100.

Emulator sekitar 4 kali lebih cepat (sekitar 0,178 detik) pada laptop Core i5 2410M saya.

ML
sumber
1
Yah, saya belum pernah mendengar bahasa pemrograman itu, tetapi ia bekerja pada emulator, jadi selamat! Saya telah menambahkan Anda ke papan peringkat.
Alexander Craggs
Terima kasih. Segera setelah saya memiliki perangkat keras, saya akan memeriksa waktu eksekusi. Emulator lebih cepat dari kalkulator yang sebenarnya. Tapi saya pikir batas 5 menit untuk n = 100 sangat murah untuk kalkulator.
ML
1

NetLogo, 51 byte

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

Ganti angka 9 dengan konstanta atau variabel lain sesuai kebutuhan.

Output NetLogo

wyldstallyns
sumber
1
Ditambahkan ke leaderboard! Takut saya tidak sepenuhnya yakin cara menguji ini. Saya telah mengunduh NetLogo dan saya mengetiknya di bagian pengamat, kemudian mencoba mengaturnya sebagai perintah pena pada plot, tampaknya tidak berfungsi. Jika Anda bisa memberi saya beberapa petunjuk, saya akan dapat mengkonfirmasinya =)
Alexander Craggs
F'rinstance: masuk ke tab 'kode' dan bungkus garis itu dalam fungsi yang mulai "pergi" dan berhenti dengan "berakhir". Kemudian Anda dapat menambahkan tombol ke yang pertama memanggil "pergi" dan tekan.
wyldstallyns
1
Dikonfirmasi! Solusi indah. Sangat menyenangkan bagaimana jika Anda tahu kura-kura itu bisa membaca kode seperti bahasa Inggris. Hampir pasti solusi yang paling mudah dibaca.
Alexander Craggs
Rapi! Terima kasih! Saya sudah mencari pertanyaan seperti ini yang NetLogo siap untuk menyelesaikannya. Ironisnya, saya juga membangun ujung depan pyth-ish untuk menghilangkan kata-kata bagus untuk mencoba dan menjadikan NetLogo pesaing golf yang sebenarnya.
wyldstallyns
1
Eh, kupikir itu masih jawaban yang bagus! Tidak sabar untuk melihat kode Pyth NetLogo Anda, semoga menjadi pemandangan untuk dilihat!
Alexander Craggs