Noktaları rastgele yerleştirmek ve bağlamak için en kısa Kod


26

Görev

Bu oldukça basit bir kodlama görevidir, programınızın tek yapması gereken bir tuval üzerine bir nokta (veya alternatifinizi başka bir kodlama dilinde) yerleştirmek ve önceden yerleştirilmiş tüm noktalara bağlamaktır. Programınız bir girişte, yerleştirilmesi gereken noktaların sayısını almalı ve noktalar bağlanmış halde bir çeşit ekran çıkarmalıdır. Örnek

Gereksinimler

  • Onu çalıştırabilmem gerekiyor, bu da çevrimiçi ya da indirmek için herkese açık bir şekilde çalıştırmak için bir derleyici / araç kullanması gerektiği anlamına geliyor.
  • Bu sorunu çözmeden önce oluşturduğunuz herhangi bir kütüphaneyi, yalnızca bunu çözmek amacıyla tasarlanmadığı sürece kullanabilirsiniz.
  • Bu, karakterleri ifade eden en kısa kod görevidir. Yorumlar, renk değiştiren kod (güzellik için) ve kütüphaneler göz ardı edilecektir.
  • Cevabınız benzersiz olmalı, diğer insanların kodlarını çalmayın, birkaç karakter kısaltın ve tekrar gönderin.
  • 5 ve 100 değerleri için 5 dakikadan daha az bir sürede çalışabilmelidir. Ayrıca en az 200 * 200 çözünürlük kullanmalı ve önemsiz bir dağılım kullanarak her noktayı tuval üzerinde rasgele bir yere koymalıdır.

Güncel Lider Tablosu

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

Sizi özledim, çok özür dilerim, sadece işinize söyleyerek bir yorum ekleyin ve bunu görür görmez ekleyeceğim =)

TL; DR

  • Giriş - Nokta sayısı (int, kodlanmış olabilir)
  • Çıktı - Birbirine bağlı rastgele yerleştirilmiş noktaların görüntüsü (grafik)
  • Kazanan - En kısa kod

1
Matematik kütüphanelerine izin veriliyor mu? Tam olarak hangi kütüphaneleri # 2 gereksinimiyle önlemeye çalışıyorsunuz?
Nathan Merrill,

2
Çözünürlük için herhangi bir sınırlama var mı? 1x1 görüntü vermeme izin verirseniz bu oldukça kolaydır
John Dvorak

3
"Matematik" kütüphanesi olmadığını söylerken, varsayılan PRNG'nin "matematik" e dahil olduğu diller ne olacak? Bir jeneratör yazmak istemiyorum.
Geobits

1
Doğrudan görevle ilgili olan kütüphane koduna izin vermediğiniz ve bu görevin esas olarak rastgele bir ağ grafiği çizmek olduğu için, yerel grafik çizim işlevlerinin kullanımı da engellenmiyor mu? Bu kısıtlama iyi tanımlanmış olmaktan uzaktır.
15

3
@PopeyGilbert Söylemeliyim ki, hiçbir zaman sorularıyla ilgili sorunlara cevap veren yeni bir kullanıcı görmedim ve ayrıca her bir cevabı ayrı ayrı test edip bir lider tablosu tut. İyi iş ve PPGC'ye hoş geldiniz!
Calvin'in Hobileri

Yanıtlar:


21

Matlab (22)

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

N'nin nokta sayısı olduğu varsayılır ve n = 10 için şöyle görünür: rastgele grafik

n=6:

rasgele

Açıklama

gplotgrafik çizmek için kullanılan bir komuttur. İlk argüman bir n x ninsidans matrisidir (açıkçası bunlarla dolu). İkinci argüman n x 2noktaların koordinatlarına sahip bir matris olmalıdır , ancak ikinci boyutun 2'den büyük olması önemli değil, bu yüzden sadece (bir n x nmatris oluşturmaktan 2 karakter daha kısa olan) rastgele değerler matrisi oluşturdum n x 2.

Belgelere bağlantılar


Asla Matlab kullanmadım, bu yüzden test etmek biraz zaman alacak - Ama görüntüden iyi görünüyor! 22 karakterde yaptığınız için tebrikler. EDIT - Bunu test edemem, ancak resme bakıldığında doğru görünüyor, izin vereceğim. Ancak başka biri bunu test edebilir mi?
Alexander Craggs,

