Sumário
Escreva um programa ou função que não receba nenhuma entrada e envie todos os números inteiros, entre -1000 e 1000 em ordem crescente, para o stdout, um por linha, como este:
-1000
-999
-998
-997
...
E depois disso, você precisa imprimir o tempo necessário para imprimir esses números ou o tempo desde o início da execução do programa em milissegundos (se necessário, também pode conter outras coisas, por exemplo: tempo gasto: xxxms está ok). Pode ser um número flutuante ou um número inteiro (se você imprimir um número inteiro, precisará arredondar para o mais próximo).
Código de exemplo
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);
}
}
Restrições
Não são permitidas brechas padrão
Outras informações
É código de golfe, então a finalização mais curta vence.
Respostas:
MATL , 13 bytes
Experimente online!
fonte
Implicitly start timer
. Isso aconteceu desde o primeiro dia ou é o resultado de um desafio anterior?Oitava,
4643363023 bytesIsso imprimirá:
Se você não gostar do
ans =
, precisamos adicionar 6 bytes adicionais paradisp
:Economizou muitos bytes graças a alguns lembretes de rahnema1.
Explicação:
fonte
JavaScript, 60 bytes
Para obter todos os eventos registrados, você deve usar o script no console do desenvolvedor (caso contrário, os logs serão apagados após uma certa quantidade deles).
fonte
i=~1e3
salvar um byte :-)CJam , 18 bytes
Experimente online!
Como funciona
fonte
Python 3.5,
807773 bytesAs soluções anteriores envolviam o uso de
timeit
etime.time()
eram maiores.Infelizmente,
time.process_time()
foi introduzido no python 3.3.Agradecimentos a Dennis por salvar 4 bytes!
fonte
Bash (+ coreutils),
41,49.,46.,44, 42 bytesEDITAS:
|&
para redirecionamento stderr;seq -1000 1000
porseq -1e3 1e3
(Thanks @Dennis!);Golfe
Experimente Online!
Nota
O uso do utilitário coreutils "time", em vez do built-in Bash, resulta em uma
41, Solução de 35 bytes:"\" está aqui para fazer com que o bash chame o comando real, em vez do incorporado.
Infelizmente, a precisão do tempo do coreutils é de apenas 1 / 100s, o que levantou preocupações sobre se é uma solução válida.
fonte
R, 42 bytes
Isso imprimirá
Para remover
elapsed
, são necessários dois bytes adicionais:fonte
Utilitários Bash + GNU, 43
O
date
comando fornece o número de segundos desde a época concatenada com os nanossegundos atuais. Este comando é executado antes e depois.bc
pega a diferença e imprime.Experimente online .
Eu esperava fazer isso por 17 anos:
Mas a produção de tempo oferece mais do que precisamos:
fonte
1000
por1e3
.date +%s%3N
.JavaScript (ES6),
6359 bytesfonte
new (d=Date)
e começando em -1000:for(t=new(d=Date),c=console.log,i=~1e3;i<1e3;c(++i));c(new d-t)
~1e3
é um ótimo toque.952
para1000
por que é isso?performance.now()
ou aPerformance
interface eraR, 66 bytes
Provavelmente não é o mais curto, mas funciona.
fonte
proc.time
ser armazenado em uma variável?t=proc.time;x=t(); ...
Mathematica, 51 bytes
Explicação
Armazenar a
Print
funçãop
. Imprima os números de 2001, começando em -1000, aumentando em 1.Encontre o tempo total decorrido em segundos.
Multiplique isso por 1000 (segundos -> milissegundos) e
p
(Print
).fonte
Timing
também não satisfaz a descrição do problema (um pouco vaga)AbsoluteTiming
?Timing
gera o tempo da CPU e não inclui o tempo gasto pelo front-end. Isso é. o tempo gasto para incrementar o contadorArray
é contado, mas o tempo gasto para exibir esses números na tela não é contado. Este efeito pode ser visto neste exemplo simples:Timing@Print@3
dá 0 segundos, masAbsoluteTiming@Print@3
não.PHP,
11070 bytesainda um pouco longo; mas salvou 38 com a dica de AlexHowansky e mais dois com
1e3
e~1e3
.impressões flutuam. Corra com
-r
.fonte
Powershell, 27 bytes
Agradecemos a AdmBorkBork por apontar que a saída padrão detalhada é aceitável no desafio.
As saídas resultam como:
para obter resultados mais contidos em apenas milissegundos, use a resposta original:
Economize tempo antes como US $ 1, imprima no stdout automaticamente e obtenha o tempo entre o início e o final da execução.
fonte
oh
(Out-Host
), que ignorará o fato de queMeasure-Command
captura o pipeline. Exemplo no TIOMeasure-Command{-1e3..1e3|oh}
tem 29 bytes. Claro, ele imprime coisas extras graças aoMeasure-Command
, mas o desafio afirma explicitamente que não há problema.$1=date;-1e3..1e3;(date)-$1
é de 2 bytes menor do que a opção medida de comando lá,Perl 6 , 45 bytes
Tente
Expandido:
fonte
J , 22 bytes
Experimente online!
timex
é um builtin que executa a string e retorna o tempo necessário para avaliá-la em segundos. A string forma o intervalo [-1000, 1000] usandoi:
, depois o columiniza usando,.
e imprime usando o built-inecho
.fonte
Pitão ,
181514 bytesExperimente aqui!
Explicação
Isso é semelhante à minha resposta em python.
Edições :
fonte
Noodel ,
1713 bytes13 bytes
Tentei uma abordagem um pouco diferente e economizou 4 bytes.
Tente:)
Como funciona
17 bytes
Tente:)
Como funciona
O snippet usa os valores de -4 a 4 para não demorar muito para ser concluído.
fonte
TI-Basic, 22 bytes
Muitos comandos são representados por tokens de 1 ou 2 bytes.
Testado em um TI-84 CSE emulado.
fonte
Matlab,
1623 bytesEdit: eu percebi que estava violando várias regras deste desafio. Isso vai me ensinar a ler o desafio tarde da noite. Agora também percebo que a resposta corrigida é quase idêntica à solução Octave, mas essa é a vida.
Imprime cada elemento na matriz de espaço linear criada -1000: 1000 (a falta de; imprime no console).
tic / toc registra a hora e toc imprime a hora no console com ou sem o; . 1e3 é necessário para imprimir em milissegundos.
fonte
Groovy,
7573 bytesObrigado a jaxad0127 por salvar 2 bytes!
Experimente aqui!
fonte
nanoTime
com uma divisão por 1e6 é menor quecurrentTimeMillis
. Também fornece tempo fracionário.8o ,
6147 bytesAgradecimentos a 8th_dev pela melhoria agradável (economizado 14 bytes)
Isso imprimirá todos os números inteiros entre -1000 e 1000 em ordem crescente e o tempo gasto (em milissegundos) para imprimir esses números
fonte
Japonês, 23 bytes
Existem duas soluções equivalentes:
O primeiro basicamente faz o seguinte:
Ou seja, os números são impressos no meio da subtração para evitar o armazenamento do tempo em uma variável. No entanto, não é mais curto que a rota variável, que é basicamente:
Na versão mais recente do Japt (mais recente que esse desafio),
K
está configurada para retornar automaticamentenew Date()
. Isso reduz a primeira solução para 21 bytes:Teste online!
fonte
QBIC , 34 bytes
Usa o QBasic
TIMER
função , que retorna segundos em notação decimal. Fazer com que pareça bonito adiciona alguns bytes.Explicação
fonte
C ++ - 261
Só para rir, pensei em publicar uma resposta em C ++.
Vou deixar isso como um exercício para determinar o que está fazendo e como chamá-lo - não deve ser muito difícil.
fonte
Scala, 77 bytes
fonte
ForceLang, 124
Nota: Você deve suprimir
stderr
ao executar isso. Acredito que o consenso sobre a meta é que isso não incorra em uma penalidade de contagem de bytes.fonte
SimpleTemplate , 92 bytes
O que realmente me matou foi a necessidade de registrar o tempo.
Como ainda não há matemática, isso dificulta bastante as coisas, forçando-me a escrever PHP diretamente.
Ungolfed:
Aviso Legal:
Eu executei isso com o commit e118ae72c535b1fdbe1b80c847f52aa161854fda , de 13/01/2017.
A confirmação mais recente foi corrigir algo não relacionado ao código aqui.
fonte
C
134133 bytesAgradecemos a @Thomas Padron-McCarthy por economizar 1 byte.
Versão não destruída:
fonte
int t=time(null);
...printf("%d",time(null)-t)
? AFAIK mais curtoGura , 75 bytes
fonte
Clojure, 94 bytes
Estou decepcionado com o tempo que isso durou, mas acho que ninguém nunca afirmou que Clojure era uma boa linguagem para jogar golfe.
Solução ingênua que apenas registra a hora de início, faz um loop e depois imprime a hora atual menos a hora de início. A menos que Clojure tenha um getter de tempo ms do que estou perdendo, não sei como isso pode ficar mais curto. Talvez algum tipo de loop implícito?
fonte