Czas potrzebny na wydrukowanie liczb


21

Podsumowanie

Napisz program lub funkcję, która nie pobiera żadnych danych wejściowych i wypisuje wszystkie liczby całkowite, od -1000 do 1000 w porządku rosnącym, na standardowe wyjście, po jednym w wierszu, jak poniżej:

-1000
-999
-998
-997
...

Następnie musisz wydrukować czas potrzebny na wydrukowanie tych liczb lub czas od początku uruchomienia programu w milisekundach (w razie potrzeby może on zawierać także inne rzeczy, na przykład: czas potrzebny: xxxms jest w porządku). Może to być liczba zmiennoprzecinkowa lub liczba całkowita (jeśli wypisujesz liczbę całkowitą, musisz zaokrąglić w dół do najbliższej wartości).

Przykładowy kod

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

Ograniczenia

Standardowe luki są niedozwolone

Inne informacje

To jest golf golfowy, więc wygrywa najkrótsze zgłoszenie.


@GurupadMamadapur Nie, przepraszam
Horváth Dávid

Czemu? Myślę, że zasadniczo drukować te liczby, każda wypowiedź jest zaangażowana od samego początku programu, prawda?
Gurupad Mamadapur

1
@GurupadMamadapur Ok, masz rację, odpowiednio zmodyfikuję pytanie.
Horváth Dávid

Czy program może poczekać jakiś czas od początku i wydrukować tę ilość?
xnor

@ xnor Myślę, że to zmieniłoby wyzwanie, a ponieważ istnieje już wiele odpowiedzi na oryginalne wyzwanie, powiedziałbym, że nie.
Horváth Dávid

Odpowiedzi:


9

MATL , 13 bajtów

1e3t_y&:!DZ`*

Wypróbuj online!

       % Implicitly start timer
1e3    % Push 1000
       % STACK: 1000
t_     % Duplicate, negate
       % STACK: 1000, -1000
y      % Duplicate second-top number
       % STACK: 1000, -1000, 1000
&:     % Two-input range
       % STACK: 1000, [-1000, 999, ..., 1000]
!      % Transpose into column vector
       % STACK: 1000, [-1000; 999; ...; 1000]
D      % Display
       % STACK: 1000
Z`     % Push timer value, say t
       % STACK: 1000, t
*      % Multiply
       % STACK: 1000*t
       % Implicitly display

2
Bardzo dobrze! Inteligentne wdrożenie: Implicitly start timer. Czy było to od pierwszego dnia, czy jest to wynik wcześniejszego wyzwania?
Stewie Griffin

@StewieGriffin Nie od pierwszego dnia. Dodałem go 13 lipca 2016 r. , Prawdopodobnie po jednoznacznej zinstytucjonalizowaniu go w kilku wyzwaniach
Luis Mendo,

9

Oktawa, 46 43 36 30 23 bajtów

tic;(-1e3:1e3)',toc*1e3

Spowoduje to wydrukowanie:

ans =

  -1000
   -999
   -998
   -997
   -996
   -995

Jeśli ci się nie podoba ans =, musimy dodać dodatkowe 6 bajtów dla disp:

