ใช้เวลาในการพิมพ์ตัวเลข


21

สรุป

เขียนโปรแกรมหรือฟังก์ชั่นที่ไม่รับอินพุตใด ๆ และส่งออกตัวเลขจำนวนเต็มทั้งหมดระหว่าง -1000 ถึง 1,000 ตามลำดับจากน้อยไปหามากไปยัง stdout หนึ่งรายการต่อบรรทัดเช่นนี้

-1000
-999
-998
-997
...

และหลังจากนั้นคุณต้องพิมพ์เวลาที่ใช้เพื่อพิมพ์ตัวเลขเหล่านี้หรือเวลาตั้งแต่เริ่มต้นการทำงานของโปรแกรมเป็นมิลลิวินาที (หากจำเป็นมันยังสามารถมีสิ่งอื่น ๆ เช่น: เวลาที่ใช้: xxxms ก็โอเค) มันอาจเป็นทศนิยมหรือจำนวนเต็ม (ถ้าคุณพิมพ์จำนวนเต็มคุณต้องปัดเศษให้ใกล้เคียงที่สุด)

รหัสตัวอย่าง

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

ข้อ จำกัด

ไม่อนุญาตช่องโหว่มาตรฐาน

ข่าวสารอื่น ๆ

มันคือรหัสกอล์ฟดังนั้นการส่งที่สั้นที่สุดจะชนะ


@GurupadMamadapur ไม่มีขอโทษ
HorváthDávid

ทำไม? ฉันคิดว่าเป็นหลักในการพิมพ์ตัวเลขเหล่านั้นทุกคำสั่งที่เกี่ยวข้องจากจุดเริ่มต้นของโปรแกรมใช่มั้ย
Gurupad Mamadapur

1
@GurupadMamadapur ตกลงคุณถูกต้องฉันจะแก้ไขคำถามตาม
HorváthDávid

โปรแกรมสามารถรอระยะเวลาตั้งแต่เริ่มต้นและพิมพ์จำนวนนั้นได้หรือไม่?
xnor

@ xnor ฉันคิดว่านั่นจะเปลี่ยนความท้าทายและเนื่องจากมีคำตอบมากมายสำหรับความท้าทายดั้งเดิมฉันจึงไม่ตอบ
HorváthDávid

คำตอบ:


9

MATL , 13 ไบต์