3
Thanks =) Burada test edebilirsiniz: octave-online.net Oktav temelde MatLab’ın açık kaynak kodlu bir sürümü olduğundan.
kusur,

27

Java: 318 282 265

Çünkü biliyorsunuz 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();}}

Bu sadece rastgele noktalar oluşturan ve mevcut nokta ile öncekiler arasında çizgiler çizen basit bir döngüdür.

25 noktalı örnek:

görüntü tanımını buraya girin

Satır sonları ve ithalat ile:

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

Düzenleme: İthalatları saymadığımız için, bazı karakterleri daha sonra kaydetmek için birkaç şey daha aldım.

Düzenleme 2: OP, kodlama nokta sayısı için bir ödenek ekledi. -17 karakter :)


Güzel! İlk olduğun için tebrikler.
Alexander Craggs,

2
İlk önce uzun bir atışla en kısa sürmeyeceğinden eminim. Çünkü, ya, Java;)
Geobits

3
I) = yüzden 1 ... ne zaman umutsuz, ben bile tutulması başlatmak için tembel olurdu bile her zaman, Java görevi çözmek insanları takdir
flawr

1
@Chruncher Evet, java kod golf için kesinlikle en iyi dil değil. Ancak öğrendiğim ilk dildi ve alması oldukça kolaydı. Ayrıca, ancak beni iyi durumda tuttu ve kişisel olarak, en sevdiğim dil.
Alexander Craggs,

1
Main'in parametresini final olarak tanımlamak gerekli değildir. Bu 6 karakteri kesebilirsin
Cruncher 22:14

11

Python 2 - 41 35

Bu kütüphaneye izin verilen bazı kütüphaneleri içe aktardıktan sonra

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

sadece bir kod satırı ile bazı bağlı noktaları işaretleyebiliriz:

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

(Ekran görüntüsü 10 puan ile oluşturuldu.)


[Silinen bir yoruma atıfta bulunarak:] Biliyorum, ancak burada "kütüphaneler yoksayılacak". Olmazsa kesinlikle farklı şekilde uygulardım. Bu kitaplıkları kullanmak import, normal kod golf mücadelesinde ifadeleri haklı çıkarmak için yeterli karakter kaydetmez .
Falko,

pylab standart dağılımın bir parçası mı? İstediğimiz bir şeyi ithal edemeyeceğimizi hayal ediyorum. Bu metrik altında python'daki her şeyi tek bir import ifadesiyle uygulayabilirsiniz.
Cruncher

Evet öyle . Geçerli olacağını düşündüğüm şeyi yaptım. Ama emin değilim. Yorumlara bakmak, büyük bir tartışma olduğunu gösteriyor. Bu netleşir çözmez kodumu değiştirmek isterim.
Falko

Bu yarışmalar, hangi kütüphanelerin izin verildiğine dair görüşlerini günden güne değişiyor gibi görünse de, PyLab'a kesinlikle izin verilmelidir.
Alexander Craggs,

8

Mathematica 95 87

Belisarius'tan biraz yardımla.

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

n = 5

5


n = 100

Zamanlama: 2.082654 sn

100


Bu doğrulandı, işe başladım! Mathematica normalde bir dil olarak sayılıyor mu?
Alexander Craggs,

1
@ PopeyGilbert Elbette öyle. Orada 750 cevaplar ~ bugüne kadar Mathematica.
Geobits

Vay canına, tamam! Yeterince <3
Alexander Craggs

Methinks bu daha kısa ve kuralları yerine CompleteGraph[100, VertexCoordinates -> RandomReal[{0, 199}, {100, 2}]]
getiriyor