tic;disp((-1e3:1e3)'),toc*1e3

Zaoszczędzono wiele bajtów dzięki kilku przypomnieniom z rahnema1.

Wyjaśnienie:

tic;                              % Starts timer
         (-1e3:1e3)'              % A vertical vector -1000 ... 1000
    disp((-1e3:1e3)'),            % Display this vector
                      toc*1e3     % Stop the timer and output the time in milliseconds

8

JavaScript, 60 bajtów

(c=console).time();for(i=~1e3;i++<1e3;c.log(i));c.timeEnd();

Aby zarejestrować wszystkie zdarzenia, należy użyć skryptu z konsoli programisty (w przeciwnym razie dzienniki zostaną usunięte po określonej liczbie).


i=~1e3by uratować bajt :-)
ETHproductions

7

CJam , 18 bajtów

es2001{1e3-n}/es\-

Wypróbuj online!

Jak to działa

es                  Push the current time (milliseconds since epoch) on the stack.
  2001{     }/      For each integer X from 0 to 2000:
       1e3-           Subtract 1000 from X.
           n          Print with a newline.
              es    Push the current time on the stack.
                \-  Swap and subtract.

7

Python 3.5, 80 77 73 bajtów

import time
*map(print,range(-1000,1001)),
print(time.process_time()*1e3)

Poprzednie rozwiązania obejmowały użycie timeiti time.time()były większe.

Niestety, time.process_time()został wprowadzony w Pythonie 3.3.

Dzięki Dennisowi za oszczędność 4 bajtów!


5

Bash (+ coreutils), 41, 49, 46, 44, 42 bajty

EDYCJE:

  • Przeprojektowano, by używało wbudowanego Basha (czas), aby rozwiązać problemy z precyzją @Dennis;
  • Zmniejszony o 3 bajty dzięki wykorzystaniu Bash 4+ |&do przekierowania stderr;
  • Zaoszczędzono jeszcze 2 bajty, zastępując seq -1000 1000je seq -1e3 1e3(Dzięki @Dennis!);
  • -2 bajty poprzez usunięcie niepotrzebnego ukośnika odwrotnego i użycie domyślnej precyzji (Thx @Dennis!).

Grał w golfa

TIMEFORMAT=%R*1000;(time seq -1e3 1e3)|&bc

Wypróbuj online!

Dygresja

Użycie narzędzia coreutils „time” zamiast wbudowanego w Bash daje w wyniku 41, Rozwiązanie 35-bajtowe:

\time -f "%e*1000" seq -1e3 1e3|&bc

„\” jest tutaj, aby bash wywoływał prawdziwe polecenie zamiast wbudowanego.

Niestety dokładność czasowa coreutils wynosi tylko 1/100 s, co wzbudziło obawy, czy jest to prawidłowe rozwiązanie.


4

R, 42 bajty

system.time(cat(-1e3:1e3,sep="\n"))[3]*1e3

To zostanie wydrukowane

.
.
.
998
999
1000
elapsed 
     60 

Aby usunąć elapsed, potrzebne są dwa dodatkowe bajty:

system.time(cat(-1e3:1e3,sep="\n"))[[3]]*1e3

4

Narzędzia Bash + GNU, 43

  • Zaoszczędzono 2 bajty dzięki @Dennis
  • Zaoszczędź 5 bajtów dzięki @zeppelin
c=date\ +%s%3N
s=`$c`
seq -1e3 1e3
$c-$s|bc

dateKomenda daje liczbę sekund od epoki połączonego z aktualnymi nanosekund. To polecenie jest uruchamiane przed i po. bcbierze różnicę i drukuje.

Wypróbuj online .


Miałem nadzieję, że zrobię to przez 17 lat:

time seq -1e3 1e3

Ale wynik czasu daje więcej niż potrzebujemy:

real    0m0.004s
user    0m0.000s
sys 0m0.004s

1
Możesz zapisać dwa bajty, zastępując 1000je 1e3.
Dennis

„Ale wynik czasu daje…”… może powinieneś walczyć.
H Walters

1
Prawdopodobnie można zaoszczędzić kilka bajtów, poprzez przechwytywanie datę z dokładnością ms bezpośrednio w następujący sposób: date +%s%3N.
zeppelin

4

JavaScript (ES6), 63 59 bajtów

for(c=console.log,i=~1e3;i<1e3;c(++i));c(performance.now())


Miły. Możesz zaoszczędzić trzy bajty, usuwając miejsce new (d=Date)i rozpoczynając od -1000:for(t=new(d=Date),c=console.log,i=~1e3;i<1e3;c(++i));c(new d-t)
ETHproductions

Dzięki @ETHproductions :) ~1e3to świetny akcent.
George Reith,

1
W wyjściu z urywka jest tylko 952do 1000dlaczego tak jest?
Gurupad Mamadapur

@GurupadMamadapur Dane wyjściowe fragmentu są ograniczone do 50 wierszy. (A dokładniej: 50 ostatnich linii.)
Arnauld

1
@ IsmaelMiguel Amazing nie był świadomy interfejsu performance.now()ani Performancewcale
George Reith

3

R, 66 bajtów

x=proc.time();for(i in -1e3:1e3)cat(i,"\n");(proc.time()-x)[3]*1e3

Prawdopodobnie nie najkrótszy, ale działa.


Może proc.timebyć przechowywany w zmiennej? t=proc.time;x=t(); ...
Annan

3

Mathematica, 51 bajtów

