जीवित मनुष्यों के संभावित जन्म के वर्षों की सूची


40

चुनौती

उन वर्षों की सूची तैयार करें जो वर्तमान वर्ष से शुरू होती हैं और 120 साल पहले समाप्त होती हैं। प्रत्येक जीवित मानव का जन्म वर्ष इस सूची में शामिल किया जाएगा।

विवरण

सूची अवरोही क्रम में होनी चाहिए।

प्रत्येक अंतर्निहित फ़ंक्शन को सरणियों और / या सूचियों में हेरफेर करने की अनुमति है।

बाइट्स में सबसे छोटा कोड जीतता है।

इस साल जब उत्पादन होगा

2016, 2015, ..., 1897, 1896

जब अगले साल उत्पादन होगा

2017, 2016, ..., 1898, 1897

आदि।

अद्यतन करें

  • कुछ ने सूची के प्रारूप के बारे में पूछा है। जैसा कि अधिकांश ने अनुमान लगाया है, इससे कोई फर्क नहीं पड़ता। संख्याओं के बीच कोई विभाजक डालें। सहज रूप से सबसे अधिक एक अल्पविराम या स्थान या दोनों, नई पंक्ति या आउटपुट एक सरणी में सम्मिलित किया गया।
  • जिनी कालमेंट जैसे अर्ध महामानव मेरे प्रश्न में बताए गए नियम के अपवाद हैं।

7
मैं एक चुनौती पोस्ट करने से पहले फीडबैक प्राप्त करने के लिए सैंडबॉक्स की सिफारिश करता हूं (न केवल आपकी पहली चुनौती के लिए - हम में से ज्यादातर इसे हर चुनौती के लिए उपयोग करते हैं)।
ट्राइकोप्लाक्स

3
मुझे इस चुनौती में कुछ भी गलत नहीं दिख रहा है। एक बात जो निर्दिष्ट करने योग्य हो सकती है, वह यह है कि क्या आउटपुट हमेशा 2016 से शुरू होना चाहिए, या उस वर्ष के साथ जिसमें इसे चलाया जाता है (क्या यह अगले साल चलने पर 2017 से शुरू होगा?)। यह प्रभावित करेगा कि क्या यह एक निश्चित आउटपुट चुनौती है, या वर्तमान तिथि तक पहुंचने की आवश्यकता है।
ट्राइकोप्लाक्स

19

10
लाड, वह रास्ता बहुत जल्दी स्वीकार कर लिया गया था।
एडिसन क्रम्प

6
क्या चुनौती है: "सभी नंबरों को प्रिंट करें y- 120 से y" या "सभी जीवित लोगों के जन्म के वर्षों को प्रिंट करें"? क्योंकि अगर 1896 में पैदा हुआ कोई व्यक्ति आज जीवित है, तो इसका मतलब यह नहीं है कि 1898 के आसपास के लोग अभी भी हैं।
कॉम्पिटिशन

जवाबों:


19

Pyke, 6 बाइट्स

wC7m-

यहाँ कोशिश करो!

w     - 121
   m- - for i in range(^):
 C7   -  current_year-i

(इसके बाद w, 153 के लिए कोडपॉइंट मौजूद है लेकिन यह प्रिंट करने योग्य नहीं है)


1
वाह, यह एक त्वरित चेकमार्क था। शायद एक जेली जवाब के लिए प्रतीक्षा करें?
शाम

जब तक मैं मानता हूं कि यह एक त्वरित जाँच थी, मुझे संदेह है कि जेली इसे 5 में भी कर सकती है
ब्लू

आपके पास 121 के लिए एक चर क्यों है? सिर्फ इसलिए कि यह एक वर्ग संख्या है? लेकिन अच्छा किया!
डेनकर

3
wवास्तव में यह है कि 121 बाद में एक गंदा बाइट है
ब्लू

1
@LeakyNun यह कॉन्फ़िगर करने योग्य है, जो भी सर्वर इसके लिए चल रहा है उसके लिए डिफ़ॉल्ट है। Pyke.catbus पर, मैंने इसे
Blue

