Sayıları yazdırmak için geçen süre


21

özet

Herhangi bir girdi almayan ve artan sırayla -1000 ile 1000 arasındaki tüm tam sayı sayılarını stdout'a, her satıra bir tane olacak şekilde, şöyle yazar:

-1000
-999
-998
-997
...

Bundan sonra, bu sayıları yazdırmak için harcanan zamanı veya programın milisaniye cinsinden çalıştırılmasının başlangıcından itibaren geçen zamanı (gerekirse, ayrıca başka şeyler de içerebilir, örneğin: alınan zaman: xxxms tamam). Bir şamandıra veya bir tamsayı olabilir (bir tamsayı yazdırıyorsanız, en yakınına yuvarlamanız gerekir).

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

Kısıtlamalar

Standart boşluklara izin verilmez

Diğer bilgiler

Bu kod golf, en kısa gönderim kazanıyor.


@GurupadMamadapur Hayır, üzgünüm
Horváth Dávid

Niye ya? Esasen, her ifadenin programın başlangıcından itibaren dahil olduğu bu sayıları yazdırmayı düşünüyorum.
Gurupad Mamadapur,

1
@GurupadMamadapur Tamam, haklısın, soruyu buna göre düzenleyeceğim.
Horváth Dávid

Program baştan bir süre bekleyebilir ve bu miktarı yazdırabilir mi?
xnor

@ xnor, bence bu meydan okumayı değiştirecek ve orijinal meydan okumaya zaten çok fazla cevap olduğu için hayır diyeceğim.
Horváth Dávid

Yanıtlar:


9

MATL , 13 bayt

