Die Aufgabe
Dies ist eine recht einfache Codierungsaufgabe. Alles, was Ihr Programm tun muss, ist, einen Punkt auf einer Zeichenfläche (oder Ihre Alternative in einer anderen Codierungssprache) zu platzieren und ihn mit allen bereits platzierten Punkten zu verbinden. Ihr Programm muss eine Eingabe, die Anzahl der Punkte, die platziert werden sollen, und eine Art Anzeige mit den verbundenen Punkten ausgeben. Beispiel
Bedarf
- Ich muss in der Lage sein, es auszuführen, was bedeutet, dass es einen Compiler / ein Tool haben muss, um es entweder online auszuführen oder öffentlich zum Herunterladen verfügbar zu sein.
- Sie dürfen jede Bibliothek verwenden, die vor dem Festlegen dieser Herausforderung erstellt wurde, sofern sie nicht ausschließlich zu diesem Zweck entwickelt wurde.
- Dies ist eine kürzeste Code-Aufgabe, dh Zeichen. Kommentare, Code, der die Farbe ändert (um hübsch zu sein) und Bibliotheken werden ignoriert.
- Ihre Antwort muss eindeutig sein, stehlen Sie nicht den Code anderer Leute, kürzen Sie ihn um einige Zeichen und veröffentlichen Sie ihn erneut.
- Es muss für die Werte 5 und 100 in weniger als 5 Minuten ausgeführt werden können. Außerdem muss eine Auflösung von mindestens 200 * 200 verwendet und jeder Punkt an einer zufälligen Stelle auf der Leinwand mit einer nicht trivialen Verteilung platziert werden.
Aktuelle Rangliste
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
Wenn ich dich vermisst habe, tut es mir sehr leid, füge einfach einen Kommentar zu deiner Arbeit hinzu und ich werde ihn hinzufügen, sobald ich ihn sehe =)
TL; DR
- Eingabe - Anzahl der Punkte (int, kann fest codiert werden)
- Ausgabe - Bild von zufällig platzierten Punkten, die alle miteinander verbunden sind (Grafik)
- Gewinner - Kürzester Code
Antworten:
Matlab (22)
Es wird angenommen, dass n die Anzahl der Punkte ist und dies für n = 10 so aussieht:
n=6
:Erklärung
gplot
ist ein Befehl zum Zeichnen von Graphen. Das erste Argument ist einen x n
Inzidenzmatrix (offensichtlich voller Einsen). Das zweite Argument sollte einen x 2
Matrix mit den Koordinaten der Punkte sein, aber es spielt keine Rolle, ob die zweite Dimension größer als 2 ist, also erstelle ich einfach einen x n
Matrix aus Zufallswerten (die 2 Zeichen kürzer ist als das Erzeugen einern x 2
Matrix).Links zur Dokumentation
quelle
Java:
318 282265Weil, weißt du, Java:
Es ist nur eine einfache Schleife, die zufällige Punkte erzeugt und Linien zwischen dem aktuellen Punkt und allen vorherigen Punkten zeichnet.
Beispiel mit 25 Punkten:
Mit Zeilenumbrüchen und Importen:
Bearbeiten: Da wir keine Importe zählen, habe ich später noch ein paar Dinge importiert, um einige Zeichen zu speichern.
Edit 2: OP hat die Anzahl der Punkte fest codiert. -17 Zeichen :)
quelle
Python 2 -
4135Nach dem Importieren einiger Bibliotheken als für diese Herausforderung zulässig
Wir können einige verbundene Punkte mit nur einer Codezeile zeichnen:
(Der Screenshot wurde mit 10 Punkten erstellt.)
quelle
import
Anweisungen in einer normalen Code-Golf-Herausforderung zu rechtfertigen .Mathematica
9587Mit etwas Hilfe von Belisarius.
n = 5
n = 100
Timing: 2,082654 Sek
quelle
CompleteGraph[100, VertexCoordinates -> RandomReal[{0, 199}, {100, 2}]]
100
notwendig undInput[]
optional war.Python 2, 158
Importanweisungen, die nicht in der Anzahl der Zeichen enthalten sind ("Bibliotheken werden ignoriert").
Beispielausgaben:
n = 2 (...):
n = 10 (sieht aus wie ausgefallenes 3D-Ding oder so):
n = 100 (sieht aus, als wäre jemand mit einem roten Stift BLELEEEAARARGHHH gegangen):
n = 500, 1000, 10000 (dauert etwa 1,5 Sekunden, 5 bis 6 Sekunden bzw. 3,5 Minuten):
Hinweis: Die 10000 Punkte wurden mit einer leicht optimierten Version ausgeführt, bei der Zeile 3 (ohne Importe) folgendermaßen geändert wurde:
Sonst hätte es ewig gedauert. : P
Ungolfed:
quelle
x=255
und verwenden, um die Instanzen von200
und zu ersetzen255
.R 66
Dieses betrügt an der Grenze, aber ich denke immer noch, dass es innerhalb der Regeln liegt. Zum Einrichten laden Sie das
igraph
Paket mitlibrary(igraph)
, das Sie mit von CRAN herunterladen könneninstall.packages("igraph")
. Weisen Sie dann die Eingabe der Variablen zuN
. Nach den Regeln werden diese nicht mitgerechnet.N = 50
Beachten Sie, dass dieser Code auch Selbstverbindungen zeichnet. Wenn Sie sie eliminieren (obwohl es keine Regel gegen sie gibt), werden 6 Zeichen hinzugefügt:
R 141
Dies ist eine ehrliche Lösung in Basis R:
obwohl Sie noch eingeben müssen
N
von Hand .N = 50
Ich frage mich, ob eine
for
Schleife weniger Zeichen enthalten würde als,apply
aber ich bin zufrieden mit dem, was ich habe.quelle
,"un"
am Ende der ersten Zeile entfernt.QBasic oder QuickBasic, 130 Zeichen
Code-Variationen
RANDOMIZE
durchRANDOMIZE TIMER
.N=10
durchINPUT N
oderINPUT "N";N
.Probeläufe
Für
N=5
, getestet mit QBasic 1.1 unter DOSBox 0.74:Für
N=100
, getestet mit QBasic 1.1 unter DOSBox 0.74:quelle
Bash + ImageMagick: 148 Zeichen
Probelauf:
Beispielausgabe:
Probelauf:
Beispielausgabe:
Probelauf:
Beispielausgabe:
quelle
TCL 161 Zeichen
Es wird sicherlich nicht gewinnen, aber es schlägt einige andere, die hier vorgestellt werden, und ich denke, es nutzt eine stark unterbewertete Sprache.
Die Standardleinwandgröße in meinem System scheint 291 x 204 zu sein. Ich weiß nicht warum, aber die Verwendung spart 13 Zeichen.
Ziemlich schnell, 400 Punkte in <5 Sekunden, 500 in ~ 10 Sekunden. Größe und Punkte können beliebig skaliert und Farben und Linienstile auf Kosten der Zeichen geändert werden. Ohne Golf spielen und Variablen verwenden, um das Skalieren und Färben klarer und einfacher zu machen:
quelle
[TI-Nspire] Lua -
145135130(Aktualisierte feste Version)
"Importieren" von math.random als "r", als erstes, wie erlaubt:
r=math.random
Tatsächlicher Code:
Hinweis: Dieser Code funktioniert mit den TI-Nspire- Rechnern (TI hat Lua-Skripte zu den neuesten Betriebssystemen dieser Plattform hinzugefügt, mit einer geraden API, mit der Benutzer beispielsweise Grafiken usw.
erstellen können .) Sie können ihn auch online ausprobieren (einfach löschen) das Demo-Skript und voranstellen mir mit
n=10
zum Beispiel)quelle
C # Windows Forms, 268
N = 5
N = 50
Der vollständige Code ist unten angegeben
quelle
Pens.Tan
stattnew Pen(Color.Tan)
?HTML / JS, 210, dank Handarbeit
JSFiddle
quelle
~~
anstelle vonm.floor
5 Bytes speicherncanvas
Tag selbstschließend und entfernen Sie die einfachen Anführungszeichen um denid
Wert:<canvas id=q />
. (Beachten Sie, dass Sie zwischen dem letzten Attributwert und dem Selbstschluss ein Leerzeichen lassen müssen/
.) Übrigens funktioniert Firefox auch ohnem.floor()
und~~
.C # WPF
306296Ich möchte sagen, dass ich Stroke = Brushed.Red entfernen könnte. Aber das bedeutet leider, dass ich transparente Linien male und meine Vermutung ist, dass es nicht wirklich zählt. : PI kann auch einige Bytes sparen, indem Sie einfach ein Raster in der XAML-Ansicht erstellen. Aber das schien unfair, also habe ich die XAML entfernt, um eine leere Leinwand zu werden. (Ich zähle die XAML nicht als Bytes ...)
XAML
5
100
quelle
var
beim Deklarieren von Variablen ein wenig kurzgeschlossen werden.HPPPL,
231220(HP Prime-Programmiersprache für den HP Prime-Farbgrafikrechner)
Golf es runter. Elf Zeichen weniger, indem alle möglichen neuen Linien direkt nach jeder neuen Punkterstellung gezeichnet werden. Nur zwei verschachtelte Schleifen anstelle der vorherigen drei.
Ungolfed (270 Zeichen):
Beispiele:
c (10)
c (30)
Der HP Prime Color Graphing Calculator verfügt über ein 320 x 240 Pixel großes Farbdisplay.
Ein Emulator, der auch mit dem Connectivity Kit funktioniert, ist auf der HP Website oder hier erhältlich: http://www.hp-prime.de/de/category/6-downloads
... noch auf die Hardware warten. Update zur Ausführungszeit folgt.
Heute ist mein HP Prime angekommen. Hier ist die Ausführungszeit für n = 100 auf einem tatsächlichen Rechner:
Um 0,65 s für n = 100.
Der Emulator ist auf meinem Core i5 2410M-Laptop ungefähr viermal so schnell (ungefähr 0,178 s).
quelle
NetLogo, 51 Bytes
Ersetzen Sie 9s bei Bedarf durch andere Konstanten oder Variablen.
quelle