El reto
Imprima una lista de años que comienza con el año actual y termina hace 120 años. El año de nacimiento de cada humano vivo se incluiría en esta lista.
Detalles
La lista debe estar en orden descendente.
Se permiten todas las funciones integradas para manipular matrices y / o listas.
El código más corto en bytes gana.
Cuando se ejecute este año, la salida sería
2016, 2015, ..., 1897, 1896
Cuando se ejecute el próximo año, la producción sería
2017, 2016, ..., 1898, 1897
Etc.
Actualizar
- Algunos han preguntado sobre el formato de la lista. Como la mayoría ha adivinado, no importa. Inserte cualquier separador entre los números. Intuitivamente, la mayoría inserta una coma o espacio o ambos, nueva línea o salida de una matriz.
- Cuasi superhumanos como Jeanne Calment son una excepción a la regla establecida en mi pregunta.
y
- 120 ay
" o "imprimir todos los años de nacimiento de personas vivas"? Porque si alguien nacido en 1896 está vivo hoy, eso no significa que todavía haya personas de 1898 alrededor.Respuestas:
Pyke, 6 bytes
Pruébalo aquí!
(Después
w
, el punto de código para 153 está presente pero no se puede imprimir)fuente
w
realidad, tiene un byte no imprimible que lo convierte en 121Pyth,
1198 bytesFunciona mapeando el rango
[0...120]
y restando cada número del año actual. El rango se construye implícitamente usando121
como argumento del mapa. Para evitar un espacio en blanco de separación entre.d3
y121
obtenemos este número convirtiéndoloy
en su punto de código.¡Gracias a @FryAmTheEggman por proponer este enfoque!
Pruébalo aquí!
Antigua solución de 9 bytes:
Pruébalo aquí!
Construye el rango
[1...<current year>]
y solo toma los últimos 121 elementos del mismo.fuente
-L...
Guarda algunos bytes.-L.d3C\y
debería funcionar para 8.R, 34 bytes
Ver aquí en un intérprete en línea.
Editar Podría reducirse a 33 bytes mediante el uso
substr
.pero técnicamente esta solución solo funcionará hasta el 9999-12-31.
fuente
:
operador ...AngularJS + Lodash , 274 bytes
Salida
fuente
BASH + coreutils,
3533 bytesfuente
date +"%Y"
endate +%Y
x=`date +%Y`;seq $x -1 $[x-120]
oseq $[x=`date +%Y`] -1 $[x-120]
funciona igual de bien.jot
en LinuxCJam,
141211 bytesAhorró 2 bytes gracias a Sp3000 y 1 byte gracias a Martin Ender
Pruébalo en línea!
Explicación
fuente
HP50g RPL, 97 bytes
Sin golf:
Mostrando una lista de 2016 hasta 1896:
fuente
05AB1E ,
87 bytesCódigo:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea! .
fuente
PowerShell,
2624 bytes@TimmyD versión mejorada:
Fue:
donde
date
correGet-Date
fuente
((date).year..0)[0..120]
:; por desgracia no es más corto.Dyalog APL ,
1110 bytes120↑
tomar 120 elementos⌽
del reverso⍳
índices hasta⊃
el primer elemento de⎕TS
Marca de tiempo en el formato [AAAA, M, D, h, m, s, t]TryAPL en línea!
Versión antigua:
⊃⎕TS
primer elemento de [AAAA, M, D, h, m, s, t]-
menos⍳120
[0, 1, 2, ..., 118, 119]Requiere
⎕IO←0
, que es el predeterminado en muchos sistemas.TryAPL en línea!
fuente
Vitsy + * sh
+ JavaScript,33262118 bytesVitsy no tiene recuperación de fecha / hora nativa, así que tuve que usar shell y evaluar para este.
¡Gracias a @Caleb por ayudarme a cortar otros 3 bytes!
No puedes probar este en línea, porque usa tanto shell como eval.
La salida es como códigos de caracteres.
fuente
date +%Y
funciona bienLenguaje Mathematica / Wolfram, 28 bytes
fuente
-Range@121+1
guarda un byte sobre la lista basada en cero. Y#&@@
un byte terminado[[1]]
. Dicho esto, a menos que se indique lo contrario en el desafío, todas las presentaciones deben ser funciones o programas completos, y este código es simplemente un fragmento / expresión. La solución más corta sería convertirla en una función sin nombre agregando&
.#&@@Date[]-#&/@0~Range~120&
le ahorrará dos bytes, pero luego convertirlo en una función requiere agregar&
al final (que creo que el suyo necesita de todos modos), por lo que -1 byte en total.R,
4739 bytesSi solo alguien inventara una implementación UTF-8 de R con funciones del sistema abreviadas convenientemente utilizadas con frecuencia ...
UPD: (!) Afeitado 7 bytes debido a plannapus , quienes sugirieron subrtacting un
0:120
vector en lugar de contar a partira
de(a-120)
y 1 byte Grâce à user5957401 , que se dio cuenta de quedouble
iba a funcionar, así comonumeric
. Versión antigua:fuente
seq(a<-...,a-120)
solo puede empeorar la situación.as.double
lugar deas.numeric
le ahorrará un byte. Del mismo modo, si en lugar de formatear una fecha, trata la respuesta de la fecha como una cadena para extraer y usarsubstr(Sys.Date(),1,4)
, guarda otro byteMATL , 10 bytes
Pruébalo en línea!
fuente
05AB1E, 9 bytes
121FžgN-=
Probar en línea
fuente
php,
73 66 5842 bytesSalida:
Si no necesitamos separarnos
,
, entonces58 5741 bytes:Gracias a insertusernamehere por guardar 16 bytes
fuente
,
, mira muchas de las otras respuestas.<?php
etiqueta, ya que permitimos ejecutar-r
de forma gratuita<?=implode(', ',range($j=date(Y),$j-120));
Python 2,
64 6254 bytes@KarlKastor gracias por 8 bytes!
fuente
time.gmtime().tm_year
es 3 bytes más cortotime.gmtime()[0]
incluso más cortoPostgreSQL, 57 bytes
¿Quién necesita un
FROM
:-). Probablemente no debería funcionar, pero lo hace, pruébalo en sqlfiddlefuente
Bash en OS X, 23
Esto también funcionará en Linux si tiene BSD
jot
instalado (psudo apt-get install athena-jot
. Ej .fuente
Python 2, 62 bytes
Y a 64 bytes:
fuente
Oracle SQL 11.2, 111 bytes
fuente
Procesamiento,
514241 bytesSin golf
El procesamiento es solo un contenedor para Java si no lo sabía, y elimina la mayor parte de la repetitiva, por lo que la solución obvia también es muy corta en comparación con una versión de Java. También abre una ventana para dibujar gráficos, pero tener eso no parece descalificarme :)
fuente
for(int i=0;i<121;)print(year()-i+++" ");
MATLAB, 18 bytes
Suponiendo que el formato de salida no importa (aparte del orden descendente), el siguiente programa imprime los últimos 121 años a partir del actual.
Requiere la versión MATLAB r2014a o superior. Las versiones anteriores no incluían la
year
función.fuente
JavaScript,
55525049 bytes+9 bytes a
alert
los datos (no es necesario si ejecuta esto en una consola).-4 bytes si el delimitador no es necesario.
fuente
[]
s parecen ser innecesarios.for
lugar dewhile
en estofor(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d
:!C,
8785767465 bytesSin golf:
Mi primer código de golf: cualquier indicador sería bien recibido. Sería bueno si pudiera cortar la basura argc / argv, pero no estoy de que experto programador C. Mejoras bienvenidas.
EDITAR : El año actual se obtiene de la línea de comando, específicamente por un grupo de pájaros bebedores automatizados y bien entrenados.
EDIT 2 : 85 bytes Gracias a Easterly Irk (espacios eliminados alrededor de los parámetros de la función arg)
EDIT 3 : 76 bytes Gracias a anatolyg por señalar lo obvio (se eliminaron los nombres detallados de argumentos argc / argv)
EDIT 4 : 74 bytes Gracias a Yay295 (char ** v, delimitador de año cambiado)
EDIT 5 : 65 bytes gracias a Yay295 y matt (reutilizó la variable i, eliminó la variable x, cambió mientras que para bucle, actualizó printf para incluir atoi () read e i ++)
fuente
int argc, char
->int argc,char
?argc
porc
(o mejor reemplazarint argc
por soloint
) yargv
porv
. También reemplazarwhile
porfor
. El último cambio requiere algo de experiencia en C (pero puede ser divertido independientemente).char*v[]
->char**v
guarda 1 byte. Puede guardar otro delimitando sus años con un espacio o una coma en lugar de una nueva línea.main(int i,char**v){for(i=0;i<121;printf("%d,",atoi(v[1])-i++));}
JavaScript,
605348 BytesUsé una solución recursiva.
fuente
console.log
conalert
y eliminar el último;
.f=x=>x>Date().split" "[3]-121&&(alert(x),f(x-1))
, reemplazando las comillas con comillas inversas.Perl, 33 bytes
Ejecutar con
-M5.010
o-E
:fuente
k, 27 bytes
Salida como se especifica
Ejemplo:
Se puede acortar más no formateando la salida y simplemente devolviendo la lista de enteros:
fuente
jq, 46 caracteres
(Código de 45 caracteres + opción de línea de comando de 1 carácter)
Ejecución de muestra:
Prueba en línea
fuente
Vim,
3229 pulsaciones de teclasGracias a @daniero por su ayuda para guardar algunas teclas y hacer que la salida sea un poco más ordenada.
<Enter>
es Enter<Ctrl-x>
es Ctrl+XExplicación:
Formato de salida:
Cada número está en una línea separada como a continuación.
fuente
<CR>
en el contexto de Vim) después:pu=strftime('%Y')
? Además, puede omitir algunas pulsaciones de teclas utilizandoY
con copias toda la línea. En total::pu=strftime('%Y')<CR>qqYp<Ctrl-x>q118@q
- 30 pulsaciones de teclas=
registro:"=strftime('%Y')<CR>pqqYp<Ctrl-x>q118@q
- 29 pulsaciones de teclas, y se deshace de la primera línea vacíadate
utilidad::.!date +\%Y<CR>qqYp<C-x>q118@q