11

पायथ, 11 9 8 बाइट्स

-L.d3C\y

रेंज पर मैपिंग करके काम करता है [0...120]और चालू वर्ष से हर संख्या को घटाता है। 121नक्शा तर्क के रूप में उपयोग करके सीमा को अंतर्निहित रूप से बनाया गया है। के बीच एक अलग व्हाट्सएप से बचने के लिए .d3और 121हम yइसे कोडपॉइंट में परिवर्तित करके इस नंबर को प्राप्त करते हैं ।
इस दृष्टिकोण के साथ आने के लिए @FryAmTheEggman को धन्यवाद!

यहाँ कोशिश करो!

पुराने 9-बाइट समाधान:

_>121S.d3

यहाँ कोशिश करो!

सीमा बनाता है [1...<current year>]और केवल पिछले 121 तत्वों को लेता है।


1
आपको सूची को उलट देना चाहिए ताकि यह चालू वर्ष से शुरू हो
क्रिस्टियान वेस्टरबेक

1
-L...कुछ बाइट्स बचाता है।
जकुब

1
@ChristiaanWesterbeek उस हिस्से को याद किया, तय किया। हाजिर करने के लिए धन्यवाद!
डेन्कर

@ जाकुब ने अब एक अलग दृष्टिकोण का उपयोग किया, लेकिन इस अनुस्मारक के लिए धन्यवाद कि यह मौजूद है, अंतिम समय में पायथ का उपयोग नहीं किया!
डेनकर

1
-L.d3C\y8 के लिए काम करना चाहिए
FryAmTheEggman

9

आर, 34 बाइट्स

(format(Sys.Date(),"%Y"):0)[1:121]

एक ऑनलाइन दुभाषिया पर यहाँ देखें ।

उपयोग करके संपादन को 33 बाइट्स तक कम किया जा सकता है substr

(substr(Sys.Date(),1,4):0)[1:121]

लेकिन तकनीकी रूप से यह समाधान केवल 9999-12-31 तक काम करेगा।


3
यह कमाल का है। मुझे नहीं पता था कि यह :ऑपरेटर का उपयोग करते समय एक स्ट्रिंग को टाइप कर सकता है ...
आंद्रे कोस्टिर्का

8

AngularJS + Lodash , 274 बाइट्स

angular.module('x',[]).controller('x',['$scope',function(x){x.x=_.range(9,new Date().getFullYear()+1).slice(-121).reverse()}])
<script src=//goo.gl/M5LvGe></script><script src=//goo.gl/opljJl></script><select ng-app=x ng-controller=x multiple><option ng-repeat="x in x">{{x}}

उत्पादन

यहाँ छवि विवरण दर्ज करें


8

BASH + कोरुटिल्स, 35 33 बाइट्स

x=`date +%Y`;seq $x -1 $((x-120))

2
: आपके मामले में, उद्धरण अनावश्यक हैं: परिवर्तन date +"%Y"मेंdate +%Y
ओलिवर Dulac

1
x=`date +%Y`;seq $x -1 $[x-120]या seq $[x=`date +%Y`] -1 $[x-120]काम करता है।
डेनिस

यदि आपके पास OSX है तो 10 बाइट्स कम हैं या jotलिनक्स पर स्थापित करने के लिए तैयार हैं
डिजिटल ट्रामा


7

HP50g RPL, 97 बाइट्स

120 'S' STO DATE ->STR 6 9 SUB OBJ-> 'Y' STO {} S WHILE 0 >= REPEAT Y S - + 'S' DECR END REVLIST

Ungolfed:

120
'span' STO     @ Store the span of years to cover.
DATE           @ Get the date as number 11.082016. 
→STR           @ Convert to string "11.082016".
               @ (Number format must allow all these decimal places.)
6 9 SUB        @ "11.082016" Substring for the year.
               @       ^  ^
               @  123456789
OBJ→           @ Convert string to number.
'year' STO     @ Store as the year to start at.
{} span        @ Start empty list to collect the years.
               @ Leave loop counter on the stack.