p[1*^3#]&@@AbsoluteTiming@Array[p=Print,2001,-1*^3]

Wyjaśnienie

Array[p=Print,2001,-1*^3]

Zapisz Printfunkcję w p. Wydrukuj liczby 2001, zaczynając od -1000, zwiększając o 1.

AbsoluteTiming@ ...

Znajdź całkowity czas, który upłynął w sekundach.

p[1*^3#]&@@ ...

Pomnóż to przez 1000 (sekund -> milisekund) i p( Print).


Argh, pokonałeś mnie o 3 minuty! :) Czy na pewno Timingnie spełniasz również (nieco niejasnego) opisu problemu AbsoluteTiming?
Greg Martin

2
@GregMartin Timinggeneruje czas procesora i nie uwzględnia czasu zajętego przez interfejs użytkownika. To jest. czas potrzebny na zwiększenie licznika Arrayjest liczony, ale czas wyświetlany na ekranie tych liczb nie jest liczony. Efekt ten można zobaczyć w tym prostym przykładzie: Timing@Print@3daje 0 sekund, ale AbsoluteTiming@Print@3nie daje.
JungHwan Min

3

PHP, 110 70 bajtów

wciąż trochę długi; ale uratował 38 dzięki podpowiedzi @ AlexHowansky'ego, a dwa kolejne dzięki 1e3i ~1e3.

for($t=($m=microtime)($i=~1e3);$i++<1e3;)echo"$i
";echo($m(1)-$t)*1e3;

drukuje pływak. Uruchom z -r.


2
Możesz przekazać microtime () prawdziwą wartość, która zwróci liczbę zmiennoprzecinkową bezpośrednio, nie musisz dodawać ciągów.
Alex Howansky

-30% z tą wskazówką. Chciałbym móc zrobić dziesięć pozytywnych opinii na temat twojego komentarza. : D
Tytus

To smutne, że PHP nie ma czegoś, co zwraca czas w milisekundach. Tak jak JavaScript. Nie mogę zaproponować ulepszeń. Jest tak mały, jak to tylko możliwe. Dobra robota!
Ismael Miguel

@IsmaelMiguel Myślę, że JavaScript nie ma mikrosekund. :)
Tytus

@Titus Chodziło mi o to, że daty Javascript są przetwarzane w milisekundach, podczas gdy PHP ma tylko sekundy lub mikrosekundy.
Ismael Miguel

3

PowerShell, 27 bajtów

$1=date;-1e3..1e3;(date)-$1

Dzięki AdmBorkBork za zwrócenie uwagi, że pełne wyzwanie jest możliwe w wyzwaniu.

Wyniki wyjściowe takie jak:

994
995
996
997
998
999
1000

Days              : 0
Hours             : 0
Minutes           : 0
Seconds           : 5
Milliseconds      : 679
Ticks             : 56799255
TotalDays         : 6.57398784722222E-05
TotalHours        : 0.00157775708333333
TotalMinutes      : 0.094665425
TotalSeconds      : 5.6799255
TotalMilliseconds : 5679.9255

aby uzyskać bardziej zawarty wynik zaledwie milisekund, użyj oryginalnej odpowiedzi:

$1=date;-1e3..1e3;((date)-$1).TotalMilliseconds

Zaoszczędź czas wcześniej jako 1 $, wydrukuj automatycznie na standardowe wyjście, a następnie uzyskaj czas od początku do końca wykonania.


Możesz po prostu przeskoczyć zakres do oh( Out-Host), co ominie fakt, który Measure-Commandprzechwytuje potok. Przykład w TIO
AdmBorkBork

@AdmBorkBork chodziło o to, że nie sądzę, by oszczędzało bajty, chyba że czegoś mi brakuje.
colsw

Measure-Command{-1e3..1e3|oh}ma 29 bajtów. Jasne, drukuje dodatkowe rzeczy dzięki Measure-Command, ale wyzwanie wyraźnie stwierdza, że ​​jest OK.
AdmBorkBork

Właściwie pominięto punkt, w którym można wydrukować inne dane, twórca wyzwania może chcieć powiedzieć, czy bardzo szczegółowe dane wyjściowe miary-polecenia są dopuszczalne. $1=date;-1e3..1e3;(date)-$1jest tam również o 2 bajty krótszy niż opcja pomiaru-polecenia,
colsw

No tak, haha. Niezły golf.
AdmBorkBork,

2

Perl 6 , 45 bajtów

