Thời gian để in số


21

Tóm lược

Viết chương trình hoặc hàm, không nhận bất kỳ đầu vào nào và xuất tất cả các số nguyên, từ -1000 đến 1000 theo thứ tự tăng dần, đến thiết bị xuất chuẩn, mỗi dòng trên một dòng, như sau:

-1000
-999
-998
-997
...

Và sau đó, bạn cần in thời gian cần thiết để in các số này hoặc thời gian từ khi bắt đầu thực hiện chương trình tính bằng mili giây (nếu cần, nó cũng có thể chứa một số thứ khác, ví dụ: thời gian thực hiện: xxxms là ok). Nó có thể là số float hoặc số nguyên (nếu bạn in một số nguyên, bạn cần làm tròn xuống gần nhất).

Mã ví dụ

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

Hạn chế

Sơ hở tiêu chuẩn không được phép

Thông tin khác

Đó là mã golf, vì vậy bài nộp ngắn nhất sẽ thắng.


@GurupadMamadapur Không, xin lỗi
Horváth Dávid

Tại sao? Tôi nghĩ về cơ bản để in những con số đó, mọi tuyên bố đều được tham gia từ khi bắt đầu chương trình phải không?
Gurupad Mamadapur

1
@GurupadMamadapur Ok, bạn nói đúng, tôi sẽ chỉnh sửa câu hỏi cho phù hợp.
Horváth Dávid

Chương trình có thể đợi một khoảng thời gian từ khi bắt đầu và in số tiền đó không?
xnor

@xnor Tôi nghĩ rằng, điều đó sẽ thay đổi thử thách, và vì đã có rất nhiều câu trả lời cho thử thách ban đầu, tôi sẽ nói không.
Horváth Dávid

Câu trả lời:


9

MATL , 13 byte