WHILE 0 ≥      @ Loop until the counter goes negative.
REPEAT
  year span -  @ E.g. on first iteration: 2016 - 120 = 1896.
  +            @ Append the year to the list on the stack.
  'span' DECR  @ Decrement loop counter and leave on stack.
END
REVLIST        @ Put list in reverse chronological order.

2016 की सूची 1896 तक दर्शाई जा रही है:

2016 से 1896


कैलकुलेटर से चालू वर्ष प्राप्त करने के लिए संपादित उत्तर।
कालेब पॉल


6

पॉवरशेल, 26 24 बाइट्स

@TimmyD उन्नत संस्करण:

0..120|%{(date).Year-$_}

था:

($d=(date).year)..($d-120)

कहाँ dateभागता हैGet-Date


1
ब्लार्ग, पहले जवाब देना चाहिए था। यह बिल्कुल सीधा संस्करण है जो मैंने तैयार किया था। फिर काम में दखल दिया: डीए मजेदार संस्करण भी होगा ((date).year..0)[0..120]:; अफसोस यह कम नहीं है।
जॉय

1
मुझे यह दिलचस्प लगता है कि तारीख गेट-डेट के बराबर है जब तारीख वास्तव में गेट-डेट के लिए अन्य नाम नहीं है। मैंने इसे "निहित क्रिया" नियम कहा है और यह शायद ही कभी PowerShell साहित्य में प्रलेखित है।
बेवो

@Bevo यह CodeGolf के लिए उपयोगी है, लेकिन किसी अन्य उपयोग के लिए थोड़ा जोखिम भरा है। देखें: codegolf.stackexchange.com/a/778/571 और टिप्पणी श्रृंखला; इसका नाम क्लैश और बहुत स्लो होने का खतरा है।
TessellatingHeckler

6

दिल्लोग एपीएल , 11 10 बाइट्स

120↑⌽⍳⊃⎕ts

120↑ 120 तत्व लें

का उलटा

जब तक संकेत

का पहला तत्व

⎕TS प्रारूप में टाइमस्टैम्प [YYYY, M, D, h, m, s, t]

TryAPL ऑनलाइन!


पुराना संस्करण:

(⊃⎕TS)-⍳120

⊃⎕TS [YYYY, M, D, h, m, s, t] का पहला तत्व

- ऋण

⍳120 [०, १, २, ..., ११ 1, ११ ९]

आवश्यकता है ⎕IO←0, जो कई प्रणालियों पर डिफ़ॉल्ट है।

TryAPL ऑनलाइन!


6

Vitsy + * sh + जावास्क्रिप्ट , 33 26 21 18 बाइट्स

Vitsy के पास मूल समय / दिनांक पुनर्प्राप्ति नहीं है, इसलिए मुझे इस एक के लिए शेल और ईवैल का उपयोग करना पड़ा।

एक और 3 बाइट्स को दूर करने में मेरी मदद करने के लिए @ कैलेब को धन्यवाद!

'Y%+ etad',Dca*-HZ

'Y%+ etad'               Push the string 'date +"%Y"' to the stack.
          ,              Execute through shell. 
           Dca*-         Dupe n, push n - 120.
                H        Pop x, y, push range(x, y) to the stack.
                 Z       Output all stack as characters.

आप इसे ऑनलाइन आज़मा नहीं सकते, क्योंकि यह शेल और ईवैल दोनों का उपयोग करता है।

आउटपुट चरित्र कोड के रूप में है।


आपको इसमें से एक युगल बाइट्स को ट्रिम करने में सक्षम होना चाहिए क्योंकि आपको तारीख प्रारूप स्ट्रिंग के आसपास दोहरे उद्धरण चिह्नों की आवश्यकता नहीं है (क्योंकि इसमें कोई स्थान नहीं हैं); date +%Yठीक काम करता है।
कालेब

@ कालेब परफेक्ट, धन्यवाद! जेएस के रूप में अच्छी तरह से अस्तित्व के लिए की जरूरत है।
एडिसन क्रम्प