.put for -($_=1e3)..$_;put (now -INIT now)*$_

Spróbuj

Rozszerzony:

# print the values

.put             # print with trailing newline ( method call on 「$_」 )

for              # for each of the following
                 # ( temporarily sets 「$_」 to the value )

-(
  $_ = 1e3       # store 「Num(1000)」 in 「$_」
)
..               # inclusive Range object
$_;

# print the time elapsed

put              # print with trailing newline

(now - INIT now) # Duration object that numifies to elapsed seconds
* $_             # times 1000 to bring it to milliseconds

# The 「INIT」 phaser runs code (the second 「now」) immediately
# as the program starts.

# There is no otherwise unrelated set-up in this code so this is a
# reliable indicator of the amount of time it takes to print the values.

2

J , 22 bajty

1e3*timex'echo,.i:1e3'

Wypróbuj online!

timexto wbudowane narzędzie, które wykonuje ciąg znaków i zwraca czas potrzebny do jego oceny w kilka sekund. Ciąg tworzy zakres [-1000, 1000] za pomocą i:, a następnie kolonizuje za pomocą ,.i drukuje za pomocą wbudowanego echo.


2

Pyth , 18 15 14 bajtów

j}_J^T3J;*.d1J

Wypróbuj tutaj!

Wyjaśnienie

Jest to podobne do mojej odpowiedzi w python.

    J ^ T3 Ustaw J na 1000
  } _ J Lista od -1000 do 1000
j Połącz listę z nowymi liniami i niejawnie ją wydrukuj
         ; *. d1J Czas wydruku od uruchomienia programu w milisekundach

Edycje :


Próbowałem tego, 14 bajtów, nie jestem pewien, czy to działa poprawnie. Musisz dodać nowy wiersz na początku programu. pyth.herokuapp.com/?code=%0AM%7D_J%5ET3J%2a.d1J&debug=0
busukxuan

2

Noodel , 17 13 bajtów

13 bajtów

Próbowałem nieco innego podejścia i zapisałem 4 bajty.

ƇQjȥḶGQɱ⁻Ñ€Ƈ⁻

Spróbuj:)

Jak to działa

Ƈ             # Pushes on the amount of milliseconds passed since 01/01/1970.

 Qjȥ          # Pushes 2001 onto the stack.
 Qj           # Pushes on the string "Qj"
   ȥ          # Converts the string into a number as base 98.

    ḶGQɱ⁻Ñ€   # Loops 2001 times printing -1000 to 1000.
    Ḷ         # Consumes the 2001 and loops the following code 2001 times.
     GQ       # Pushes on the string "GQ"
       ɱ      # Pushes on the current counter of the loop (i)
        ⁻     # Subtracts (i - "GQ") since i is a number, the "GQ" is converted to a number which will fail.
              # So, Noodel will treat the string as a base 98 number producing (i - 1000). 
         Ñ    # Consume what is on the top of the stack pushing it to the screen followed by a new line.
          €   # The end of the loop.

           Ƈ⁻ # Calculates the duration of execution.
           Ƈ  # Pushes on the amount of milliseconds passed since 01/01/1970.
            ⁻ # Pushes on (end - start)

17 bajtów

ƇGQȥḋɲṡ×2Ḷñ⁺1€ÑƇ⁻

Spróbuj:)

Jak to działa

Ƈ                 # Pushes on the amount of milliseconds passed since 01/01/1970.

 GQȥḋɲṡ×2         # Used to create the range of numbers to be printed.
 GQ               # Pushes on the string "GQ".
   ȥ              # Converts the string into number as if it were a base 98 number. (which is 1000)
    ḋ             # Duplicates the number and pushes it onto the stack. 
     ɲ            # Since the item on top is already a number, makes the number negative (random thing I threw in at the very beginning when made the langauge and totally forgot it was there)
      ṡ           # Swaps the first two items on the stack placing 1000 on top.
       ×2         # Doubles 1000 producing... 2000

         Ḷñ⁺1€Ñ   # Prints all of the numbers from -1000 to 1000.
         Ḷ        # Consumes the 2000 to loop the following code that many times (now -1000 is on the top).
          ñ       # Prints the value on top of the stack followed by a new line.
           ⁺1     # Increment the value on top of the stack by 1.
             €    # End of the loop.
              Ñ   # Since 1000 is still not printed, this consumes 1000 and prints it followed by a new line.

               Ƈ⁻ # Calculates the number of milliseconds to execute program.
               Ƈ  # Pushes on the amount of milliseconds passed since 01/01/1970.
                ⁻ # Pushes on (end - start) in milliseconds.
                  # At the end, the top of the stack is pushed to the screen.