Teşekkürler, haklısın. Kazanamayacağımı düşündüm, bu yüzden güzel yapabileceğimi düşündüm (VertexSize -> {2,2}. Ancak 100eklemenin gereksiz olduğunu ve bunun Input[]isteğe bağlı olduğunu göz ardı ettim .
DavidC

7

Python 2, 158

Karakter sayımına dahil edilmeyen ifadeleri söz konusu notta içe aktarın ("kütüphaneler yoksayılacak").

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

Örnek çıktılar:

n = 2 (...):

n = 2 '

n = 10 (süslü 3d şey veya bir şeye benziyor):

n = 10

n = 100 (biri kırmızı kalemle BLELEEEAARARGHHH’a gitti gibi görünüyor):

n = 100

n = 500, 1000, 10000 (sırasıyla yaklaşık 1.5 saniye, 5-6 saniye ve 3.5 dakika sonra çalışır):

Not: 10000 puan, satır 3'ü (ithalatlar dahil değil) değiştiren biraz optimize edilmiş bir sürümle çalıştırıldı:

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

Aksi takdirde sonsuza dek sürecekti. : 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
Halihazırda en kısa katılımcının olduğu için tebrikler! N = 100 hakkındaki yorumunu beğen. İmage.new ve image_size'yi 800'e koymak en iyisi olabilir. Daha az garip görünebilir =)
Alexander Craggs

@PopeyGilbert yüzden olabilir madenden ithalat ifadeleri kaldırmak? "Kütüphaneleri görmezden gel" ifadesinin, kütüphanenin kendisinin (her zamanki gibi) sayılmadığı anlamına geldiğini varsaydım.
Geobits

Evet, çünkü bazı dillerin çok az temel işlevi vardır ve bütün eşyalarını ithal etmek zorundadır. Bunun adil Geobits olmadığını düşünüyorsanız, o zaman lütfen söyleyin =) Bu fuarı yapmaya çalışmak istiyorum.
Alexander Craggs,

@PopeyGilbert Ben sadece sordum çünkü bu normal değil ve kodumdan birkaç karakter daha kesmeden önce temizlemek istedi: D
Geobits 22:30

1
Çözünürlüğü yalnızca olmak zorunda yana en az 200x200, sen ayarlayarak birkaç karakter (5, sanırım) kurtarabilir x=255ve örneklerini değiştirmek için kullanarak 200ve 255.
comperendinous

5

R, 66

Bu, sınırda aldatma ama yine de kurallar dahilinde olduğunu düşünüyorum. İle CRAN'dan indirilebilen igraphpaketi yükleyerek kurun . Ardından girişi değişkene atayın . Kurallara göre, bunlar toplamda sayılmaz.library(igraph)install.packages("igraph")N

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

N = 50

görüntü tanımını buraya girin

Bu kodun ayrıca kendi kendine bağlantılar çizdiğini unutmayın. Onları ortadan kaldırmak (onlara karşı bir kural olmasa da) 6 karakter ekler:

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

R, 141

Bu, R üssünde iyiliğe dürüst bir çözümdü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]))

Yine de Nelle girmek zorundasın .

N = 50

görüntü tanımını buraya girin

Bir fordöngünün karakterinden daha az karakter olup olmadığını merak ediyorum applyama sahip olduklarımdan memnunum.


Ben kendi kendine bağlantıları kabul edeceğim, teknik olarak soru TÜM noktalara bir çizgi çekiyor. Test ettim ve onayladım.
Alexander Craggs,

Noktaları birbirine bağlayan okları sakıncası var mı? ,"un"İlk satırın sonunda elimine ederek başka bir 5 tasarruf edersiniz.
shadowtalker

Sakıncası yoksa, bence onu saklamalıyız, bu yüzden her bir noktayı birbirine bağlayan çizgiler olmalı. Bu şekilde cevap, cevapların her birinde benzer görünecektir.
Alexander Craggs

5

QBasic veya 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

Kod varyasyonları

  • Bir tohum için sorulmasını istemiyorsanız, yerini RANDOMIZEile RANDOMIZE TIMER.
  • N sorulması istenirse, veya N=10ile değiştirin .INPUT NINPUT "N";N

Örnek çalışır

Için N=5, DOSBox 0.74'te çalışan QBasic 1.1 ile test edilmiştir:

Için N=100, DOSBox 0.74'te çalışan QBasic 1.1 ile test edilmiştir:


Oh, vay, N = 5 için güzel görüntü! Tohum 42 olduğunda bir pentagram olduğunu seviyorum. Test edildi ve onaylandı.
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:

Örnek çalışma:

bash-4.3$ time ./line.sh 5

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

Örnek çıktı:

5 bağlı nokta

Örnek çalışma:

bash-4.3$ time ./line.sh 25

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

Örnek çıktı:

25 bağlı nokta

Örnek çalışma:

bash-4.3$ time ./line.sh 100

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

Örnek çıktı:

100 bağlı puan