1e3t_y&:!DZ`*

Hãy thử trực tuyến!

       % 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
Rất đẹp! Thông minh để thực hiện : Implicitly start timer. Đó có phải là từ ngày đầu tiên, hay đó là kết quả của một thử thách trước đó?
Stewie Griffin

@StewieGriffin Không phải từ ngày đầu tiên. Tôi đã thêm nó vào ngày 13 tháng 7 năm 2016 , có lẽ sau khi phải xác định rõ ràng nó trong một vài thử thách
Luis Mendo

9

Octave, 46 43 36 30 23 byte

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

Điều này sẽ in:

ans =

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

Nếu bạn không thích ans =, thì chúng ta phải thêm 6 byte cho disp:

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

Đã lưu rất nhiều byte nhờ một vài lời nhắc từ rahnema1.

Giải trình:

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 byte

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

Để có được tất cả các sự kiện được ghi lại, bạn nên sử dụng tập lệnh từ bảng điều khiển dành cho nhà phát triển (nếu không các nhật ký sẽ bị xóa sau số lượng nhất định của chúng).


i=~1e3để lưu một byte :-)
Sản phẩm ETH

7

CJam , 18 byte

es2001{1e3-n}/es\-

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

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 byte

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

Các giải pháp trước đây liên quan đến việc sử dụng timeittime.time(), chúng lớn hơn.

Đáng buồn thay, time.process_time()đã được giới thiệu trong python 3.3.

Cảm ơn Dennis vì đã tiết kiệm 4 byte!


5

Bash (+ lõi), 41, 49, 46, 44, 42 byte

CHỈNH SỬA:

  • Được tái cấu trúc để sử dụng Bash-buildin (thời gian), để giải quyết các mối quan tâm chính xác của @Dennis;
  • Giảm 3 byte, bằng cách sử dụng Bash 4+ |&để chuyển hướng stderr;
  • Đã lưu thêm 2 byte bằng cách thay thế seq -1000 1000bằng seq -1e3 1e3(Cảm ơn @Dennis!);
  • -2 byte bằng cách xóa dấu gạch chéo ngược không cần thiết và sử dụng độ chính xác mặc định (Thx @Dennis!).

Chơi gôn

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

Dùng thử trực tuyến!

Sidenote

Sử dụng tiện ích "thời gian" của coreutils, thay vì tiện ích Bash-dựng sẵn, dẫn đến một 41, Giải pháp 35 byte:

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

"\" ở đây để làm bash gọi lệnh thực, thay vì dựng sẵn.

Thật không may, độ chính xác thời gian của coreutils chỉ là 1/100, điều này đã gây lo ngại về việc liệu đây có phải là một giải pháp hợp lệ hay không.


4

R, 42 byte

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

Cái này sẽ in

.
.
.
998
999
1000
elapsed 
     60 

Để loại bỏ elapsed, hai byte bổ sung là cần thiết:

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

4

Đồ dùng Bash + GNU, 43

  • Đã lưu 2 byte nhờ @Dennis
  • Đã lưu 5 byte nhờ @zeppelin
c=date\ +%s%3N
s=`$c`
seq -1e3 1e3
$c-$s|bc

Các datelệnh cho số giây kể từ khi kỷ nguyên nối với nano giây hiện tại. Lệnh này được chạy trước và sau. bccó sự khác biệt và bản in.

Hãy thử trực tuyến .


Tôi đã hy vọng làm điều này trong 17:

time seq -1e3 1e3

Nhưng đầu ra của thời gian mang lại nhiều hơn những gì chúng ta cần:

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

1
Bạn có thể lưu hai byte bằng cách thay thế 1000bằng 1e3.
Dennis

"Nhưng đầu ra của thời gian mang lại ...." ... có lẽ bạn nên đàn ông bash.
H Walters

1
Bạn có thể có thể lưu một vài byte, bằng cách chụp trực tiếp ngày với độ chính xác ms, như thế này : date +%s%3N.
zeppelin

4

JavaScript (ES6), 63 59 byte

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


Tốt đẹp. Bạn có thể lưu ba byte bằng cách xóa khoảng trống trong new (d=Date)và bắt đầu từ -1000:for(t=new(d=Date),c=console.log,i=~1e3;i<1e3;c(++i));c(new d-t)
Sản phẩm ETH

@ETHproductions cảm ơn :) đó ~1e3là một liên lạc tuyệt vời.
George Reith

1
Trong đầu ra đoạn trích là từ chỉ 952đến 1000tại sao vậy?
Gurupad Mamadapur

@GurupadMamadapur Sản lượng đoạn trích được giới hạn ở 50 dòng. (Hay chính xác hơn: 50 dòng cuối cùng.)
Arnauld

1
@IsmaelMiguel Amazing hoàn toàn không biết performance.now()hoặc Performancegiao diện
George Reith

3

R, 66 byte

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

Có lẽ không phải là ngắn nhất nhưng nó hoạt động.


Có thể proc.timeđược lưu trữ trong một biến? t=proc.time;x=t(); ...
Annan

3

Toán học, 51 byte

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

Giải trình

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

Lưu trữ Printchức năng trong p. In số 2001, bắt đầu từ -1000, tăng thêm 1.

AbsoluteTiming@ ...

Tìm tổng thời gian trôi qua trong vài giây.

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

Nhân số đó với 1000 (giây -> milisecond) và p( Print) nó.


Argh, bạn đánh tôi 3 phút! :) Bạn có chắc chắn Timingkhông thỏa mãn mô tả vấn đề (hơi mơ hồ) AbsoluteTimingkhông?
Greg Martin

2
@GregMartin Timingxuất thời gian CPU và không bao gồm thời gian dành cho giao diện người dùng. Đó là. thời gian thực hiện để tăng bộ đếm trong Arrayđược tính, nhưng thời gian thực hiện để hiển thị những số đó trên màn hình không được tính. Hiệu ứng này có thể được nhìn thấy trong ví dụ đơn giản này: Timing@Print@3cho 0 giây, nhưng AbsoluteTiming@Print@3không.
JungHwan Min

3

PHP, 110 70 byte

vẫn còn hơi dài; nhưng đã lưu 38 với gợi ý @ AlexHowansky, và hai lần nữa với 1e3~1e3.

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

in nổi. Chạy với -r.


2
Bạn có thể chuyển microtime () một giá trị trung thực và nó sẽ trả về một số float trực tiếp, bạn không phải thêm các chuỗi.
Alex Howansky

-30% với gợi ý đó. Tôi ước tôi có thể làm mười điều trên bình luận của bạn. : D
Tít

Thật đáng buồn khi PHP không có thứ gì đó trả lại thời gian tính bằng mili giây. Giống như Javascript có. Tôi không thể đề xuất cải tiến. Nó nhỏ như nó có thể nhận được. Làm tốt!
Ismael Miguel

@IsmaelMiguel Tôi nghĩ rằng JavaScript không cót mỗi giây. :)
Tít

@Titus Ý tôi là ngày tháng của Javascript được xử lý trong một phần nghìn giây, trong khi PHP chỉ có giây hoặc micro giây.
Ismael Miguel

3

Powershell, 27 byte

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

Cảm ơn admBorkBork đã chỉ ra rằng đầu ra mặc định dài dòng có thể chấp nhận được trong thử thách.

Kết quả đầu ra như:

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

để biết thêm kết quả chứa chỉ một phần nghìn giây, hãy sử dụng câu trả lời gốc:

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

Tiết kiệm thời gian trước là $ 1, in ra thiết bị xuất chuẩn tự động, sau đó lấy thời gian giữa lúc bắt đầu và kết thúc thực hiện.


Bạn chỉ có thể chuyển phạm vi sang oh( Out-Host) sẽ bỏ qua thực tế là Measure-Commandbắt được đường ống. Ví dụ tại TIO
admBorkBork

@AdmBorkBork vấn đề là tôi không nghĩ nó sẽ tiết kiệm byte, trừ khi tôi thiếu thứ gì đó.
colsw

Measure-Command{-1e3..1e3|oh}là 29 byte. Chắc chắn, nó in ra những thứ bổ sung nhờ Measure-Command, nhưng thách thức nói rõ rằng điều đó ổn.
admBorkBork

Trên thực tế đã bỏ lỡ điểm mà bạn có thể in dữ liệu khác, người tạo thách thức có thể cần phải nói nếu đầu ra rất dài của Lệnh-Lệnh có thể chấp nhận được. cũng $1=date;-1e3..1e3;(date)-$1ngắn hơn 2 byte so với tùy chọn lệnh đo ở đó,
colsw

Ồ đúng rồi, haha. Sân golf đẹp.
admBorkBork

2

Perl 6 , 45 byte

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

Thử nó

Mở rộng:

# 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 byte

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

Hãy thử trực tuyến!

timexlà một nội trang thực thi chuỗi và trả về thời gian cần thiết để đánh giá chuỗi đó trong vài giây. Chuỗi tạo thành phạm vi [-1000, 1000] bằng cách sử dụng i:, sau đó tô màu cho nó bằng cách sử dụng ,.và in nó bằng cách sử dụng nội dung echo.


2

Pyth , 18 15 14 byte

j}_J^T3J;*.d1J

Hãy thử nó ở đây!

Giải trình

Điều này tương tự như câu trả lời của con trăn của tôi.

    J ^ T3 Đặt J thành 1000
  } _ Danh sách J dao động từ -1000 đến 1000
j Tham gia danh sách với các dòng mới và in ngầm
         ; *. d1J Thời gian in kể từ khi thực hiện chương trình tính bằng mili giây

Chỉnh sửa :


Tôi đã thử điều này, 14 byte, không chắc nó có hoạt động tốt không. Bạn cần thêm một dòng mới khi bắt đầu chương trình. pyth.herokuapp.com/?code=%0AM%7D_J%5ET3J%2a.d1J&debug=0
busukxuan

2

Noodel , 17 13 byte

13 byte

Đã thử một cách tiếp cận hơi khác và lưu 4 byte.

ƇQjȥḶGQɱ⁻Ñ€Ƈ⁻

Thử nó:)

Làm thế nào nó hoạt động

Ƈ             # 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 byte

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

Thử nó:)

Làm thế nào nó hoạt động

Ƈ                 # 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.

Đoạn mã sử dụng các giá trị -4 đến 4 để không mất quá nhiều thời gian để hoàn thành.

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


Bạn đã tạo ra ngôn ngữ này sau hoặc trước thử thách?
Rɪᴋᴇʀ

@EasterlyIrk, trước :)
tkellehe

2

TI-Basic, 22 byte

startTmr
For(A,-ᴇ3,ᴇ3
Disp A
End
startTmr-Ans
  • Nhiều lệnh được biểu thị bằng mã thông báo 1 hoặc 2 byte.

  • Đã thử nghiệm trên một chiếc TI-84 CSE giả lập.


2

Matlab, 16 23 byte

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

Chỉnh sửa: Tôi nhận ra mình đã vi phạm một số quy tắc của thử thách này. Điều đó sẽ dạy tôi đọc lướt thử thách vào đêm khuya. Bây giờ tôi cũng nhận ra rằng câu trả lời đúng gần giống với giải pháp Octave, nhưng đó là cuộc sống.

In từng phần tử trong mảng không gian tuyến tính đã tạo -1000: 1000 (thiếu; in ra bàn điều khiển).

tic / toc ghi lại thời gian và toc in thời gian ra bàn điều khiển có hoặc không có; . 1e3 là cần thiết để in trong một phần nghìn giây.


Hoàn toàn đúng, một giải pháp chính xác đã được chỉnh sửa.
Owen Morgan


2

8 , 61 47 byte

Cảm ơn 8th_dev vì sự cải thiện tốt đẹp (đã lưu 14 byte)

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

Điều này sẽ in tất cả các số nguyên từ -1000 đến 1000 theo thứ tự tăng dần và thời gian thực hiện (tính bằng mili giây) để in các số này

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

1
Cần lưu ý rằng đề xuất các chỉnh sửa để cải thiện mã đủ điều kiện là "phá hoại". Thay vào đó, những gợi ý cho việc chơi golf nên được đưa ra như một bình luận. Tôi sẽ ping người dùng đã làm điều đó nếu tôi có thể, nhưng tôi không thể. meta.codegolf.stackexchange.com/q/1615/34718
mbomb007

1
Tôi biết rằng bạn đã chấp thuận nó, điều này tốt vì đó là bài đăng của riêng bạn, nhưng những người đánh giá khác trong hàng đánh giá nên từ chối nó và người dùng đề xuất chỉnh sửa ở nơi đầu tiên không nên có.
mbomb007

@ mbomb007 - Cảm ơn bạn đã cho tôi biết điều này. Trong trường hợp cụ thể này, tôi đã xác minh mã trước khi chấp nhận nó, nhưng lần sau tôi sẽ bỏ qua hoặc từ chối loại đánh giá đó.
Chaos Manor

2

Japt, 23 byte

Có hai giải pháp tương đương:

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

Cái đầu tiên về cơ bản thực hiện như sau:

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

Đó là, các số được in ở giữa phép trừ để tránh phải lưu trữ thời gian trong một biến. Tuy nhiên, nó không ngắn hơn tuyến đường biến đổi, về cơ bản là:

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

Trong phiên bản mới nhất của Japt (mới hơn thử thách này), Kđược thiết lập để tự động quay lại new Date(). Điều này cắt giải pháp đầu tiên xuống còn 21 byte:

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

Kiểm tra nó trực tuyến!


1

QBIC , 34 byte

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

Sử dụng QBasic TIMER hàm , trả về giây theo ký hiệu thập phân. Làm cho nó trông đẹp thêm một số byte.

Giải trình

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

Chỉ để cười tôi nghĩ tôi sẽ đăng câu trả lời 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";}

Tôi sẽ để nó như một bài tập để xác định những gì nó đang làm và cách gọi nó - không quá khó.


1

Scala, 77 byte

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

Lưu ý: Bạn nên thay thế stderrkhi chạy này. Tôi tin rằng sự đồng thuận về meta là điều này không phải chịu một hình phạt đếm byte.


1

SimpleTemplate , 92 byte

Điều thực sự giết chết tôi là sự cần thiết phải ghi lại thời gian.

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

Vì không có toán (chưa), điều này làm cho mọi thứ khá khó khăn, buộc tôi phải viết PHP trực tiếp.

Ung dung:

{@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"];}

Tuyên bố miễn trừ trách nhiệm:

Tôi đã chạy nó với cam kết e118ae72c535b1fdbe1b80c847f52aa161854fda , từ 2017-01-13.

Cam kết mới nhất là sửa một cái gì đó không liên quan đến mã ở đây.


1

C 134 133 byte

Cảm ơn @Thomas Padron-McCarthy vì đã tiết kiệm 1 byte.

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

Phiên bản bị đánh cắp:

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

 }

Bạn có thể lưu một ký tự bằng cách thay đổi "% lf" thành "% f".
Thomas Padron-McCarthy

Tại sao không int t=time(null);... printf("%d",time(null)-t)? AFAIK ngắn hơn
SIGSTACKFAULT

1

Gura , 75 byte

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

1

Clojure, 94 byte

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

Tôi thất vọng về điều này kéo dài bao lâu, nhưng tôi đoán không ai từng khẳng định Clojure là một ngôn ngữ tốt để chơi gôn.

Giải pháp ngây thơ chỉ ghi lại thời gian bắt đầu, vòng lặp, sau đó in thời gian hiện tại trừ đi thời gian bắt đầu. Trừ khi Clojure có một getter thời gian ms hơn tôi bị thiếu, tôi không biết làm thế nào điều này có thể rút ngắn hơn nữa. Có lẽ một số loại vòng lặp ngầm?

(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.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.