Fragment używa wartości od -4 do 4, aby jego wypełnienie nie trwało tak długo.

<div id="noodel" code="ƇFȥḶAɱ⁻Ñ€Ƈ⁻" input="" cols="10" rows="10"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>


Czy stworzyłeś ten język przed czy przed wyzwaniem?
Rɪᴋᴇʀ

@EasterlyIrk, before :)
tkellehe

2

TI-Basic, 22 bajty

startTmr
For(A,-ᴇ3,ᴇ3
Disp A
End
startTmr-Ans
  • Wiele poleceń jest reprezentowanych przez 1 lub 2-bajtowe tokeny.

  • Testowany na emulowanym TI-84 CSE.


2

Matlab, 16 23 bajtów

tic;(-1e3:1e3)'
toc*1e3

Edycja: Zrozumiałem, że naruszam kilka zasad tego wyzwania. To nauczy mnie przeglądać wyzwanie późno w nocy. Teraz też zdaję sobie sprawę, że poprawiona odpowiedź jest prawie identyczna z rozwiązaniem Octave, ale takie jest życie.

Drukuje każdy element w utworzonej liniowej tablicy przestrzeni -1000: 1000 (brak; drukuje na konsolę).

tic / toc rejestruje czas, a toc drukuje czas na konsoli z lub bez; . 1e3 jest potrzebny do drukowania w milisekundach.


Zupełnie słusznie zredagowano poprawne rozwiązanie.
Owen Morgan


2

8th , 61 47 bajtów

Podziękowania dla 8th_dev za miłą poprawę (zapisane 14 bajtów)

d:msec ( . cr ) -1000 1000 loop d:msec swap - .

Spowoduje to wydrukowanie wszystkich liczb całkowitych od -1000 do 1000 w kolejności rosnącej oraz czas (w milisekundach) potrzebny do wydrukowania tych liczb

-1000
-999
-998
-997
...
997
998
999
1000
4

1
Należy zauważyć, że sugerowanie zmian w celu ulepszenia kodu kwalifikuje się jako „destrukcyjne”. Zamiast tego należy podać sugestie dotyczące gry w golfa. Pingowałbym użytkownika, który to zrobił, gdybym mógł, ale nie mogę. meta.codegolf.stackexchange.com/q/1615/34718
mbomb007

1
Wiem, że go zatwierdziłeś, co jest w porządku, ponieważ jest to twój własny post, ale inni recenzenci w kolejce recenzji powinni go odrzucić, a użytkownik, który zasugerował edycję, nie powinien.
mbomb007

@ mbomb007 - Dziękujemy za poinformowanie mnie o tym. W tym konkretnym przypadku zweryfikowałem kod przed zaakceptowaniem go, ale następnym razem pomiń lub odrzucę tego rodzaju recenzję.
Chaos Manor

2

Japt, 23 bajty

Istnieją dwa równoważne rozwiązania:

Oo(Ð -(A³òA³n @OpXÃ,йn
K=Ð;A³òA³n @OpXÃ;OoÐ -K

Pierwszy zasadniczo wykonuje następujące czynności:

output(-(new Date() - (1000 .range(-1000).map(X => print(X)), new Date())));

Oznacza to, że liczby są drukowane w środku odejmowania, aby uniknąć konieczności przechowywania czasu w zmiennej. Jednak nie jest on krótszy niż trasa zmienna, która w zasadzie jest:

K = new Date(); 1000 .range(-1000).map(X => print(X)); output(new Date() - K);

W najnowszej wersji Japt (nowszej niż to wyzwanie) Kjest skonfigurowany do automatycznego powrotu new Date(). To skraca pierwsze rozwiązanie do 21 bajtów:

Oo(K-(A³òA³n @OpXÃK)n

Przetestuj online!


1

QBIC , 34 bajty

d=timer[-z^3,z^3|?a]?z^3*(timer-d)

Korzysta z TIMERfunkcji QBasic , która zwraca sekundy w notacji dziesiętnej. Sprawia, że ​​wygląda ładnie, dodaje kilka bajtów.

Wyjaśnienie

d=timer     Set 'd' to the current # seconds since midnight
[-z^3,z^3|  FOR -1000 to 1000  --  Note that 'z' = 10 in QBIC, and z^3 saves a byte over 1000
?a          Display the iterator
]           Close the FOR loop
    timer-d Take the current time minus the time at the start of the program -- 0.156201
?z^3*()     Multiply by a thousand and display it   156.201

1

C ++ - 261

Tylko dla śmiechu myślałem, że opublikuję odpowiedź w C ++.

#include <iostream>
#include <chrono>
using namespace std::chrono; using c=std::chrono::system_clock; void p(){c::time_point n=c::now();for(int i=-1001;++i<1001;)std::cout<<i<<"\n";std::cout<<(duration_cast<milliseconds>(system_clock::now()-n)).count()<<"\n";}

Zostawię to jako ćwiczenie, aby ustalić, co robi i jak to nazwać - nie powinno być zbyt trudne.


1

Scala, 77 bajtów

def t=System.nanoTime
val s=t
Range(-1000,1001)map println
println((t-s)/1e6)

1

ForceLang, 124

set t timer.new()
set i -1000
label 1
io.writeln set i i+1
if i=1000
 io.write math.floor 0.001.mult t.poll()
 exit()
goto 1

Uwaga: należy wyłączyć stderrpodczas uruchamiania. Uważam, że konsensus w sprawie meta jest taki, że nie wiąże się to z karą za liczenie bajtów.


1

SimpleTemplate , 92 bajty

To, co naprawdę mnie zabiło, to konieczność rejestrowania czasu.

{@callmicrotime intoX 1}{@for_ from-1000to1000}{@echol_}{@/}{@phpecho microtime(1)-$DATA[X]}

Ponieważ nie ma (jeszcze) matematyki, to sprawia, że ​​jest to dość trudne, zmuszając mnie do pisania PHP bezpośrednio.

Nie golfowany:

{@call microtime into start_time true}
{@for i from -1000 to 1000 step 1}
    {@echol i}{@// echoes a newline after}
{@/}
{@php echo microtime(true) - $DATA["start_time"];}

Zrzeczenie się:

Uruchomiłem to z zatwierdzeniem e118ae72c535b1fdbe1b80c847f52aa161854fda , od 13.01.2017 .

Najnowszym zatwierdzeniem było naprawienie czegoś, co nie jest związane z kodem tutaj.


1

C 134 133 bajtów

Dzięki @Thomas Padron-McCarthy za uratowanie 1 bajtu.

f(){clock_t s,e;s=clock();for(int i=-1000;i<1001;i++)printf("%d\n",i);e=clock();printf("%lf",((double)((e-s))/(CLOCKS_PER_SEC))*1e3);}

Wersja bez golfa:

void f()
{   
  clock_t s,e;

  s=clock();

  for(int i=-1000;i<1001;i++)
    printf("%d\n",i);   

  e=clock();
  printf("%f",((double)((e-s))/(CLOCKS_PER_SEC))*1e3);

 }

Możesz zapisać jeden znak, zmieniając „% lf” na „% f”.
Thomas Padron-McCarthy

Dlaczego nie int t=time(null);... printf("%d",time(null)-t)? Krótszy AFAIK
SIGSTACKFAULT 17.01.17

1

Gura , 75 bajtów

t=datetime.now();println(-1000..1000);print((datetime.now()-t).usecs/1000);

1

Clojure, 94 bajty

(let[t #(System/currentTimeMillis)s(t)](doseq[n(range -1e3 1001)](println n))(println(-(t)s)))

Jestem rozczarowany, jak długo to trwało, ale chyba nikt nigdy nie twierdził, że Clojure jest dobrym językiem do gry w golfa.

Naiwne rozwiązanie, które rejestruje czas rozpoczęcia, zapętla, a następnie drukuje aktualny czas minus czas rozpoczęcia. Chyba że Clojure ma getter czasu ms niż brakuje mi, nie wiem jak to może być krótsze. Może jakaś ukryta pętla?

(defn time-print []
  (let [t #(System/currentTimeMillis) ; Alias the time-getter to "t"
        start (t)] ; Record starting time
    (doseq [n (range -1000 1001)] ; Loop over the range...
      (println n)) ; ... printing the numbers

    (println (- (t) start)))) ; Then print the current time minus the starting time.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.