5

गणितज्ञ / वुल्फ्राम भाषा, 28 बाइट्स

Date[][[1]]-#&/@Range[0,120]

PPCG में आपका स्वागत है!
एडिसन क्रम्प

4
PPCG में आपका स्वागत है! आप यहाँ एक मानचित्र का उपयोग करने की जरूरत नहीं है क्योंकि घटाव स्वचालित रूप से सूचियों पर पिरोया जाता है। और -Range@121+1शून्य-आधारित सूची पर एक बाइट बचाता है। और #&@@एक बाइट [[1]]। कहा कि, जब तक कि चुनौती में अन्यथा न कहा गया हो, सभी प्रस्तुतियाँ कार्य या पूर्ण कार्यक्रम होनी चाहिए, और यह कोड केवल एक स्निप / अभिव्यक्ति है। सबसे छोटा निर्धारण इसे जोड़कर एक अनाम फ़ंक्शन बना देगा &
मार्टिन एंडर

@MartinEnder प्रतिक्रिया के लिए धन्यवाद! मुझे माइनस लिस्ट में सक्षम, मामूली मानसिक चूक के लिए पकड़ा जाना चाहिए था, लेकिन अन्य सुझावों की बहुत सराहना की गई!
user6014

#&@@Date[]-#&/@0~Range~120&आपको दो बाइट्स बचाएगा, लेकिन फिर इसे एक फ़ंक्शन बनाने के &लिए अंत में जोड़ने की आवश्यकता होती है (जो मुझे लगता है कि आपकी किसी भी तरह की आवश्यकता है), इसलिए कुल मिलाकर 1 बाइट।
नंबरमान

5

आर, 47 39 बाइट्स

as.double(substr(Sys.Date(),1,4))-0:120

यदि केवल किसी व्यक्ति ने आसानी से उपयोग किए जाने वाले सिस्टम फ़ंक्शंस के साथ R का एक UTF-8 कार्यान्वयन का आविष्कार किया है ...

UPD: शेव ऑफ 7 (!) बाइट्स टू प्लेनैपस , जिसने सुझाव दिया कि एक 0:120वेक्टर से सबटैक्टिंग की aजाए (a-120)और 1 बाइट से एक यूजर 5957401 की गिनती की जाए , जिसने देखा कि doubleयह भी काम करेगा numeric। पुराना संस्करण:

a=as.numeric(format(Sys.Date(),"%Y"));a:(a-120)

के साथ आसपास चक्कर आना और seq(a<-...,a-120)केवल स्थिति को खराब कर सकता है।
आंद्रे

as.doubleइसके बजाय टाइप फोर्सिंग कमांड का उपयोग करने से as.numericआपकी बाइट बच जाएगी। इसी तरह, यदि किसी तिथि को प्रारूपित करने के बजाय, आप तारीख की प्रतिक्रिया को एक स्ट्रिंग के रूप में मानते हैं और substr(Sys.Date(),1,4)एक अन्य बाइट को बचाने के लिए उपयोग करते हैं
user5957401



4

php, 73 66 58 42 बाइट्स

<?=implode(', ',range($j=date(Y),$j-120));

आउटपुट:

2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992। 1991, 1990, 1989, 1988, 1987, 1986, 1985, 1984, 1983, 1982, 1981, 1980, 1979, 1978, 1977, 1976, 1974, 1974, 1973, 1972, 1971, 1970, 1969, 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1961, 1960, 1959, 1958, 1957, 1956, 1955, 1954, 1953, 1952, 1951, 1950, 1949, 1948, 1947, 1946, 1945, 1944, 1943, 1942, 1942, 1942, 1942 1941, 1940, 1939, 1938, 1937, 1936, 1935, 1934, 1933, 1932, 1931, 1930, 1929, 1928, 1926, 1926, 1925, 1924, 1923, 1922, 1921, 1920, 1919, 1918, 1917, 1917, 1917, 1917। 1916, 1915, 1914, 1913, 1912, 1911, 1910, 1909, 1908, 1907, 1906, 1905, 1904, 1903, 1902, 1901, 1900, 1899, 1898, 1897, 1896

