Zusammenfassung
Schreiben Sie ein Programm oder eine Funktion, die keine Eingabe akzeptiert, und geben Sie alle Ganzzahlen zwischen -1000 und 1000 in aufsteigender Reihenfolge an die Standardausgabe aus, eine pro Zeile, wie folgt:
-1000
-999
-998
-997
...
Danach müssen Sie die zum Drucken dieser Zahlen benötigte Zeit oder die Zeit ab dem Start der Programmausführung in Millisekunden drucken (falls erforderlich, können auch einige andere Dinge enthalten sein, z. B .: time taken: xxxms ist in Ordnung). Dies kann ein Gleitkomma oder eine Ganzzahl sein (wenn Sie eine Ganzzahl drucken, müssen Sie auf die nächste abrunden).
Beispielcode
using System;
using System.Diagnostics;
class P
{
static void Main(string[] args)
{
Stopwatch st = Stopwatch.StartNew();
for (int i = -1000; i <= 1000; i++)
{
Console.WriteLine(i);
}
Console.WriteLine(st.ElapsedMilliseconds);
}
}
Beschränkungen
Standardlücken sind nicht erlaubt
Weitere Infos
Es ist Code Golf, also gewinnt die kürzeste Einsendung.
Antworten:
MATL , 13 Bytes
Probieren Sie es online!
quelle
Implicitly start timer
. Gab es das vom ersten Tag an, oder ist das das Ergebnis einer früheren Herausforderung?Oktave,
4643363023 BytesDies wird drucken:
Wenn Ihnen das nicht gefällt
ans =
, müssen wir weitere 6 Bytes hinzufügen fürdisp
:Dank einiger Erinnerungen von rahnema1 wurden viele Bytes gespeichert.
Erläuterung:
quelle
JavaScript, 60 Bytes
Um alle Ereignisse zu protokollieren, sollten Sie das Skript von der Entwicklerkonsole verwenden (andernfalls werden die Protokolle nach einer bestimmten Anzahl gelöscht).
quelle
i=~1e3
um ein Byte zu speichern :-)CJam , 18 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 3.5,
807773 BytesBisherige Lösungen umfassten die Verwendung von
timeit
undtime.time()
und waren größer.Leider
time.process_time()
wurde in Python 3.3 eingeführt.Vielen Dank an Dennis für das Speichern von 4 Bytes!
quelle
Bash (+ Coreutils),
41,49,46,4442 BytesEDITS:
|&
für die Umleitung von Ordnern;seq -1000 1000
durchseq -1e3 1e3
(Danke @Dennis!) Gespart;Golf gespielt
Probieren Sie es online!
Randnotiz
Die Verwendung eines coreutils "time" -Dienstprogramms anstelle des Bash-Built-In führt zu a
4135-Byte-Lösung:"\" ist hier, um bash dazu zu bringen , den echten Befehl anstelle des eingebauten aufzurufen.
Leider ist die Zeitgenauigkeit von coreutils nur 1 / 100s, was Bedenken aufkommen lässt, ob es sich um eine gültige Lösung handelt.
quelle
R, 42 Bytes
Dies wird gedruckt
Zum Entfernen
elapsed
sind zwei zusätzliche Bytes erforderlich:quelle
Bash + GNU-Utils, 43
Der
date
Befehl gibt die Anzahl der Sekunden seit der Verkettung mit aktuellen Nanosekunden an. Dieser Befehl wird vor und nach ausgeführt.bc
Nimmt den Unterschied und druckt.Probieren Sie es online aus .
Ich hatte gehofft, dies für 17 zu tun:
Aber die Ausgabe der Zeit gibt mehr als wir brauchen:
quelle
1000
mit1e3
.date +%s%3N
.JavaScript (ES6),
63 bis59 Bytequelle
new (d=Date)
und abfor(t=new(d=Date),c=console.log,i=~1e3;i<1e3;c(++i));c(new d-t)
~1e3
ist eine tolle Sache .952
darum,1000
warum das so ist?performance.now()
oder diePerformance
Schnittstelle überhauptR, 66 Bytes
Wahrscheinlich nicht die kürzeste, aber es funktioniert.
quelle
proc.time
in einer Variablen gespeichert werden?t=proc.time;x=t(); ...
Mathematica, 51 Bytes
Erläuterung
Speichern Sie die
Print
Funktion inp
. Drucken Sie 2001-Zahlen, beginnend bei -1000, und erhöhen Sie sie um 1.Ermitteln Sie die Gesamtzeit in Sekunden.
Multiplizieren Sie dies mit 1000 (Sekunden -> Millisekunden) und
p
(Print
).quelle
Timing
dass Sie die (etwas vage) Problembeschreibung nicht so gut erfüllenAbsoluteTiming
?Timing
gibt die CPU-Zeit aus und berücksichtigt nicht die Zeit, die das Front-End benötigt. Das ist. Die Zeit, die zum Inkrementieren des Zählers benötigtArray
wird, wird gezählt, aber die Zeit, die zum Anzeigen dieser Zahlen auf dem Bildschirm benötigt wird, wird nicht gezählt. Dieser Effekt ist in diesem einfachen Beispiel zu sehen:Timing@Print@3
Gibt 0 Sekunden, aberAbsoluteTiming@Print@3
nicht.PHP,
110-70Bytesnoch ein bisschen lang; aber mit @ AlexHowansky´s Hinweis 38 gespart, und zwei weitere mit
1e3
und~1e3
.druckt float. Laufen Sie mit
-r
.quelle
Powershell, 27 Bytes
Vielen Dank an AdmBorkBork für den Hinweis, dass die ausführliche Standardausgabe für die Herausforderung akzeptabel ist.
Ausgaben ergeben sich wie:
Verwenden Sie die ursprüngliche Antwort, wenn das Ergebnis nur Millisekunden beträgt:
Sparen Sie Zeit, bevor Sie als $ 1 drucken, drucken Sie automatisch auf stdout und erhalten Sie dann die Zeit zwischen dem Beginn und dem Ende der Ausführung.
quelle
oh
(Out-Host
) umleiten, wodurch die Tatsache umgangen wird, dassMeasure-Command
die Pipeline erfasst wird. Beispiel bei TIOMeasure-Command{-1e3..1e3|oh}
ist 29 Bytes. Sicher, es druckt extra Zeug ausMeasure-Command
, aber die Herausforderung sagt ausdrücklich, dass das in Ordnung ist.$1=date;-1e3..1e3;(date)-$1
2 Byte kürzer als das Maß-Befehl Option gibt,Perl 6 , 45 Bytes
Versuch es
Erweitert:
quelle
J , 22 Bytes
Probieren Sie es online!
timex
ist ein integrierter Befehl, der die Zeichenfolge ausführt und die für die Auswertung benötigte Zeit in Sekunden zurückgibt. Die Zeichenfolge bildet den Bereich [-1000, 1000] miti:
, koluminiert ihn dann mit,.
und druckt ihn mit der eingebauten Funktion ausecho
.quelle
Pyth ,
181514 BytesProbieren Sie es hier aus!
Erläuterung
Dies ähnelt meiner Python-Antwort.
Bearbeitungen :
quelle
Nudel ,
1713 Bytes13 Bytes
Versuchte einen etwas anderen Ansatz und sparte 4 Bytes.
Versuch es:)
Wie es funktioniert
17 Bytes
Versuch es:)
Wie es funktioniert
Das Snippet verwendet die Werte -4 bis 4, um den Vorgang nicht zu lange dauern zu lassen.
quelle
TI-Basic, 22 Bytes
Viele Befehle werden durch 1 oder 2-Byte-Token dargestellt.
Getestet auf einem emulierten TI-84 CSE.
quelle
Matlab,
1623 BytesBearbeiten: Ich habe festgestellt, dass ich gegen mehrere Regeln dieser Herausforderung verstoßen habe. Das wird mich lehren, die Herausforderung spät in der Nacht zu lesen. Mir ist jetzt auch klar, dass die korrigierte Antwort fast identisch mit der Octave-Lösung ist, aber so ist das Leben.
Druckt jedes Element im erstellten linearen Raumarray -1000: 1000 (das Fehlen von; druckt auf die Konsole).
tic / toc zeichnet die Uhrzeit auf und toc druckt die Uhrzeit mit oder ohne; auf die Konsole. . 1e3 wird zum Drucken in Millisekunden benötigt.
quelle
Stark,
7573 BytesDanke an jaxad0127 für das Speichern von 2 Bytes!
Probieren Sie es hier aus!
quelle
nanoTime
mit einer Division durch 1e6 ist kürzer alscurrentTimeMillis
. Es gibt auch Bruchzeit.8. ,
6147 BytesDanke an 8th_dev für die nette Verbesserung (14 Bytes gespart)
Dadurch werden alle Ganzzahlen zwischen -1000 und 1000 in aufsteigender Reihenfolge und die Zeit (in Millisekunden) zum Drucken dieser Zahlen gedruckt
quelle
Japt, 23 Bytes
Es gibt zwei äquivalente Lösungen:
Der erste macht im Grunde Folgendes:
Das heißt, die Zahlen werden in der Mitte der Subtraktion gedruckt, um zu vermeiden, dass die Zeit in einer Variablen gespeichert werden muss. Es ist jedoch nicht kürzer als die variable Route, die im Grunde genommen wie folgt lautet:
In der neuesten Version von Japt (neuer als diese Herausforderung)
K
ist die automatische Rückkehr eingerichtetnew Date()
. Dies reduziert die erste Lösung auf 21 Bytes:Online testen!
quelle
QBIC , 34 Bytes
Verwendet die QBasic-
TIMER
Funktion, die Sekunden in Dezimalschreibweise zurückgibt. Wenn es hübsch aussieht, werden einige Bytes hinzugefügt.Erläuterung
quelle
C ++ - 261
Nur zum Lachen dachte ich, ich würde eine C ++ Antwort posten.
Ich lasse es als Übung, um zu bestimmen, was es tut und wie man es nennt - sollte nicht zu schwierig sein.
quelle
Scala, 77 Bytes
quelle
ForceLang, 124
Hinweis: Sie sollten unterdrücken,
stderr
wenn Sie dies ausführen . Ich glaube, der Konsens über Meta ist, dass dies keine Bestrafung der Byteanzahl bedeutet.quelle
SimpleTemplate , 92 Byte
Was mich wirklich umbrachte, war die Notwendigkeit, die Zeit aufzuzeichnen.
Da es (noch) keine Mathematik gibt, ist es ziemlich schwierig, und ich muss PHP direkt schreiben.
Ungolfed:
Haftungsausschluss:
Ich habe dies mit dem Commit e118ae72c535b1fdbe1b80c847f52aa161854fda vom 13.01.2017 ausgeführt.
Die letzte Zusage bestand darin, etwas zu reparieren, das nichts mit dem Code hier zu tun hat.
quelle
C
134133 BytesVielen Dank an @Thomas Padron-McCarthy für das Speichern von 1 Byte.
Ungolfed-Version:
quelle
int t=time(null);
...printf("%d",time(null)-t)
? Kürzere AFAIKGura , 75 Bytes
quelle
Clojure, 94 Bytes
Ich bin enttäuscht darüber, wie lange das gedauert hat, aber ich glaube, niemand hat jemals behauptet, Clojure sei eine gute Sprache zum Golfspielen.
Naive Lösung, die nur die Startzeit aufzeichnet, Schleifen durchläuft und dann die aktuelle Zeit abzüglich der Startzeit druckt. Es sei denn, Clojure hat einen ms-time Getter, als ich vermisse, ich weiß nicht, wie dies kürzer werden könnte. Vielleicht eine Art implizite Schleife?
quelle