Соревнование
Выведите список лет, который начинается с текущего года и заканчивается 120 лет назад. Год рождения каждого живого человека будет включен в этот список.
Детали
Список должен быть в порядке убывания.
Разрешены все встроенные функции для манипулирования массивами и / или списками.
Самый короткий код в байтах побеждает.
При запуске в этом году результат будет
2016, 2015, ..., 1897, 1896
При запуске в следующем году результат будет
2017, 2016, ..., 1898, 1897
И т.п.
Обновить
- Некоторые спрашивали о формате списка. Как многие уже догадались, это не имеет значения. Вставьте любой разделитель между числами. Интуитивно интуитивно большинство вставляет запятую или пробел или оба, перевод строки или вывод массива.
- Квази сверхчеловеки, такие как Жанна Калмент, являются исключением из правила, изложенного в моем вопросе.
y
- 120 доy
» или «напечатать все годы рождения живых людей»? Потому что если кто-то, родившийся в 1896 году, жив сегодня, это не значит, что в 1898 году еще есть люди.Ответы:
Пайк, 6 байт
Попробуй это здесь!
(После
w
этого кодовая точка для 153 присутствует, но ее нельзя распечатать)источник
w
На самом деле имеет нецензурные байты после этого , что делает его 121Pyth,
1198 байтРаботает путем отображения диапазона
[0...120]
и вычитания каждого числа из текущего года. Диапазон строится неявно с помощью121
аргумента карты. Чтобы избежать разделяющий пробел между.d3
и121
мы получаем это число путем преобразованияy
в это элемент кода.Спасибо @FryAmTheEggman за этот подход!
Попробуй это здесь!
Старое 9-байтовое решение:
Попробуй это здесь!
Строит диапазон
[1...<current year>]
и берет только последние 121 элемент.источник
-L...
сохраняет несколько байтов.-L.d3C\y
должно работать на 8.R, 34 байта
Смотрите здесь на онлайн переводчик.
Изменить Может быть уменьшен до 33 байтов с помощью
substr
.но технически это решение будет работать только до 9999-12-31.
источник
:
оператора ...AngularJS + Lodash , 274 байта
Выход
источник
BASH + coreutils,
3533 байтаисточник
date +"%Y"
intodate +%Y
x=`date +%Y`;seq $x -1 $[x-120]
илиseq $[x=`date +%Y`] -1 $[x-120]
работает так же.jot
на LinuxCJam,
141211 байтовСохранено 2 байта благодаря Sp3000 и 1 байт благодаря Мартину Эндеру
Попробуйте онлайн!
объяснение
источник
HP50g RPL, 97 байт
Ungolfed:
Отображение списка 2016 года до 1896 года:
источник
05AB1E ,
87 байтКод:
Объяснение:
Использует кодировку CP-1252 . Попробуйте онлайн! ,
источник
PowerShell,
2624 байта@TimmyD улучшенная версия:
Был:
куда
date
бежитGet-Date
источник
((date).year..0)[0..120]
:; увы это не короче.Дьялог АПЛ ,
1110 байт120↑
взять 120 элементов⌽
из обращенного⍳
индексы до⊃
первый элемент⎕TS
Отметка времени в формате [ГГГГ, М, Д, ч, м, с, т]Попробуй APL онлайн!
Старая версия:
⊃⎕TS
первый элемент [ГГГГ, М, Д, ч, м, с, т]-
минус⍳120
[0, 1, 2, ..., 118, 119]требует
⎕IO←0
, что по умолчанию во многих системах.Попробуй APL онлайн!
источник
Vitsy + * sh
+ JavaScript,33262118 байтУ Витси нет собственного времени / даты, поэтому мне пришлось использовать shell и eval для этого.
Спасибо @Caleb за помощь в удалении еще 3 байтов!
Вы не можете попробовать это онлайн, потому что он использует и оболочку И eval.
Вывод в виде кодов символов.
источник
date +%Y
работает просто отлично.Mathematica / Wolfram Language, 28 байтов
источник
-Range@121+1
сохраняет байт в списке с нулями. И#&@@
байт закончился[[1]]
. Тем не менее, если в заявке не указано иное, все представления должны быть функциями или полными программами, а этот код является просто фрагментом / выражением. Самое короткое исправление - добавление функции без имени&
.#&@@Date[]-#&/@0~Range~120&
сэкономит вам два байта, но затем превращение в функцию требует добавления&
конца (что, я думаю, вам в любом случае нужно), так что всего -1 байт.R,
4739 байтЕсли бы только кто-то изобрел реализацию R в UTF-8 с удобно сокращенными часто используемыми системными функциями ...
UPD: сбрил 7 (!) Байтов благодаря plannapus , который предложил подрубить
0:120
вектор вместо подсчета отa
до(a-120)
и 1 байт grâce user5957401 , который заметил, что этоdouble
будет работать так же хорошоnumeric
. Старая версия:источник
seq(a<-...,a-120)
может только ухудшить ситуацию.as.double
вместоas.numeric
вас сэкономит байт. Точно так же, если вместо форматирования даты вы обрабатываете ответ даты как строку, из которойsubstr(Sys.Date(),1,4)
MATL , 10 байт
Попробуйте онлайн!
источник
05AB1E, 9 байтов
121FžgN-=
Попробуй онлайн
источник
php
73 66 5842 байтаВыход:
Если нам не нужно разделять
,
, то58 5741 байт:Спасибо insertusername здесь за сохранение 16 байт
источник
,
, посмотрите на многие другие ответы.<?php
тег, так как мы разрешаем работать с ним-r
бесплатно<?=implode(', ',range($j=date(Y),$j-120));
Python 2,
64 6254 байта@KarlKastor спасибо за 8 байтов!
источник
time.gmtime().tm_year
на 3 байта корочеtime.gmtime()[0]
еще корочеPostgreSQL, 57 байт
Кому нужен
FROM
:-). Вероятно, не должно работать, но это так, попробуйте в sqlfiddleисточник
Bash на OS X, 23
Это также будет работать на Linux , если у вас есть BSD
jot
установлены (напримерsudo apt-get install athena-jot
.источник
Python 2, 62 байта
И в 64 байтах:
источник
Oracle SQL 11.2, 111 байт
источник
Обработка,
514241 байтUngolfed
Обработка - это всего лишь оболочка для Java, если вы не знали, и она забирает большую часть шаблонов, поэтому очевидное решение также очень короткое по сравнению с версией Java. Также открывается окно для рисования графики, но наличие этого, кажется, не дисквалифицирует меня :)
источник
for(int i=0;i<121;)print(year()-i+++" ");
MATLAB, 18 байт
Предполагая, что выходной формат не имеет значения (кроме в порядке убывания формы), следующая программа печатает последние 121 год, начиная с текущего.
Требуется версия MATLAB r2014a или выше. Более ранние версии не включали
year
функцию.источник
JavaScript,
55525049 байт+9 байт к
alert
данным (не обязательно, если вы запускаете это в консоли).-4 байта, если разделитель не нужен.
источник
[]
кажутся ненужными.for
вместоwhile
этогоfor(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d
:!C
8785767465 байтUngolfed:
Мой первый кодовый гольф - Любые указатели были бы хорошо приняты. Было бы неплохо, если бы я мог вырезать мусор argc / argv, но я не такой квалифицированный программист С. Улучшения приветствуются.
РЕДАКТИРОВАТЬ : Текущий год получен из командной строки - в частности, группой автоматизированных, хорошо обученных пьющих птиц.
РЕДАКТИРОВАТЬ 2 : 85 байт, благодаря Easterly Irk (убраны пробелы вокруг параметров функции arg)
РЕДАКТИРОВАТЬ 3 : 76 байт. Спасибо Анатолигу за то, что он указал на очевидные (удаленные подробные названия параметров argc / argv)
РЕДАКТИРОВАТЬ 4 : 74 байта благодаря Yay295 (символ ** v, измененный разделитель года)
РЕДАКТИРОВАТЬ 5 : 65 байт благодаря Yay295 и matt (повторно использовал переменную i, удалил переменную x, изменил время цикла for, обновил printf, включив чтение atoi () и i ++)
источник
int argc, char
->int argc,char
?argc
наc
(или лучше заменитьint argc
простоint
) иargv
наv
. Также заменитьwhile
наfor
. Последнее изменение требует некоторого опыта в Си (но может быть забавным независимо).char*v[]
->char**v
сохраняет 1 байт. Вы можете сохранить другой, разделив ваши годы пробелом или запятой вместо новой строки.main(int i,char**v){for(i=0;i<121;printf("%d,",atoi(v[1])-i++));}
JavaScript,
605348 байтЯ использовал рекурсивное решение.
источник
console.log
сalert
, и удалить последний;
.f=x=>x>Date().split" "[3]-121&&(alert(x),f(x-1))
, заменив кавычки на обратные.Perl, 33 байта
Запустите с
-M5.010
или-E
:источник
к, 27 байт
Вывод как указано
Пример:
Это может быть сокращено больше, не форматируя вывод и просто возвращая список целых чисел:
источник
JQ, 46 символов
(45 символов кода + 1 символ опции командной строки)
Образец прогона:
Он-лайн тест
источник
Vim,
3229 нажатий клавишСпасибо @daniero за некоторую помощь в сохранении некоторых нажатий клавиш и немного более аккуратном выводе.
<Enter>
является Enter<Ctrl-x>
это Ctrl+XОбъяснение:
Выходной формат:
Каждый номер находится на отдельной строке, как показано ниже.
источник
<CR>
в контексте Vim) после:pu=strftime('%Y')
? Кроме того, вы можете пропустить некоторые нажатия клавиш, используяY
с копиями всю строку. Всего::pu=strftime('%Y')<CR>qqYp<Ctrl-x>q118@q
- 30 нажатий клавиш=
реестра:"=strftime('%Y')<CR>pqqYp<Ctrl-x>q118@q
- 29 нажатий клавиш, и это избавит от первой пустой строкиdate
утилиты::.!date +\%Y<CR>qqYp<C-x>q118@q