1e3t_y&:!DZ`*

Çevrimiçi deneyin!

       % 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
Çok hoş! Akıllı uygulamak: Implicitly start timer. İlk günden itibaren orada mıydı, yoksa daha erken bir mücadelenin sonucu mu?
Stewie Griffin,

@StewieGriffin İlk günden itibaren değil. Bunu 13 Temmuz 2016 tarihinde ekledim , muhtemelen birkaç zorlukta açıkça ortaya koyduktan sonra
Luis Mendo

9

Octave, 46 43 36 30 23 bayt

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

Bu yazdıracak:

ans =

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

Eğer beğenmediyseniz, ans =bunun için 6 bayt daha eklemek zorundayız disp:

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

Rahnema1 tarafından gönderilen birkaç hatırlatıcı sayesinde çok sayıda bayt kurtardı.

Açıklama:

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 bayt

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

Tüm olayları günlüğe kaydetmek için, komut dosyasını geliştirici konsolundan kullanmanız gerekir (aksi takdirde kayıtlar belirli bir miktardan sonra silinir).


i=~1e3bir bayt kurtarmak için :-)
ETHproductions

7

CJam , 18 bayt

es2001{1e3-n}/es\-

Çevrimiçi deneyin!

Nasıl çalışır

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 bayt

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

Önceki çözümler timeitve kullanım dahil time.time(), daha büyük.

Ne yazık ki, time.process_time()python 3.3'te tanıtıldı.

4 byte tasarruf ettiğin için Dennis'e teşekkürler !


5

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

DÜZENLEMELER:

  • @Dennis hassas kaygılarını gidermek için Bash-builtin (time) kullanımı yeniden düzenlendi;
  • |&Stderr yönlendirmesi için Bash 4+ kullanılarak 3 bayt azaltılır;
  • Değiştirerek 2 daha bayt Kaydedilen seq -1000 1000ile seq -1e3 1e3(teşekkürler @Dennis!);
  • Gereksiz ters eğik çizgiyi kaldırarak ve varsayılan kesinlik kullanarak (bayt @Dennis!) -2 bayt.

golfed

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

Çevrimiçi Deneyin!

Kenar notu

Bash-builtin yerine coreutils "time" yardımcı programını kullanmak, 41, 35 baytlık çözüm:

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

"\" bash komutunun yerleşik yerine gerçek komutu çağırmasınısağlamak için burada.

Maalesef, coreutils'in zaman hassasiyeti sadece 1/100'ler arasındadır ve bunun geçerli bir çözüm olup olmadığı konusunda endişeleri artmıştır.


4

R, 42 bayt

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

Bu yazdıracak

.
.
.
998
999
1000
elapsed 
     60 

Kaldırmak için elapsediki ek bayt gereklidir:

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

4

Bash + GNU yardımcı programları, 43

  • @Dennis sayesinde 2 bayt kaydedildi
  • @Zeppelin sayesinde 5 bayt kaydedildi
c=date\ +%s%3N
s=`$c`
seq -1e3 1e3
$c-$s|bc

dateKomut akım nanosaniye ile birleştirilmiş Dönemden beri saniye sayısını verir. Bu komut önce ve sonra çalıştırılır. bcfarkı alır ve yazdırır.

Çevrimiçi deneyin .


17 yaşında bunu yapmayı umuyordum:

time seq -1e3 1e3

Ancak zamanın çıkışı ihtiyacımızdan daha fazlasını verir:

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

1
Sen değiştirerek iki bayt kaydedebilirsiniz 1000ile 1e3.
Dennis

“Ama zamanın çıktısı ....” veriyor ... belki de bash yapmalısın.
H Walters,

1
Tarihi doğrudan ms hassasiyetiyle çekerek, aşağıdaki gibi büyük olasılıkla birkaç bayttan tasarruf edebilirsiniz date +%s%3N.
zeplin

4

JavaScript (ES6), 63 59 bayt

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


Güzel. Boşluk new (d=Date)for(t=new(d=Date),c=console.log,i=~1e3;i<1e3;c(++i));c(new d-t)
bırakarak

@ETHproductions teşekkürler :) ~1e3harika bir dokunuş.
George Reith,

1
Pasajı çıktısında sadece arasındadır 952için 1000yani neden?
Gurupad Mamadapur,

@GurupadMamadapur Snippet çıkışı 50 satırla sınırlıdır. (Ya da daha doğrusu: 50 son satır.)
Arnauld,

1
@IsmaelMiguel Amazing, farkında değildi performance.now()ya da hiç bir Performancearayüz yok
George Reith

3

R, 66 bayt

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

Muhtemelen en kısa değil ama işe yarıyor.


Can proc.timebir değişkene saklanabilir? t=proc.time;x=t(); ...
Annan

3

Mathematica, 51 bayt

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

açıklama

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

PrintFonksiyonu içinde saklayın p. -1 ile başlayan, 1 ile artan 2001 sayılarını yazdırın.

AbsoluteTiming@ ...

Saniye cinsinden geçen toplam süreyi bulun.

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

Bunu 1000 (saniye -> milisaniye) ve p( Print) ile çarpın .


Argh, beni 3 dakikada yendin! :) Timing(Biraz belirsiz) problem tanımlamasının da tatmin edici olmadığından emin misiniz AbsoluteTiming?
Greg Martin

2
@GregMartin Timing, CPU süresini verir ve ön uç tarafından geçen süreyi içermez. Yani. sayacı artırmak için Arraygeçen süre sayılır, ancak bu sayıları ekranda görüntülemek için geçen süre sayılmaz. Bu etki bu basit örnekte görülebilir: Timing@Print@30 saniye verir, ancak AbsoluteTiming@Print@3olmaz.
JungHwan Min

3

PHP, 110 70 bayt

hala biraz uzun; ancak @ AlexHowansky'nin ipucuyla 38, ve ile 1e3ve ile daha fazla tasarruf sağladı ~1e3.

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

float yazdırır. İle koş -r.


2
Microtime () 'a bir truthy değeri iletebilirsiniz ve doğrudan bir kayan nokta döndürür, dizeleri eklemek zorunda değilsiniz.
Alex Howansky,

Bu ipucuyla% -30. Keşke yorumunuzda 10 oy yapabilseydim. : D
Titus

PHP'nin zamanı milisaniye cinsinden döndüren bir şeyde bulunmaması üzücü. Javascript gibi. Gelişmeler öneremem. Alabildiği kadar küçük. Aferin!
Ismael Miguel,

@IsmaelMiguel JavaScript'in mikrosaniye olmadığını düşünüyorum. :)
Titus

@Titus Demek istediğim, Javascript’in tarihlerinin milisaniye cinsinden işlendiği, PHP’nin ise yalnızca saniye veya mikrosaniye olduğu anlamına geliyor.
Ismael Miguel,

3

Powershell, 27 Bayt

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

AdmBorkBork, ayrıntılı varsayılan çıktının mücadelede kabul edilebilir olduğuna dikkat çektiği için teşekkür ederiz.

Çıktılar şöyle sonuçlanır:

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

sadece milisaniyenin daha içerdiği sonuç için, orijinal cevabı kullanın:

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

1 $ 'dan önce zaman kazanın, otomatik olarak stdout'a yazdırın, ardından yürütmenin başlangıcı ile bitişi arasındaki zamana geçin.


Sadece oh( Out-Host) aralığını Measure-Commandboru hattını yakalayan gerçeği atlayacak şekilde ( ) olarak yönlendirebilirsiniz . TIO Örneği
AdmBorkBork

@AdmBorkBork nokta bir şey eksik olmadığı sürece, bayt tasarruf edeceğini sanmıyorum oldu.
17'de

Measure-Command{-1e3..1e3|oh}29 bayttır. Tabii ki, sayesinde çok fazla şey basıyor Measure-Command, ancak zorluk açıkça bunun doğru olduğunu gösteriyor.
AdmBorkBork

Aslında diğer verileri yazdırabileceğiniz noktayı kaçırdı, meydan oluşturucunun Measure-Command öğesinin çok ayrıntılı çıktısının kabul edilebilir olup olmadığını söylemesi gerekebilir. Ayrıca $1=date;-1e3..1e3;(date)-$1, 2 orada ölçü-komuta seçeneği daha kısa bayt olduğunu
colsw

Ah doğru, haha. Güzel golf.
AdmBorkBork

2

Perl 6 , 45 bayt

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

Dene

Expanded:

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

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

Çevrimiçi deneyin!

timexdize yürüten ve saniyeler içinde değerlendirmek için geçen süreyi döndüren bir yerleşiktir. Dize kullanarak [-1000, 1000] aralığını oluşturur i:, sonra onu kullanarak sütunlaşır ,.ve yerleşik kullanarak yazdırır echo.


2

Pyth , 18 15 14 bayt

j}_J^T3J;*.d1J

Burada dene!

açıklama

Bu benim python cevabımı benzer.

    J ^ T3 J'i 1000'e ayarla
  } _ J Listesi -1000 ila 1000 arasında değişir
j Listeye yeni çizgilerle katılın ve örtülü olarak yazdırın
         ; *. d1J Programın milisaniye cinsinden yürütüldüğünden beri yazdırma süresi

Düzenlemeler :


Bunu denedim, 14 bayt, doğru çalışıp çalışmadığından emin değilim. Programın başlangıcında yeni bir satır eklemeniz gerekir. pyth.herokuapp.com/?code=%0AM%7D_J%5ET3J%2a.d1J&debug=0
busukxuan

2

Noodel , 17 13 bayt

13 bayt

Biraz farklı bir yaklaşım denedim ve 4 bayt kurtardı.

ƇQjȥḶGQɱ⁻Ñ€Ƈ⁻

Dene:)

Nasıl çalışır

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

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

Dene:)

Nasıl çalışır

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

Snippet'in tamamlanması çok uzun sürmemek için -4 ila 4 arasındaki değerleri kullanır.

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


Bu dili meydan okumadan önce veya sonra oluşturdunuz mu?
Rɪᴋᴇʀ

@EasterlyIrk, önce :)
tkellehe

2

TI-Basic, 22 bayt

startTmr
For(A,-ᴇ3,ᴇ3
Disp A
End
startTmr-Ans
  • Birçok komut 1 veya 2 bayt simge ile gösterilir.

  • Taklit edilmiş bir TI-84 CSE'sinde test edilmiştir.


2

Matlab, 16 23 Bayt

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

Düzenleme: Bu meydan okuma kurallarından birkaçını ihlal ettiğimi fark ettim. Bu bana gece geç saatlerde meydan okumayı okumayı öğretir. Ayrıca şimdi düzeltilmiş cevabın Octave çözümüyle neredeyse aynı olduğunu biliyorum, ancak hayat böyle.

-1000: 1000 oluşturulan doğrusal boşluk dizisindeki her öğeyi yazdırır (eksikliği; konsola yazdırır).

tic / toc, saati kaydeder ve toc; . Milisaniye cinsinden yazdırmak için 1e3 gerekir.


Oldukça doğru, doğru bir çözüm düzenlendi.
Owen Morgan,

2

Groovy, 75 73 bayt

t=System.&nanoTime
s=t()
(-1000..1e3).each{println it}
print((t()-s)/1e6)

2 bayt kaydettiğiniz için jaxad0127'ye teşekkürler !

Burada dene!


1
nanoTime1e6 ile bir bölünme ile daha kısadır currentTimeMillis. Aynı zamanda kesirli zaman verir.
jaxad0127

2

8 , 61 47 bayt

Güzel iyileştirme için 8th_dev'e teşekkürler (14 bayt kaydedildi)

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

Bu, artan sırayla -1000 ile 1000 arasındaki tüm tam sayıları ve bu sayıları yazdırmak için harcanan süreyi (milisaniye cinsinden) yazacaktır.

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

1
Kodu geliştirmek için düzenlemelerin önerilmesinin "yıkıcı" olarak nitelendirildiği belirtilmelidir. Golf için öneriler yerine yorum olarak verilmelidir. Yapabilirsem, bunu yapan kullanıcıya ping atmak isterdim ama yapamam. meta.codegolf.stackexchange.com/q/1615/34718
mbomb007

1
Onayladığınızı biliyorum, bu kendi gönderiminiz olduğundan beri sorun değil, ancak inceleme sırasındaki diğer hakemler tarafından reddedilmeli ve düzenlemeyi ilk sırada öneren kullanıcı olmamalıdır.
mbomb007

@ mbomb007 - Bunu bana bildirdiğiniz için teşekkür ederiz. Bu özel durumda, kabul etmeden önce kodu doğruladım, ancak bir dahaki sefere bu tür bir incelemeyi atlayacağım veya reddedeceğim.
Chaos Malikanesi

2

Japt, 23 bayt

İki eşdeğer çözüm vardır:

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

İlki temel olarak şunları yapar:

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

Yani, sayıları zamanın bir değişkende saklamak zorunda kalmaması için çıkarma işleminin ortasına basılmıştır. Bununla birlikte, temel olarak değişken değişkenden daha kısa değildir:

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

Japt'un en son sürümünde (bu zorluktan daha yeni), Kotomatik olarak geri dönmek üzere ayarlandı new Date(). Bu, ilk çözümü 21 bayta indirger:

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

Çevrimiçi test edin!


1

QBIC , 34 bayt

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

TIMEROndalık gösterimde saniye döndüren QBasic işlevini kullanır . Güzel görünmesi bazı baytlar ekler.

açıklama

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

Sadece bir gülüş için C ++ cevabı göndereceğimi düşündüm.

#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";}

Ne yaptığını ve nasıl çağırılacağını belirleyen bir alıştırma olarak bırakacağım - çok zor olmamalı.


1

Scala, 77 bayt

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

Not: Bunu stderrçalıştırırken bastırmanız gerekir . Meta üzerindeki fikir birliğinin bunun bayt sayma cezası vermediğine inanıyorum.


1

SimpleTemplate , 92 bayt

Beni gerçekten öldüren, zamanı kaydetme ihtiyacıydı.

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

Matematik henüz olmadığı için (henüz), bu işleri oldukça zorlaştırıyor, bu da beni doğrudan PHP yazmaya zorluyor.

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

Yasal Uyarı:

Bunu, e118ae72c535b1fdbe1b80c847f52aa161854fda taahhüdüyle yaptım 2017-01-13 itibaren.

En son iş buradaki kodla ilgili olmayan bir şeyi düzeltmekti.


1

C 134 133 bayt

@Thomas Padron-McCarthy'ye 1 byte tasarruf ettiğin için teşekkürler.

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

Ungolfed versiyonu:

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" yi "% f" olarak değiştirerek bir karakter kaydedebilirsiniz.
Thomas Padron-McCarthy

Neden olmasın int t=time(null);... printf("%d",time(null)-t)? Daha kısa AFAIK
SIGSTACKFAULT

1

Gura , 75 bayt

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

1

Clojure, 94 bayt

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

Bunun ne kadar sürdüğünü hayal kırıklığına uğrattım, ama kimse Clojure'un golf oynamak için iyi bir dil olduğunu iddia etmedi.

Sadece başlangıç ​​zamanını kaydeden saf çözüm, döngüler sonra geçerli zamanı eksi başlangıç ​​zamanını yazdırır. Clojure, özlediğimden daha fazla ms-zaman alıcıya sahip değilse, bunun nasıl daha kısa olabileceğini bilmiyorum. Belki bir çeşit örtülü döngü olabilir?

(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.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.