1e3t_y&:!DZ`*

ลองออนไลน์!

       % 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
ดีมาก! สมาร์ทที่จะใช้: Implicitly start timer. นั่นคือจากวันแรกหรือเป็นผลมาจากความท้าทายก่อนหน้า?
Stewie Griffin

@StewieGriffin ไม่ใช่จากวันแรก ฉันเพิ่มเมื่อวันที่ 13 ก.ค. 2559อาจจะเป็นไปได้ว่าต้องเพิ่มความชัดเจนในความท้าทายสองสามอย่าง
Luis Mendo

9

Octave, 46 43 36 30 23 ไบต์

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

สิ่งนี้จะพิมพ์:

ans =

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

หากคุณไม่ชอบans =เราต้องเพิ่ม 6 ไบต์เพิ่มเติมสำหรับdisp:

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

บันทึกจำนวนมากต้องขอบคุณการแจ้งเตือนจาก rahnema1

คำอธิบาย:

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 ไบต์

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

เพื่อให้บันทึกเหตุการณ์ทั้งหมดคุณควรใช้สคริปต์จากคอนโซลนักพัฒนาซอฟต์แวร์ (มิฉะนั้นบันทึกจะถูกลบหลังจากจำนวนที่แน่นอน)


i=~1e3เพื่อบันทึก byte :-)
ETHproductions


7

Python 3.5, 80 77 73 ไบต์

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

โซลูชันก่อนหน้านี้เกี่ยวข้องกับการใช้timeitและtime.time()มีขนาดใหญ่กว่า

น่าเศร้าที่time.process_time()ได้รับการแนะนำใน python 3.3

ขอบคุณเดนนิสที่ช่วยประหยัด 4 ไบต์!


5

Bash (+ coreutils) 41, 49, 46, 44, 42 ไบต์

การแก้ไข:

  • Refactored เพื่อใช้ Bash-builtin (เวลา) เพื่อแก้ไขปัญหา @Dennis ที่มีความแม่นยำ
  • ลดลง 3 ไบต์โดยใช้ Bash 4+ |&สำหรับการเปลี่ยนเส้นทาง stderr
  • บันทึกอีก 2 ไบต์โดยแทนที่seq -1000 1000ด้วยseq -1e3 1e3 (ขอบคุณ @Dennis!);
  • -2 ไบต์โดยลบเครื่องหมายแบ็กสแลชที่ไม่จำเป็นและใช้ความแม่นยำเริ่มต้น (Thx @Dennis!)

แข็งแรงเล่นกอล์ฟ

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

ลองออนไลน์!

sidenote

การใช้ยูทิลิตี coreutils "time" แทนที่จะเป็น Bash-builtin จะส่งผลให้ 41โซลูชั่น 35 ไบต์:

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

"\"อยู่ที่นี่เพื่อทำให้ bashเรียกใช้คำสั่งจริงแทนที่จะสร้างขึ้นมา

น่าเสียดายที่ความแม่นยำของเวลาของ coreutils เพียง 1 / 100s ซึ่งทำให้เกิดความกังวลว่าเป็นวิธีการแก้ปัญหาที่ถูกต้อง


4

R, 42 ไบต์

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

สิ่งนี้จะพิมพ์

.
.
.
998
999
1000
elapsed 
     60 

หากต้องการลบelapsedจำเป็นต้องใช้สองไบต์เพิ่มเติม:

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

4

Bash + GNU utils, 43

  • บันทึก 2 ไบต์ขอบคุณ @Dennis
  • บันทึก 5 ไบต์ด้วย @zeppelin
c=date\ +%s%3N
s=`$c`
seq -1e3 1e3
$c-$s|bc

dateคำสั่งให้จำนวนวินาทีตั้งแต่ยุค concatenated ด้วยนาโนวินาทีปัจจุบัน คำสั่งนี้จะทำงานก่อนและหลัง bcใช้ความแตกต่างและการพิมพ์

ลองมันออนไลน์


ฉันหวังว่าจะทำเช่นนี้สำหรับ 17:

time seq -1e3 1e3

แต่ผลผลิตของเวลาให้มากกว่าที่เราต้องการ:

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

1
คุณสามารถบันทึกไบต์ที่สองโดยการแทนที่ด้วย1000 1e3
Dennis

"แต่เวลาจะให้ .... " ... บางทีคุณควรทุบตีคน
H Walters

1
คุณอาจจะสามารถบันทึกไม่กี่ไบต์โดยจับวันที่มีความแม่นยำ MS date +%s%3Nโดยตรงเช่นนี้
เรือเหาะ

4

JavaScript (ES6), 63 59 ไบต์

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


ดี คุณสามารถบันทึกสามไบต์ด้วยการลบพื้นที่ในnew (d=Date)และเริ่มต้นที่ -1000:for(t=new(d=Date),c=console.log,i=~1e3;i<1e3;c(++i));c(new d-t)
ETHproductions

@ETHproductions ขอบคุณ :) ~1e3เป็นสัมผัสที่ยอดเยี่ยม
George Reith

1
ในเอาต์พุตตัวอย่างมาจากสาเหตุเท่านั้น952ถึง1000เป็นเช่นนั้น?
Gurupad Mamadapur

@GurupadMamadapur เอาต์พุตตัวอย่างถูก จำกัด ที่ 50 บรรทัด (หรือแม่นยำยิ่งขึ้น: 50 บรรทัดสุดท้าย)
Arnauld

1
@IsmaelMiguel Amazing ไม่ทราบperformance.now()หรือPerformanceอินเทอร์เฟซเลย
George Reith

3

R, 66 ไบต์

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

อาจไม่สั้นที่สุด แต่ใช้งานได้


สามารถproc.timeเก็บไว้ในตัวแปรหรือไม่? t=proc.time;x=t(); ...
Annan

3

Mathematica, 51 ไบต์

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

คำอธิบาย

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

เก็บฟังก์ชั่นในPrint pพิมพ์หมายเลข 2001 เริ่มต้นที่ -1000 เพิ่มขึ้น 1

AbsoluteTiming@ ...

ค้นหาเวลาทั้งหมดที่ผ่านไปในไม่กี่วินาที

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

คูณด้วย 1,000 (วินาที -> miliseconds) และp( Print)


โอ๊ะคุณชนะฉันไป 3 นาที! :) คุณแน่ใจหรือว่าTimingไม่พอใจกับคำอธิบายปัญหา (คลุมเครือเล็กน้อย) เช่นกันAbsoluteTiming?
Greg Martin

2
@GregMartin Timingส่งออกเวลา CPU และไม่รวมเวลาที่ใช้โดยส่วนหน้า นั่นคือ. เวลาที่ใช้ในการเพิ่มตัวนับArrayจะถูกนับ แต่เวลาที่ใช้ในการแสดงตัวเลขเหล่านั้นบนหน้าจอจะไม่ถูกนับ เอฟเฟกต์นี้สามารถเห็นได้ในตัวอย่างง่ายๆนี้: Timing@Print@3ให้ 0 วินาที แต่AbsoluteTiming@Print@3ไม่
JungHwan Min

3

PHP, 110 70 ไบต์

ยังอีกหน่อย แต่บันทึกไว้ 38 ด้วย @ AlexHowansky's คำใบ้และสองมากขึ้นด้วยและ1e3~1e3

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

พิมพ์ลอย -rทำงานด้วย


2
คุณสามารถผ่าน microtime () ค่าความจริงและมันจะคืนค่าทศนิยมโดยตรงคุณไม่จำเป็นต้องเพิ่มสตริง
อเล็กซ์ Howansky

-30% พร้อมคำใบ้นั้น ฉันหวังว่าฉันจะทำคะแนนสูงสุดสิบบนความคิดเห็นของคุณ : D
Titus

มันน่าเศร้าที่ PHP ไม่มีสิ่งใดที่คืนค่าเวลาเป็นมิลลิวินาที เหมือนจาวาสคริปต์ที่มี ฉันไม่สามารถแนะนำการปรับปรุงได้ มันมีขนาดเล็กที่สุดเท่าที่จะทำได้ ทำได้ดี!
Ismael Miguel

@IsmaelMiguel ฉันคิดว่า JavaScript ไม่มี microseconds :)
ติตัส

@Titus สิ่งที่ฉันหมายถึงคือวันที่ของ Javascript ได้รับการจัดการทั้งหมดในมิลลิวินาทีในขณะที่ PHP มีเพียงไม่กี่วินาทีหรือไมโครวินาที
Ismael Miguel

3

Powershell, 27 ไบต์

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

ขอบคุณ AdmBorkBork ที่ชี้ให้เห็นว่าการส่งออกเริ่มต้น verbose เป็นที่ยอมรับในความท้าทาย

ผลลัพธ์ที่ได้เช่น:

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

สำหรับผลลัพธ์เพิ่มเติมที่มีเพียงมิลลิวินาทีใช้คำตอบดั้งเดิม:

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

ประหยัดเวลาก่อนเป็น $ 1 พิมพ์ไปที่ stdout โดยอัตโนมัติจากนั้นรับเวลาระหว่างการเริ่มต้นและสิ้นสุดการดำเนินการ


คุณสามารถไพพ์ช่วงไปที่oh( Out-Host) ซึ่งจะข้ามความจริงที่Measure-Commandจับไปป์ไลน์ ตัวอย่างที่ TIO
AdmBorkBork

@AdmBorkBork จุดคือว่าฉันไม่คิดว่ามันจะบันทึกไบต์เว้นแต่ฉันจะหายไปบางสิ่งบางอย่าง
colsw

Measure-Command{-1e3..1e3|oh}คือ 29 ไบต์ แน่นอนมันพิมพ์สิ่งพิเศษออกมาด้วยMeasure-Commandแต่ความท้าทายระบุอย่างชัดเจนว่าไม่เป็นไร
AdmBorkBork

พลาดจุดที่คุณสามารถพิมพ์ข้อมูลอื่น ๆ ได้จริงผู้สร้างความท้าทายอาจต้องบอกว่าถ้าเอาท์พุทคำสั่งของคำสั่งการวัดอย่างละเอียดมากเป็นที่ยอมรับ และ$1=date;-1e3..1e3;(date)-$1สั้นกว่าตัวเลือกวัดคำสั่ง 2 ไบต์ด้วย
colsw

โอ้ใช่ฮ่าฮ่า สนามกอล์ฟที่ดี
AdmBorkBork

2

Perl 6 , 45 ไบต์

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

ลองมัน

ขยาย:

# 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 ไบต์

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

ลองออนไลน์!

timexเป็น builtin ที่ดำเนินการกับสตริงและส่งคืนเวลาที่ใช้ในการประเมินค่าเป็นวินาที สตริงรูปแบบช่วง [-1000 1000] โดยใช้i:แล้ว columinizes โดยใช้,.และพิมพ์โดยใช้ echobuiltin


2

Pyth , 18 15 14 ไบต์

j}_J^T3J;*.d1J

ลองที่นี่!

คำอธิบาย

นี่คล้ายกับคำตอบของหลาม

    J ^ T3 ตั้งค่า J เป็น 1,000
  } _ J รายการตั้งแต่ -1000 ถึง 1,000
j เข้าร่วมรายการด้วยบรรทัดใหม่และพิมพ์โดยนัย
         ; *. d1J เวลาพิมพ์นับตั้งแต่การทำงานของโปรแกรมหน่วยเป็นมิลลิวินาที

การแก้ไข :

  • ขอบคุณfryamtheeggmanสำหรับการบันทึก 3 ไบต์!
  • ขอบคุณbusukxuanสำหรับการบันทึกไบต์

ฉันลองนี่ขนาด 14 ไบต์ไม่แน่ใจว่ามันทำงานถูกต้องหรือไม่ คุณต้องเพิ่มบรรทัดใหม่เมื่อเริ่มต้นโปรแกรม pyth.herokuapp.com/?code=%0AM%7D_J%5ET3J%2a.d1J&debug=0
busukxuan

2

Noodel , 17 13 ไบต์

13 ไบต์

ลองใช้วิธีที่แตกต่างกันเล็กน้อยและบันทึกไว้ 4 ไบต์

ƇQjȥḶGQɱ⁻Ñ€Ƈ⁻

ลองมัน:)

มันทำงานอย่างไร

Ƈ             # 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 ไบต์

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

ลองมัน:)

มันทำงานอย่างไร

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

ตัวอย่างใช้ค่า -4 ถึง 4 เพื่อไม่ให้ใช้เวลานานจนเสร็จ

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


คุณสร้างภาษานี้หลังหรือก่อนการท้าทายหรือไม่
Rɪᴋᴇʀ

@EasterlyIrk ก่อน :)
tkellehe

2

TI-Basic, 22 ไบต์

startTmr
For(A,-ᴇ3,ᴇ3
Disp A
End
startTmr-Ans
  • คำสั่งจำนวนมากแสดงด้วยโทเค็น 1 หรือ 2 ไบต์

  • ทดสอบกับ TI-84 CSE ที่จำลอง


2

Matlab, 16 23 ไบต์

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

แก้ไข: ฉันรู้ว่าฉันละเมิดกฎหลายข้อของการท้าทายนี้ นั่นจะสอนให้ฉันอ่านอ่านตอนดึก ๆ ตอนนี้ฉันก็รู้แล้วว่าคำตอบที่ถูกต้องนั้นเกือบจะเหมือนกับทางออกของ Octave แต่นั่นก็คือชีวิต

พิมพ์แต่ละองค์ประกอบใน array space เชิงเส้นที่สร้างขึ้น -1000: 1000 (ขาด; print to console)

tic / toc บันทึกเวลาและ toc พิมพ์เวลาไปยังคอนโซลโดยมีหรือไม่มี; . 1e3 จำเป็นต้องพิมพ์เป็นมิลลิวินาที


ค่อนข้างถูกต้องมีการแก้ไขโซลูชันที่ถูกต้อง
โอเว่นมอร์แกน


2

8th , 61 47 47 bytes

ขอบคุณ8th_devสำหรับการปรับปรุงที่ดี (บันทึก 14 ไบต์)

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

นี่จะพิมพ์ตัวเลขจำนวนเต็มทั้งหมดระหว่าง -1000 ถึง 1,000 ในลำดับจากน้อยไปหามากและเวลาที่ใช้ (เป็นมิลลิวินาที) เพื่อพิมพ์ตัวเลขเหล่านี้

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

1
ควรสังเกตว่าการแนะนำการแก้ไขเพื่อปรับปรุงรหัสมีคุณสมบัติเป็น "ทำลาย" ข้อเสนอแนะสำหรับการเล่นกอล์ฟควรได้รับความคิดเห็นแทน ฉันจะ ping ผู้ใช้ที่ทำได้ถ้าทำได้ แต่ทำไม่ได้ meta.codegolf.stackexchange.com/q/1615/34718
mbomb007

1
ฉันรู้ว่าคุณอนุมัติแล้วซึ่งใช้ได้เนื่องจากโพสต์ของคุณเอง แต่ผู้ตรวจสอบคนอื่น ๆ ในคิวการตรวจสอบควรปฏิเสธและผู้ใช้ที่แนะนำการแก้ไขในตอนแรกไม่ควรมี
mbomb007

@ mbomb007 - ขอบคุณที่ให้ฉันรู้สิ่งนี้ ในกรณีเฉพาะนี้ฉันตรวจสอบรหัสก่อนที่จะยอมรับ แต่ในครั้งต่อไปฉันจะข้ามหรือปฏิเสธประเภทการตรวจสอบดังกล่าว
Chaos Manor

2

Japt 23 ไบต์

มีวิธีแก้ปัญหาที่เทียบเท่าสองวิธี:

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

คนแรกโดยทั่วไปจะทำสิ่งต่อไปนี้:

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

นั่นคือตัวเลขจะถูกพิมพ์ตรงกลางของการลบเพื่อหลีกเลี่ยงการเก็บเวลาไว้ในตัวแปร อย่างไรก็ตามมันไม่สั้นไปกว่าเส้นทางตัวแปรซึ่งโดยทั่วไปแล้ว:

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

ในรุ่นล่าสุดของ Japt (ใหม่กว่าความท้าทายนี้) การตั้งค่าให้กลับมาโดยอัตโนมัติK new Date()วิธีนี้จะลดโซลูชันแรกลงเหลือ 21 ไบต์:

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

ทดสอบออนไลน์!


1

QBIC , 34 ไบต์

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

ใช้TIMERฟังก์ชันQBasic ซึ่งจะส่งคืนวินาทีในรูปแบบทศนิยม ทำให้ดูสวยเพิ่มบางไบต์

คำอธิบาย

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

แค่หัวเราะฉันคิดว่าฉันโพสต์คำตอบ 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";}

ฉันจะปล่อยให้มันเป็นแบบฝึกหัดเพื่อกำหนดว่ามันกำลังทำอะไรและจะเรียกมันอย่างไร - ไม่ควรยากเกินไป



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

หมายเหตุ: คุณควรปิดstderrเมื่อใช้งานสิ่งนี้ ฉันเชื่อว่าฉันทามติเกี่ยวกับเมตาคือสิ่งนี้ไม่ได้รับโทษจำนวนไบต์


1

SimpleTemplateขนาด 92 ไบต์

สิ่งที่ทำให้ฉันต้องฆ่าจริงๆคือต้องบันทึกเวลา

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

เนื่องจากไม่มีคณิตศาสตร์ (ยัง) สิ่งนี้ทำให้สิ่งที่ค่อนข้างยากบังคับให้ฉันเขียน PHP โดยตรง

Ungolfed:

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

Disclaimer:

ฉันเคยลองใช้มันด้วยe118ae72c535b1fdbe1b80c847f52aa161854fda คอมมิชชันจาก 2017-01-13

การคอมมิชชันล่าสุดคือการแก้ไขสิ่งที่ไม่เกี่ยวข้องกับรหัสในที่นี้


1

C 134 133 ไบต์

ขอบคุณ @Thomas Padron-McCarthy สำหรับการบันทึก 1 ไบต์

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

เวอร์ชันที่ไม่ถูกปรับแต่ง:

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

 }

คุณสามารถบันทึกอักขระหนึ่งตัวโดยเปลี่ยน "% lf" เป็น "% f"
Thomas Padron-McCarthy

ทำไมไม่int t=time(null);... printf("%d",time(null)-t)? สั้นกว่า AFAIK
SIGSTACKFAULT


1

Clojure, 94 ไบต์

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

ฉันผิดหวังที่ระยะเวลานี้ได้รับ แต่ฉันเดาว่าไม่มีใครอ้างว่า Clojure เป็นภาษาที่ดีในการเล่นกอล์ฟ

โซลูชั่นไร้เดียงสาที่เพิ่งบันทึกเวลาเริ่มต้นลูปแล้วพิมพ์เวลาปัจจุบันลบเวลาเริ่มต้น เว้นแต่ Clojure มีผู้ทะเยอทะยาน ms-time มากกว่าที่ฉันหายไปฉันไม่รู้ว่าสิ่งนี้จะสั้นลงได้อย่างไร บางทีการวนซ้ำโดยนัยบางอย่าง?

(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.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.