अगर हमें अलग होने की जरूरत नहीं है ,, तो 58 57 41 बाइट्स:

<?=implode(' ',range($j=date(Y),$j-120));

16 बाइट्स बचाने के लिए सम्मिलन के लिए धन्यवाद


आपको वास्तव में अलग होने की आवश्यकता नहीं है ,, कई अन्य उत्तरों को देखें।
Addison Crump

यह उस तरह दिखता है, लेकिन मैं दो विकल्पों में डालूंगा इसलिए मैं वह कर सकता हूं जो सबसे अधिक है, और यह भी अनुरोध किया गया था
gabe3886

मैं अपने मूल गैर-अल्पविराम उत्तर आकार को अल्पविराम उत्तर प्राप्त करने में कामयाब रहा। यह उतना ही है जितना मुझे लगता है कि मैं इसे गोल्फ कर सकता हूं
gabe3886

आप <?phpटैग को हटा सकते हैं क्योंकि हम मुफ्त में साथ चलने की-r
व्यवसाय बिल्ली

2
16 बाइट्स से गोल्फ :<?=implode(', ',range($j=date(Y),$j-120));
एक्सिस

4

पायथन 2, 64 62 54 बाइट्स

import time
n=time.gmtime()[0]
exec'print n;n-=1;'*121

@KarlKastor 8 बाइट्स के लिए धन्यवाद!


time.gmtime().tm_year3 बाइट्स छोटी है
कर्लकास्टर

time.gmtime()[0]इससे भी कम
कार्लकास्टर

@KarlKastor अच्छा लगा! टाइम मॉड्यूल के साथ खेलना मेरे लिए हर बार भूलभुलैया में चलने जैसा है। खो जाने के कई तरीके
एटलसोलॉजिस्ट

4

PostgreSQL, 57 बाइट्स

जिसे FROM:-) की जरूरत है । शायद काम नहीं करना चाहिए, लेकिन यह करता है, इसे sqlfiddle पर प्रयास करें

select date_part('y',current_date)-generate_series(0,120)

4

ओएस एक्स, 23 पर बैश

jot 121 `date +%Y` - -1

यह लिनक्स पर भी काम करेगा यदि आपके पास बीएसडी jotस्थापित है (जैसे sudo apt-get install athena-jot


3

पायथन 2, 62 बाइट्स

import time
for n in range(121):print int(time.ctime()[-4:])-n

और 64 बाइट्स पर:

for n in range(121):print int(__import__("time").ctime()[-4:])-n

3

Oracle SQL 11.2, 111 बाइट्स

SELECT LISTAGG(TO_CHAR(SYSDATE,'YYYY')-LEVEL+1,', ')WITHIN GROUP(ORDER BY LEVEL)FROM DUAL CONNECT BY LEVEL<122;

1
मुझे यह कहने के लिए ललचाया जाएगा कि श्रवण की आवश्यकता नहीं है और सिर्फ क्रमबद्ध पंक्तियों का सेट
मिकी

3

प्रसंस्करण, 51 42 41 बाइट्स

for(int i=0;i<121;)print(year()-i+++" ");

Ungolfed

for(int i = 0; i < 121;)
    print(year() - i++ + " ");

यदि आप नहीं जानते हैं तो प्रसंस्करण जावा के लिए एक आवरण है, और अधिकांश बॉयलरप्लेट को दूर ले जाता है, इसलिए जावा संस्करण की तुलना में स्पष्ट समाधान भी सुपर कम है। ड्राइंग ग्राफिक्स के लिए एक विंडो भी खोलता है, लेकिन होने के कारण मुझे अयोग्य घोषित नहीं करता है :)


1
for(int i=0;i<121;)print(year()-i+++" ");
लीक नून

मुझे "+++" बहुत पसंद है, यह बहुत ही संदिग्ध लग रहा है। सलाह के लिये धन्यवाद!
कोडी