Test edildi ve onaylandı. Aferin insan yapımı!
Alexander Craggs,

Çok üzgünüm, bunu lider panolarına eklemeyi tamamen unuttum mu? Bunu şimdi yapacağım.
Alexander Craggs,

4

TCL 161 karakter

Açıkça kazanamayacak, ancak burada sunulan birkaç kişiyi yenecek ve bence son derece değerli olmayan bir dili iyi kullanıyor.

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

Örnek

Sistemimdeki varsayılan tuval boyutu 291x204 olarak görünüyor. Neden olduğundan emin değil, ancak onu kullanarak 13 karakter kaydeder.

Oldukça hızlı, <5 saniyede 400, ~ 10 sn'de 500 puan. Boyut ve puanlar isteğe bağlı olarak ölçeklenebilir ve tabii ki karakterlerin maliyeti karşılığında renkler ve çizgi stilleri değiştirilebilir. Golf oynamaz ve ölçeklendirmeyi ve renklendirmeyi daha net ve kolay hale getirmek için değişkenleri kullanma:

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
Görüntü iyi görünüyor, ne yazık ki bilgisayarım çalışmıyor, bu yüzden daha sonra test edeceğim. Bu kadar küçümsemeyen bir dili kullandığınız için tebrikler.
Alexander Craggs

Sadece onayladı, başarılı bir giriş için tebrikler!
Alexander Craggs



4

[TI-Nspire] Lua - 145 135 130

(Güncelleştirilmiş sabit sürüm)

Ekran görüntüsü n = 10

"Math.random dosyasını" r "olarak alın, önce izin verildiği gibi: r=math.random

Gerçek kod:

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

