Wyzwanie
Wydrukuj listę lat, które zaczynają się od bieżącego roku i kończą 120 lat temu. Rok urodzenia każdego żyjącego człowieka zostanie włączony do tej listy.
Detale
Lista powinna być w kolejności malejącej.
Każda wbudowana funkcja do manipulowania tablicami i / lub listami jest dozwolona.
Najkrótszy kod w bajtach wygrywa.
Po uruchomieniu w tym roku wynik byłby
2016, 2015, ..., 1897, 1896
Po uruchomieniu w przyszłym roku wynik byłby
2017, 2016, ..., 1898, 1897
Itp.
Aktualizacja
- Niektórzy pytali o format listy. Jak większość zgadła, to nie ma znaczenia. Wstaw dowolny separator między liczbami. Intuicyjnie większość wstawia przecinek lub spację albo oba, znak nowej linii lub wypisuje tablicę.
- Quasi nadludzi tacy jak Jeanne Calment są wyjątkiem od reguły podanej w moim pytaniu.
y
- 120 doy
” lub „wydrukuj wszystkie lata narodzin żywych ludzi”? Ponieważ jeśli ktoś urodzony w 1896 roku żyje dzisiaj, nie oznacza to, że są jeszcze ludzie z 1898 roku.Odpowiedzi:
Pyke, 6 bajtów
Wypróbuj tutaj!
(Po
w
tym kod współrzędnych dla 153 jest obecny, ale nie można go wydrukować)źródło
w
Faktycznie ma bajt którym nie można drukować potem sprawia, że 121Pyth,
1198 bajtówDziała poprzez mapowanie zakresu
[0...120]
i odejmowanie każdej liczby od bieżącego roku. Zakres jest budowany niejawnie przy użyciu121
jako argumentu mapy. Aby uniknąć oddzielania białych znaków od.d3
i121
otrzymujemy ten numer, konwertujący
go na jego kod.Dzięki @FryAmTheEggman za wymyślenie tego podejścia!
Wypróbuj tutaj!
Stare 9-bajtowe rozwiązanie:
Wypróbuj tutaj!
Buduje zakres
[1...<current year>]
i bierze tylko ostatnie 121 elementów.źródło
-L...
oszczędza kilka bajtów.-L.d3C\y
powinien działać dla 8.R, 34 bajty
Zobacz tutaj na tłumacza online.
Edytuj Można zmniejszyć do 33 bajtów za pomocą
substr
.ale technicznie to rozwiązanie będzie działać tylko do 9999-12-31.
źródło
:
operatora ...AngularJS + Lodash , 274 bajty
Wydajność
źródło
BASH + coreutils,
3533 bajtówźródło
date +"%Y"
nadate +%Y
x=`date +%Y`;seq $x -1 $[x-120]
lub teżseq $[x=`date +%Y`] -1 $[x-120]
działa.jot
w systemie LinuxCJam,
141211 bajtówZaoszczędzono 2 bajty dzięki Sp3000 i 1 bajt dzięki Martinowi Enderowi
Wypróbuj online!
Wyjaśnienie
źródło
HP50g RPL, 97 bajtów
Nie golfowany:
Pokazuje listę 2016 aż do 1896:
źródło
05AB1E ,
87 bajtówKod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online! .
źródło
PowerShell,
2624 bajtów@TimmyD ulepszona wersja:
Był:
gdzie
date
działaGet-Date
źródło
((date).year..0)[0..120]
:; niestety nie jest krótszy.Dyalog APL ,
1110 bajtów120↑
weź 120 elementów⌽
odwróconego⍳
wskaźniki do⊃
pierwszy element⎕TS
Znacznik czasu w formacie [RRRR, M, D, h, m, s, t]Wypróbuj APL online!
Stara wersja:
⊃⎕TS
pierwszy element [RRRR, M, D, h, m, s, t]-
minus⍳120
[0, 1, 2, ..., 118, 119]Wymaga
⎕IO←0
, co jest domyślne w wielu systemach.Wypróbuj APL online!
źródło
Vitsy + * sh
+ JavaScript,33262118 bajtówVitsy nie ma natywnego pobierania daty / godziny, więc musiałem użyć powłoki i eval do tego.
Dzięki @Caleb za pomoc w ścinaniu kolejnych 3 bajtów!
Nie możesz wypróbować tego online, ponieważ używa zarówno powłoki ORAZ eval.
Dane wyjściowe są w postaci kodów znaków.
źródło
date +%Y
działa dobrze.Język Mathematica / Wolfram, 28 bajtów
źródło
-Range@121+1
zapisuje bajt na liście zerowej. I#&@@
bajt skończony[[1]]
. To powiedziawszy, chyba że wyzwanie stanowi inaczej, wszystkie zgłoszenia muszą być funkcjami lub pełnymi programami, a ten kod jest jedynie fragmentem / wyrażeniem. Najkrótszą poprawką byłoby uczynienie z niej funkcji nienazwanej przez dodanie&
.#&@@Date[]-#&/@0~Range~120&
pozwoli ci zaoszczędzić dwa bajty, ale wtedy uczynienie go funkcją wymaga dodania&
na końcu (co, jak sądzę, i tak potrzebuje), więc w sumie -1 bajt.R,
4739 bajtówGdyby tylko ktoś wynalazł implementację R dla UTF-8 z wygodnie skracanymi często używanymi funkcjami systemowymi ...
UPD: zgolił 7 (!) Bajtów dzięki plannapusowi , który zasugerował podciągnięcie
0:120
wektora zamiast liczenia oda
do(a-120)
i 1 bajta grâce à user5957401 , który zauważył, żedouble
to zadziała równie dobrzenumeric
. Stara wersja:źródło
seq(a<-...,a-120)
może tylko pogorszyć sytuację.as.double
zamiastas.numeric
oszczędza bajt. Podobnie, jeśli zamiast formatować datę, traktujesz odpowiedź daty jako ciąg znaków, z którego chcesz pobrać isubstr(Sys.Date(),1,4)
zapisujesz kolejny bajtMATL , 10 bajtów
Wypróbuj online!
źródło
05AB1E, 9 bajtów
121FžgN-=
Wypróbuj online
źródło
php,
73 66 5842 bajtówWynik:
Jeśli nie musimy się rozdzielać
,
, to58 5741 bajtów:Dzięki inserttusernamehere do zapisania 16 bajtów
źródło
,
, spójrz na wiele innych odpowiedzi.<?php
tag, ponieważ zezwalamy na bieganie-r
za darmo<?=implode(', ',range($j=date(Y),$j-120));
Python 2,
64 6254 bajtów@KarlKastor dzięki za 8 bajtów!
źródło
time.gmtime().tm_year
jest o 3 bajty krótszytime.gmtime()[0]
jeszcze krótszyPostgreSQL, 57 bajtów
Kto potrzebuje
FROM
:-). Prawdopodobnie nie powinno działać, ale tak, spróbuj w sqlfiddleźródło
Bash na OS X, 23
Działa to również w systemie Linux, jeśli masz
jot
zainstalowany BSD (npsudo apt-get install athena-jot
.źródło
Python 2, 62 bajty
A przy 64 bajtach:
źródło
Oracle SQL 11.2, 111 bajtów
źródło
Przetwarzanie,
514241 bajtówBez golfa
Przetwarzanie jest tylko opakowaniem dla Javy, jeśli jeszcze tego nie wiesz, i zabiera większość podstawki, więc oczywiste rozwiązanie jest również bardzo krótkie w porównaniu do wersji Java. Otwiera także okno do rysowania grafiki, ale nie wydaje mi się, że dyskwalifikuje mnie :)
źródło
for(int i=0;i<121;)print(year()-i+++" ");
MATLAB, 18 bajtów
Zakładając, że format wyjściowy nie ma znaczenia (poza kolejnością malejącą), następujący program drukuje ostatnie 121 lat, poczynając od bieżącego.
Wymaga MATLAB w wersji r2014a lub wyższej. Wcześniejsze wersje nie zawierały tej
year
funkcji.źródło
JavaScript,
55525049 bajtów+9 bajtów do
alert
danych (nie jest to konieczne, jeśli uruchomisz to w konsoli).-4 bajty, jeśli separator nie jest konieczny.
źródło
[]
s wydają się być zbędne.for
zamiastwhile
tegofor(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d
:!C,
8785767465 bajtówNie golfowany:
Mój pierwszy kod golfowy - Wszelkie wskazówki zostaną dobrze przyjęte. Byłoby miło, gdybym mógł wyciąć śmieci argc / argv, ale nie jestem tak wykwalifikowanym programistą C. Ulepszenia mile widziane.
EDYCJA : Bieżący rok jest uzyskiwany z wiersza poleceń - szczególnie przez grupę zautomatyzowanych, dobrze wyszkolonych ptaków pijących.
EDYCJA 2 : 85 bajtów Dzięki Easterly Irk (usunięto spacje wokół parametrów funkcji arg)
EDYCJA 3 : 76 bajtów Dzięki anatoligowi za wskazanie oczywistych (usunięte pełne nazwy argc / argv param)
EDYCJA 4 : 74 bajty Dzięki Yay295 (char ** v, zmieniono separator roku)
EDYCJA 5 : 65 bajtów dzięki Yay295 i mattowi (ponownie użyłem zmiennej i, usunąłem zmienną x, zmieniono while for for loop, zaktualizowano printf, aby zawierał odczyt atoi () i i ++)
źródło
int argc, char
->int argc,char
?argc
nac
(lub lepiej zastąpint argc
na justint
) iargv
przezv
. Zastąp równieżwhile
przezfor
. Ta ostatnia zmiana wymaga nieco doświadczenia w C (ale może być świetną zabawą).char*v[]
->char**v
zapisuje 1 bajt. Możesz uratować inną, ograniczając swoje lata spacją lub przecinkiem zamiast nowej linii.main(int i,char**v){for(i=0;i<121;printf("%d,",atoi(v[1])-i++));}
JavaScript,
605348 bajtówUżyłem rozwiązania rekurencyjnego.
źródło
console.log
zalert
i usunąć ostatni;
.f=x=>x>Date().split" "[3]-121&&(alert(x),f(x-1))
, zastępując cudzysłowy odwrotnymi znakami.Perl, 33 bajty
Uruchom z
-M5.010
lub-E
:źródło
k, 27 bajtów
Dane wyjściowe zgodnie z opisem
Przykład:
Można go bardziej skrócić, nie formatując danych wyjściowych i po prostu zwracając listę liczb całkowitych:
źródło
jq, 46 znaków
(Kod 45 znaków + opcja wiersza poleceń 1 znak)
Przykładowy przebieg:
Test online
źródło
Vim,
3229 klawiszyPodziękowania dla @daniero za pomoc w zapisywaniu niektórych naciśnięć klawiszy i poprawianiu wydajności.
<Enter>
jest Enter<Ctrl-x>
jest Ctrl+XWyjaśnienie:
Format wyjściowy:
Każda liczba znajduje się w osobnej linii, jak poniżej.
źródło
<CR>
w kontekście Vima):pu=strftime('%Y')
? Możesz także pominąć niektóre naciśnięcia klawiszy, używającY
z kopiami całej linii. Łącznie::pu=strftime('%Y')<CR>qqYp<Ctrl-x>q118@q
- 30 naciśnięć klawiszy=
rejestru:"=strftime('%Y')<CR>pqqYp<Ctrl-x>q118@q
- 29 naciśnięć klawiszy i pozbywa się pierwszej pustej liniidate
narzędzia::.!date +\%Y<CR>qqYp<C-x>q118@q