3

MATLAB, 18 बाइट्स

आउटपुट स्वरूप को मानने से कोई फर्क नहीं पड़ता (एक तरफ अवरोही क्रम), निम्न प्रोग्राम पिछले 121 वर्षों को वर्तमान के साथ शुरू करता है।

year(date)-(0:120)

इसके लिए MATLAB संस्करण r2014a या उच्चतर की आवश्यकता है। पहले के संस्करणों में yearफ़ंक्शन शामिल नहीं था ।


3

जावास्क्रिप्ट, 55 52 50 49 बाइट्स

for(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d

+9 alertडेटा को बाइट करता है (यदि आप इसे कंसोल में चलाते हैं तो आवश्यक नहीं)।

for(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d;alert(a)

-4 बाइट्स यदि सीमांकक आवश्यक नहीं है।

for(a=d=s=Date().substr(11,4);d-->s-120;)a+=d

for (a = d = s = Date().substr(11, 4); d --> s - 120; )
    a += " " + d;
console.log(a);


1
[]रों अनावश्यक प्रतीत होते हैं।
नील

@ नील: धन्यवाद। मेरे मूल समाधान ने एक सरणी का उपयोग किया, लेकिन मैंने इसे हटाने के लिए नहीं सोचा था।
Yay295

1
आप एक का उपयोग कर एक बाइट बचा सकता है forके बजाय whileइस पर: for(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d!
डोम हेस्टिंग्स

3

सी, 87 85 76 74 65 बाइट्स

main(int i,char**v){for(i=0;i<121;printf("%d,",atoi(v[1])-i++));}

Ungolfed:

main(int i,char**v){
    for(i = 0; i < 121; printf("%d,", atoi(v[1])-i++));
}

मेरा पहला कोड गोल्फ - कोई भी संकेत अच्छी तरह से प्राप्त होगा। अच्छा होगा अगर मैं argc / argv कबाड़ को काट सकता हूं, लेकिन मैं ऐसा कुशल प्रोग्रामर नहीं हूं । सुधार का स्वागत करते हैं।

संपादित करें : वर्तमान वर्ष कमांडलाइन से प्राप्त किया गया है - विशेष रूप से स्वचालित, अच्छी तरह से प्रशिक्षित पीने वाले पक्षियों के समूह द्वारा।

EDIT 2 : 85 बाइट्स ईस्टर इर्क के लिए धन्यवाद (arg फंक्शन पैरामीटर्स के आस-पास रिक्त स्थान)

EDIT 3 : 76 बाइट्स स्पष्ट इंगित करने के लिए एनाटॉलीग के लिए धन्यवाद (हटाए गए शब्द argc / argv param नाम)

EDIT 4 : 74 बाइट्स Yay295 के लिए धन्यवाद (चार ** v, परिवर्तित वर्ष सीमांकक)

EDIT 5 : 65 बाइट्स Yay295 और मैट की बदौलत (वेरिएबल आई का इस्तेमाल फिर से किया गया, वेरिएबल x को हटा दिया गया, जबकि लूप के लिए बदल दिया गया, अपडेटी को शामिल करने के लिए प्रिंट किया गया)


1
आप एक जगह नहीं कर सकते? int argc, char-> int argc,char?
R

2
argcद्वारा प्रतिस्थापित c(या बेहतर int argcद्वारा प्रतिस्थापित int) और argvद्वारा vwhileद्वारा भी प्रतिस्थापित करें for। बाद के बदलाव के लिए सी में कुछ अनुभव की आवश्यकता होती है (लेकिन परवाह किए बिना मज़ेदार हो सकता है)।
अनातोलीगैस

1
char*v[]-> char**v1 बाइट बचाता है। आप अपने वर्षों को एक नई रेखा के बजाय एक स्थान या अल्पविराम के साथ परिसीमन करके बचा सकते हैं।
1729 में Y29295

1
आप इसे कम कर सकते हैं। 71 बाइट्स। मुख्य (int c, char ** v) {int i = 0; जबकि (i <120) प्रिंटफ ("% d,", atoi (v [1]) - i ++);}
मैट

2
और भी छोटा। 65 बाइट्स main(int i,char**v){for(i=0;i<121;printf("%d,",atoi(v[1])-i++));}
मैट

3

जावास्क्रिप्ट, 60 53 48 बाइट्स

f=x=>x>Date().split` `[3]-121&&(alert(x),f(x-1))

मैंने एक पुनरावर्ती समाधान का उपयोग किया।


1
आप के console.logसाथ बदल सकते हैं alert, और अंतिम को हटा सकते हैं ;
NoOneIsHere 22

1
f=x=>x>Date().split" "[3]-121&&(alert(x),f(x-1))बैकटिक्स के साथ उद्धरण चिह्नों को बदलने के साथ 5 बाइट्स सहेजें ।
झबरा

2

पर्ल, 33 बाइट्स

say+(gmtime)[5]-$_+1900for 0..120

साथ चलाएं -M5.010या -E:

perl -E 'say+(gmtime)[5]-$_+1900for 0..120'

2

के, 27 बाइट्स

निर्दिष्ट के रूप में उत्पादन

1@", "/:$(`year$.z.d)-!121;

उदाहरण:

k)1@", "/:$(`year$.z.d)-!121;
2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1990, 1989, 1988, 1987, 1986, 1985, 1984, 1983, 1982, 1981, 1980, 1979, 1978, 1977, 1976, 1975, 1974, 1973, 1972, 1971, 1970, 1969, 1968, 1967, 1966, 1965, 1964, 1963, 1962, 1961, 1960, 1959, 1958, 1957, 1956, 1955, 1954, 1953, 1952, 1951, 1950, 1949, 1948, 1947, 1946, 1945, 1944, 1943, 1942, 1941, 1940, 1939, 1938, 1937, 1936, 1935, 1934, 1933, 1932, 1931, 1930, 1929, 1928, 1927, 1926, 1925, 1924, 1923, 1922, 1921, 1920, 1919, 1918, 1917, 1916, 1915, 1914, 1913, 1912, 1911, 1910, 1909, 1908, 1907, 1906, 1905, 1904, 1903, 1902, 1901, 1900, 1899, 1898, 1897, 1896

इसे आउटपुट स्वरूपित नहीं करके और केवल पूर्णांकों की सूची लौटाकर इसे और छोटा किया जा सकता है:

(`year$.z.d)-!121


2

विम, 32 29 कीस्ट्रोक्स

कुछ कीस्ट्रोक्स को बचाने और आउटपुट को थोड़ा सा बनाने के लिए कुछ मदद के लिए @daniero को धन्यवाद ।

"=strftime('%Y')<Enter>pqqYp<Ctrl-x>q118@q
  • <Enter> है Enter
  • <Ctrl-x>है Ctrl+X

स्पष्टीकरण:

"                                          # Put into the register {
 =strftime('%Y')                           #   This year in YYYY form
                <Enter>                    # }
                       p                   # Paste the register
                        qq                 # Record macro q {
                          Y                #   Yank (copy) the current line
                           p               #   Paste
                            <Ctrl-x>       #   Decrment number at cursor
                                    q      # }
                                     118@q # Do macro q 118 times

आउटपुट स्वरूप:

प्रत्येक संख्या नीचे की तरह एक अलग लाइन पर है।

2016
2015
.
.
.
1898
1897

ओपी स्पष्ट रूप से भविष्य के प्रमाण संस्करण के लिए पूछता है, इसलिए केवल दूसरा ही प्रश्न का उत्तर देता है। क्या आपको Enter कुंजी (आमतौर पर <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 कीस्ट्रोक्स, और यह पहली खाली लाइन से छुटकारा पा जाता है
daniero

यदि आपको शेल का उपयोग करने की अनुमति है, तो आप dateउपयोगिता के साथ पाँच और कीस्ट्रोक्स बचा सकते हैं ::.!date +\%Y<CR>qqYp<C-x>q118@q
जॉन गोवर्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.