O desafio
Saída uma lista de anos que começa com o ano atual e termina 120 anos atrás. O ano de nascimento de todo ser humano vivo seria incluído nesta lista.
Detalhes
A lista deve estar em ordem decrescente.
Todas as funções internas para manipular matrizes e / ou listas são permitidas.
O menor código em bytes vence.
Quando executado este ano, a produção seria
2016, 2015, ..., 1897, 1896
Quando executado no próximo ano, a produção será
2017, 2016, ..., 1898, 1897
Etc.
Atualizar
- Alguns perguntaram sobre o formato da lista. Como a maioria adivinhou, isso não importa. Insira qualquer separador entre os números. Intuitivamente, a maioria inseriu uma vírgula ou espaço ou ambos, nova linha ou produz uma matriz.
- Quase sobre-humanos como Jeanne Calment são uma exceção à regra estabelecida na minha pergunta.
y
- 120 ay
" ou "imprima todos os anos de nascimento de pessoas vivas"? Porque se alguém nascido em 1896 está vivo hoje, isso não significa que ainda existam pessoas a partir de 1898.Respostas:
Pyke, 6 bytes
Experimente aqui!
(Depois
w
, o ponto de código para 153 está presente, mas não é imprimível)fonte
w
verdade tem um byte impublicável depois que o torna 121Pitão,
1198 bytesFunciona mapeando sobre o intervalo
[0...120]
e subtraindo todos os números do ano atual. O intervalo é construído implicitamente usando121
como argumento do mapa. Para evitar um espaço em branco de separação entre.d3
e121
obtemos esse número convertendoy
em seu ponto de código.Agradecemos a @FryAmTheEggman por apresentar essa abordagem!
Experimente aqui!
Solução antiga de 9 bytes:
Experimente aqui!
Cria o intervalo
[1...<current year>]
e leva apenas os últimos 121 elementos dele.fonte
-L...
salva alguns bytes.-L.d3C\y
deve funcionar para 8.R, 34 bytes
Veja aqui em um intérprete online.
Editar Pode ser reduzido para 33 bytes usando
substr
.mas tecnicamente essa solução funcionará apenas até o 9999-12-31.
fonte
:
operador ...AngularJS + Lodash , 274 bytes
Saída
fonte
BASH + coreutils,
3533 bytesfonte
date +"%Y"
into #date +%Y
x=`date +%Y`;seq $x -1 $[x-120]
ouseq $[x=`date +%Y`] -1 $[x-120]
funciona também.jot
no LinuxCJam,
141211 bytesEconomizou 2 bytes graças ao Sp3000 e 1 byte graças a Martin Ender
Experimente online!
Explicação
fonte
HP50g RPL, 97 bytes
Ungolfed:
Mostrando uma lista de 2016 até 1896:
fonte
05AB1E ,
87 bytesCódigo:
Explicação:
Usa a codificação CP-1252 . Experimente online! .
fonte
PowerShell,
2624 bytes@TimmyD versão melhorada:
Estava:
onde
date
correGet-Date
fonte
((date).year..0)[0..120]
:; infelizmente não é mais curto.Dyalog APL ,
1110 bytes120↑
pegue 120 elementos⌽
do reverso⍳
índices até⊃
o primeiro elemento de⎕TS
TimeStamp no formato [AAAA, M, D, h, m, s, t]TryAPL online!
Versão antiga:
⊃⎕TS
primeiro elemento de [AAAA, M, D, h, m, s, t]-
menos⍳120
[0, 1, 2, ..., 118, 119]Requer
⎕IO←0
, que é padrão em muitos sistemas.TryAPL online!
fonte
Vitsy + * sh
+ JavaScript,33262118 bytesO Vitsy não possui recuperação de data / hora nativa, então tive que usar shell e avaliação para este.
Obrigado a @Caleb por me ajudar a cortar outros 3 bytes!
Você não pode tentar este online, porque ele usa shell e eval.
A saída é como códigos de caracteres.
fonte
date +%Y
funciona muito bem.Linguagem Mathematica / Wolfram, 28 bytes
fonte
-Range@121+1
salva um byte sobre a lista baseada em zero. E#&@@
um byte acabou[[1]]
. Dito isto, a menos que indicado de outra forma no desafio, todos os envios devem ser funções ou programas completos, e esse código é apenas um trecho / expressão. A correção mais curta seria torná-la uma função sem nome acrescentando&
.#&@@Date[]-#&/@0~Range~120&
você economizará dois bytes, mas, para torná-la uma função, é necessário adicionar&
o final (que eu acho que o seu precisa), portanto, -1 bytes no total.R,
4739 bytesSe apenas alguém inventasse uma implementação UTF-8 de R com funções do sistema frequentemente abreviadas convenientemente ...
UPD: eliminou 7 (!) Bytes devido ao plannapus , que sugeriu a sub-ação de um
0:120
vetor em vez de contar dea
até(a-120)
1 byte para o usuário5957401 , que notou que issodouble
também funcionarianumeric
. Versão antiga:fonte
seq(a<-...,a-120)
só pode piorar a situação.as.double
vez deas.numeric
economizará um byte. Da mesma forma, se em vez de formatar uma data, você tratar a resposta data como uma corda para puxar e usarsubstr(Sys.Date(),1,4)
você salvar outro byteMATL , 10 bytes
Experimente online!
fonte
05AB1E, 9 bytes
121FžgN-=
Experimente on-line
fonte
php,
73 66 5842 bytesSaída:
Se não precisarmos nos separar
,
,58 5741 bytes:Obrigado a insertusernamehere por salvar 16 bytes
fonte
,
, veja muitas das outras respostas.<?php
etiqueta, pois permitimos a execução-r
gratuita de #<?=implode(', ',range($j=date(Y),$j-120));
Python 2,
64 6254 bytes@KarlKastor obrigado por 8 bytes!
fonte
time.gmtime().tm_year
é 3 bytes mais curtotime.gmtime()[0]
ainda menorPostgreSQL, 57 bytes
Quem precisa de
FROM
:-). Provavelmente não deve funcionar, mas funciona, tente no sqlfiddlefonte
Bash no OS X, 23
Isso também irá trabalhar em Linux, se você tem BSD
jot
instalada (por exemplosudo apt-get install athena-jot
.fonte
Python 2, 62 bytes
E a 64 bytes:
fonte
Oracle SQL 11.2, 111 bytes
fonte
Processando,
514241 bytesUngolfed
O processamento é apenas um invólucro para Java, se você não soubesse, e retira a maior parte do clichê, portanto a solução óbvia também é super curta em comparação com uma versão Java. Também abre uma janela para desenhar gráficos, mas isso não parece me desqualificar :)
fonte
for(int i=0;i<121;)print(year()-i+++" ");
MATLAB, 18 bytes
Assumindo que o formato de saída não importa (além da ordem decrescente), o programa a seguir imprime os últimos 121 anos começando com o atual.
Requer MATLAB versão r2014a ou superior. As versões anteriores não incluíam a
year
função.fonte
JavaScript,
55525049 bytes+9 bytes
alert
nos dados (não é necessário se você o executar em um console).-4 bytes se o delimitador não for necessário.
fonte
[]
s parecem ser desnecessários.for
vezwhile
dissofor(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d
:!C,
8785767465 bytesUngolfed:
Meu primeiro código de golfe - Qualquer ponteiro seria bem recebido. Seria bom se eu pudesse cortar o argc / argv lixo, mas não tenho que qualificados um programador C. Melhorias são bem-vindas.
EDIT : O ano atual é obtido a partir da linha de comando - especificamente por um grupo de bebedouros automatizados e bem treinados.
EDIT 2 : 85 bytes Graças a Easterly Irk (espaços removidos em torno dos parâmetros de função arg)
EDIT 3 : 76 bytes Agradecimentos a anatolyg por apontar o óbvio (nomes de parâmetros detalhados removidos argc / argv)
EDIT 4 : 74 bytes Graças a Yay295 (char ** v, delimitador de ano alterado)
EDIT 5 : 65 bytes graças a Yay295 e matt (reutilizou a variável i, removeu a variável x, alterou while para for loop, printf atualizado para incluir atoi () read e i ++)
fonte
int argc, char
->int argc,char
?argc
porc
(ou melhor substituaint argc
por apenasint
) eargv
porv
. Substitua tambémwhile
porfor
. A última alteração requer alguma experiência em C (mas pode ser divertida, independentemente).char*v[]
->char**v
economiza 1 byte. Você pode salvar outro, delimitando seus anos com um espaço ou vírgula, em vez de uma nova linha.main(int i,char**v){for(i=0;i<121;printf("%d,",atoi(v[1])-i++));}
JavaScript,
605348 bytesEu usei uma solução recursiva.
fonte
console.log
poralert
e remover o último;
.f=x=>x>Date().split" "[3]-121&&(alert(x),f(x-1))
, substituindo as aspas por reticulares.Perl, 33 bytes
Executar com
-M5.010
ou-E
:fonte
k, 27 bytes
Saída conforme especificado
Exemplo:
Ele pode ser encurtado ainda mais, não formatando a saída e retornando apenas a lista de números inteiros:
fonte
jq, 46 caracteres
(Código de 45 caracteres + opção de linha de comando de 1 caractere)
Exemplo de execução:
Teste on-line
fonte
Vim,
3229 pressionamentos de teclaAgradecemos a @daniero por alguma ajuda para salvar algumas teclas e tornar a saída um pouco melhor.
<Enter>
é Enter<Ctrl-x>
é Ctrl+XExplicação:
Formato de saída:
Cada número está em uma linha separada, como abaixo.
fonte
<CR>
contexto Vim) depois:pu=strftime('%Y')
? Além disso, você pode pular algumas teclas pressionando usandoY
cópias a linha inteira. No total::pu=strftime('%Y')<CR>qqYp<Ctrl-x>q118@q
- 30 teclas digitadas=
registo:"=strftime('%Y')<CR>pqqYp<Ctrl-x>q118@q
- 29 teclas, e torna-se livrar da primeira linha vaziadate
utilitário::.!date +\%Y<CR>qqYp<C-x>q118@q