Le défi
Affiche une liste d'années commençant par l'année en cours et se terminant il y a 120 ans. L'année de naissance de chaque être humain vivant serait incluse dans cette liste.
Détails
La liste devrait être dans l'ordre décroissant.
Toute fonction intégrée permettant de manipuler des tableaux et / ou des listes est autorisée.
Le code le plus court en octets gagne.
Quand exécuté cette année, la sortie serait
2016, 2015, ..., 1897, 1896
Lorsqu'il sera exécuté l'année prochaine, le résultat sera
2017, 2016, ..., 1898, 1897
Etc.
Mise à jour
- Certains ont posé des questions sur le format de la liste. Comme la plupart l'ont deviné, cela n'a pas d'importance. Insérez n'importe quel séparateur entre les nombres. Intuitivement, la plupart ont inséré une virgule ou un espace ou les deux, une nouvelle ligne ou un tableau.
- Les quasi-surhumains comme Jeanne Calment sont une exception à la règle énoncée dans ma question.
y
- 120 ày
" ou "Imprimez toutes les années de naissance des personnes vivantes"? Parce que si une personne née en 1896 est encore en vie, cela ne veut pas dire qu'il y a encore des gens à partir de 1898.Réponses:
Pyke, 6 octets
Essayez-le ici!
(Après
w
, le point de code pour 153 est présent mais il n'est pas imprimable)la source
w
en fait un octet non imprimable qui rend 121Pyth,
1198 octetsFonctionne en mappant sur la plage
[0...120]
et en soustrayant chaque nombre de l'année en cours. La plage est construite de manière implicite en utilisant121
comme argument map. Pour éviter un espace blanc séparant entre.d3
et121
nous obtenons ce nombre en le convertissanty
en son code.Merci à @FryAmTheEggman d'avoir proposé cette approche!
Essayez-le ici!
Ancienne solution à 9 octets:
Essayez-le ici!
Construit la plage
[1...<current year>]
et n'en prend que les 121 derniers éléments.la source
-L...
enregistre quelques octets.-L.d3C\y
devrait fonctionner pendant 8R, 34 octets
Voir ici sur un interprète en ligne.
Modifier Peut être réduit à 33 octets en utilisant
substr
.mais techniquement, cette solution ne fonctionnera que jusqu'au 9999-12-31.
la source
:
opérateur ...AngularJS + Lodash , 274 octets
Sortie
la source
BASH + coreutils,
3533 octetsla source
date +"%Y"
endate +%Y
x=`date +%Y`;seq $x -1 $[x-120]
ouseq $[x=`date +%Y`] -1 $[x-120]
fonctionne aussi bien.jot
sur LinuxCJam,
141211 octets2 octets sauvés grâce à Sp3000 et 1 octet grâce à Martin Ender
Essayez-le en ligne!
Explication
la source
HP50g RPL, 97 octets
Ungolfed:
Liste des années 2016 à 1896:
la source
05AB1E ,
87 octetsCode:
Explication:
Utilise le codage CP-1252 . Essayez-le en ligne! .
la source
PowerShell,
26 à24 octets@TimmyD version améliorée:
Était:
où
date
courtGet-Date
la source
((date).year..0)[0..120]
; hélas ce n'est pas plus court.Dyalog APL ,
11 à10 octets120↑
prendre 120 éléments⌽
de l'inverse⍳
indices jusqu'à⊃
le premier élément de⎕TS
Horodatage au format [AAAA, M, D, h, m, s, t]TryAPL en ligne!
Ancienne version:
⊃⎕TS
premier élément de [AAAA, M, D, h, m, s, t]-
moins⍳120
[0, 1, 2, ..., 118, 119]Requiert
⎕IO←0
, qui est la valeur par défaut sur de nombreux systèmes.TryAPL en ligne!
la source
Vitsy + * sh
+ JavaScript,33262118 octetsVitsy n'a pas de récupération native de l'heure et de la date, j'ai donc dû utiliser shell et eval pour celui-ci.
Merci à @Caleb de m'avoir aidé à supprimer 3 octets de plus!
Vous ne pouvez pas essayer celui-ci en ligne, car il utilise à la fois shell ET eval.
La sortie est sous forme de codes de caractères.
la source
date +%Y
fonctionne très bien.Mathematica / Wolfram Language, 28 octets
la source
-Range@121+1
enregistre un octet sur la liste de base zéro. Et#&@@
un octet terminé[[1]]
. Cela dit, sauf indication contraire dans le défi, toutes les soumissions doivent être des fonctions ou des programmes complets, et ce code est simplement un extrait / une expression. Le correctif le plus court serait d'en faire une fonction non nommée en ajoutant&
.#&@@Date[]-#&/@0~Range~120&
vous épargnera deux octets, mais pour en faire une fonction, il faudra ajouter le&
à la fin (ce dont le vôtre semble avoir besoin de toute façon), donc -1 octet au total.R,
4739 octetsSi seulement quelqu'un inventait une implémentation de R de UTF-8 avec des fonctions système fréquemment utilisées, abrégées de manière commode ...
UPD: (!) Rasé 7 octets en raison de plannapus , qui suggéraient subrtacting un
0:120
vecteur plutôt que de compter à partira
de(a-120)
et 1 octet grace à user5957401 , qui a remarqué quedouble
cela fonctionnerait aussi bien quenumeric
. Ancienne version:la source
seq(a<-...,a-120)
ne peut qu'aggraver la situation.as.double
place de vousas.numeric
fera économiser un octet. De même, si au lieu de formater une date, vous traitez la réponse de date comme une chaîne à utiliser et utilisezsubstr(Sys.Date(),1,4)
un autre octet enregistréMATL , 10 octets
Essayez-le en ligne!
la source
05AB1E, 9 octets
121FžgN-=
Essayer en ligne
la source
php,
73 66 5842 octetsSortie:
Si nous n'avons pas besoin de séparer avec
,
, alors58 5741 octets:Merci à insertusernamehere pour la sauvegarde de 16 octets
la source
,
, regardez beaucoup d'autres réponses.<?php
balise puisque nous autorisons la course à pied-r
gratuitement<?=implode(', ',range($j=date(Y),$j-120));
Python 2,
64 6254 octets@KarlKastor merci pour 8 octets!
la source
time.gmtime().tm_year
est 3 octets plus courttime.gmtime()[0]
encore plus courtPostgreSQL, 57 octets
Qui a besoin d'un
FROM
:-). Cela ne devrait probablement pas marcher, mais ça marche, essayez-le à sqlfiddlela source
Bash sur OS X, 23
Cela fonctionnera également sous Linux si BSD est
jot
installé (par exemplesudo apt-get install athena-jot
.la source
Python 2, 62 octets
Et à 64 octets:
la source
Oracle SQL 11.2, 111 octets
la source
Traitement,
514241 octetsUngolfed
Le traitement est juste un wrapper pour Java si vous ne le saviez pas, et enlève la plupart des choses, donc la solution évidente est également très courte comparée à la version Java. Ouvre également une fenêtre pour dessiner des graphiques, mais cela ne semble pas me disqualifier :)
la source
for(int i=0;i<121;)print(year()-i+++" ");
MATLAB, 18 octets
En supposant que le format de sortie n’importe pas (ordre décroissant du formulaire), le programme suivant imprime les 121 dernières années en commençant par celui en cours.
Il nécessite MATLAB version r2014a ou supérieure. Les versions précédentes n'incluaient pas la
year
fonction.la source
JavaScript,
55525049 octets+9 octets aux
alert
données (non nécessaire si vous l'exécutez dans une console).-4 octets si le délimiteur n'est pas nécessaire.
la source
[]
s semblent être inutiles.for
place dewhile
cecifor(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d
:!C,
8785767465 octetsUngolfed:
Mon premier code de golf - Tous les pointeurs seraient bien reçus. Ce serait bien si je pouvais découper la argc / argv indésirable, mais je ne suis pas que d' un habile programmeur C. Les améliorations sont les bienvenues.
EDIT : L’année en cours est obtenue à partir de la ligne de commande - en particulier par un groupe de voleurs à boire automatisés et bien entraînés.
EDIT 2 : 85 octets grâce à Easterly Irk (espaces supprimés autour des paramètres de la fonction arg)
EDIT 3 : 76 bytes Merci à anatolyg d’avoir signalé l’évident (noms de paramètres argc / argv verbose supprimés)
EDIT 4 : 74 octets Merci à Yay295 (caractère ** v, délimiteur changé d’année)
EDIT 5 : 65 octets avec Yay295 et matt
la source
int argc, char
->int argc,char
?argc
parc
(ou plutôt remplacerint argc
par justeint
) etargv
parv
. Également remplacerwhile
parfor
. Ce dernier changement nécessite une certaine expérience en C (mais peut être amusant malgré tout).char*v[]
->char**v
enregistre 1 octet. Vous pouvez en sauver une autre en délimitant vos années avec un espace ou une virgule au lieu d'une nouvelle ligne.main(int i,char**v){for(i=0;i<121;printf("%d,",atoi(v[1])-i++));}
JavaScript,
605348 octetsJ'ai utilisé une solution récursive.
la source
console.log
paralert
et supprimer le dernier;
.f=x=>x>Date().split" "[3]-121&&(alert(x),f(x-1))
, en remplaçant les guillemets par des backticks.Perl, 33 octets
Courir avec
-M5.010
ou-E
:la source
k, 27 octets
Sortie comme spécifié
Exemple:
Il peut être raccourci davantage en ne formatant pas la sortie et en renvoyant simplement la liste des entiers:
la source
jq, 46 caractères
(Code de 45 caractères + option de ligne de commande de 1 caractère)
Échantillon échantillon:
Test en ligne
la source
Vim,
3229 frappesMerci à @daniero pour son aide sur la sauvegarde des frappes au clavier et l’ optimisation de la sortie.
<Enter>
est Enter<Ctrl-x>
est Ctrl+XExplication:
Format de sortie:
Chaque numéro est sur une ligne séparée, comme ci-dessous.
la source
<CR>
dans le contexte Vim) après:pu=strftime('%Y')
? En outre, vous pouvez ignorer certaines frappes au clavier en utilisantY
avec des copies toute la ligne. Au total::pu=strftime('%Y')<CR>qqYp<Ctrl-x>q118@q
- 30 frappes=
registre:"=strftime('%Y')<CR>pqqYp<Ctrl-x>q118@q
- 29 frappes de touche et la première ligne vide est suppriméedate
utilitaire::.!date +\%Y<CR>qqYp<C-x>q118@q