Not: Bu kod TI-Nspire hesap makineleri üzerinde çalışır (. TI örneğin vb grafik şeyler sayede kullanıcılar daha tabanlı bir API ile bu platformun son işletim sistemleri için Lua komut dosyası eklendi)
Ayrıca edilebilir burada çevrimiçi çalıştı (sadece silme demo betiği ve n=10örneğin mayını hazırla


Lua'yı öğrenme zamanı geldi!
Beta Çürüme

1
Fuandon'un silinmiş PowerShell cevabı ve Vlo'nun da R cevabı silinmesiyle aynı hatadan muzdarip görünüyor : her noktayı diğer noktalarla değil, çift olarak birbirine bağlarsınız . (Lua bu sitede çok nadirdir. Lütfen silmek yerine kodunuzu düzeltin.)
manatwork

Oh, benim kötü - yakında onu düzelteceğim!
Adriweb


Bu test edildi ve onaylandı! Lua kullanarak aferin.
Alexander Craggs,

3

C # Windows formları, 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();}

K = 5

5 puan kullanarak arsa

N = 50

N = 50 kullanarak arsa

Tam kod aşağıda verilmiştir

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

Test edildi ve onaylandı! Karakter sayısını kontrol ettiğimde, kodun tamamını kullandım ve <700 karakter ...> 'e gelince şaşırdım. Neyse, başarılı bir giriş yaptığın için tebrikler!
Alexander Craggs,

Pens.TanBunun yerine bazı kestirme yol yok new Pen(Color.Tan)mu?
CompuChip

Pens.Tan kullanmak için değiştirildi, fazladan 10
Zed Coder

2

HTML / JS, 210, yapı çalışması sayesinde

<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


Bu doğrulandı, işe başladım!
Alexander Craggs,

5 bayt kaydetmek ~~yerine kullanabilirsinizm.floor
William Barbosa

Make canvasetiket kendi kendine kapanmasını ve tek tırnak kaldırmak iddeğeri: <canvas id=q />. (Son öznitelik değeri ile kendi kendine kapanma arasında bir boşluk bırakmanız gerektiğini unutmayın /.) BTW, Firefox'ta m.floor()ve olmadan çalışır ~~.
Manat işi


İnsan yapımı jsfiddle'ı ilk denediğimde, uyarı kutusunun bir şifreye ihtiyacı olduğunu düşündüm! Kafam karıştı. Bir insan ne kadar aptal olabilir. Bunun, lider kurulunda başka bir yerin emri için başkalarının cevaplarından yeterince farklı olduğuna inanıyorum. Diğer insanlar bunun yeterince farklı olduğunu düşünüyor mu?
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'i kaldırabileceğimi söylemek isterim. Ama ne yazık ki bu saydam çizgiler çizdiğim anlamına geliyor ve sanırım gerçekten sayılmaz. : PI, yalnızca XAML görünümünde bir ızgara oluşturarak birkaç baytı tıraş edebilir. Ama bu haksızlık gibi görünüyordu, ben de XAML'ı boş bir tuval yapmak için elimden aldım. (XAML'ı bayt olarak saymıyorum ...)

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 olduğu için Bellek Dolu istisnası için yaklaşık 3k Puan'da çökecektir.
WozzeC

Test edildi ve onaylandı, C # WPF!
Alexander Craggs,

2
varDeğişkenleri bildirirken kullanılarak kısa bir süre kısaltılabilir .
MarcinJuraszek

Evet kesinlikle. Teşekkürler! "This" ı "this.AddChild" den de kaldırmayı başardım.
WozzeC

1

HPPPL, 231 220

(HP Prime renkli grafik hesap makinesi için HP Prime Programlama Dili)

aşağı golf. 11 her yeni nokta yaratımından hemen sonra tüm olası yeni satırları çizerek daha az karakter. Önceki üç yerine yalnızca iki iç içe geçmiş döngü.

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

örnekler:

C (10)

connect_10_points_HPPPL

connect_10_points_HPPPL_2

C (30)

connect_30_points_HPPPL

HP Prime renkli grafik hesap makinesi 320x240 piksel renkli ekrana sahiptir.

görüntü tanımını buraya girin

Bağlantı kitiyle de çalışan bir emülatör, HP web sitesinde veya burada bulunabilir: http://www.hp-prime.de/tr/category/6-downloads

... hala donanımın gelmesini bekliyorum. Yürütme zamanı güncellemesi takip edecek.

Bugün benim HP Prime geldi. Gerçek hesap makinesinde n = 100 için yürütme süresi:

ortalama yürütme süresi

N = 100 için yaklaşık 0.65 s.

Emulator, i5 2410M dizüstü bilgisayarımda yaklaşık 4 kat daha hızlı (yaklaşık 0.178 s).


1
Bu programlama dilini hiç duymadım, ama öykünücüsü üzerinde çalıştı, bu yüzden tebrikler! Seni lider panosuna ekledim.
Alexander Craggs,

Teşekkürler. Donanıma sahip olur olmaz yürütme süresini kontrol edeceğim. Emülatör gerçek hesap makinesinden daha hızlı. Ancak n = 100 için 5 dakikalık limitin hesap makinesi için çok cömert olduğunu düşünüyorum.
ML

1

NetLogo, 51 bayt

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

9'ları gerektiği gibi diğer sabitlerle veya değişkenlerle değiştirin.

NetLogo çıkışı


1
Büyük afişe eklendi! Korkarım bunun nasıl test edileceği konusunda tam olarak emin değilim. NetLogo'yu indirdim ve onu gözlemci bölümüne yazdım, sonra da bir arsa üzerinde bir kalem komutu olarak ayarlamayı denedim, ikisi de işlev görmedi. Bana bazı işaretçiler verebilirseniz, bunu doğrulayabilirim =)
Alexander Craggs

F'rinstance: 'code' sekmesine gidin ve bu satırı "gitmeye" başlayan ve "son" ile biten bir işleve sarın. Ardından, ilk adı "git" diyen bir düğmeye ekleyebilir ve ona basabilirsiniz.
wyldstallyns

1
Onaylandı! Güzel bir çözüm. Bir kaplumbağanın ne olduğunu biliyorsanız, İngilizceye benzer bir kod okuyabilirsiniz. Neredeyse kesinlikle henüz en okunaklı çözüm.
Alexander Craggs,

Temiz! Teşekkürler! NetLogo'nun çözmeye yönelik olduğu gibi sorular sordum. İronik olarak, aynı zamanda NetLogo'yu gerçek bir golf yarışmacısı yapmak için bu güzel ayrıntılardan kurtulmak için bir pyth-ish ön ucu yapıyorum.
wyldstallyns

1
Eh, hala mükemmel bir cevap olduğunu düşündüm! Pyth NetLogo kodunuzu görmek için sabırsızlanıyorum, umarım görmeniz gereken bir manzara olabilir!
Alexander Craggs,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.