รายชื่อปีเกิดที่เป็นไปได้ของมนุษย์ที่มีชีวิต


40

ความท้าทาย

แสดงรายการปีที่เริ่มต้นด้วยปีปัจจุบันและสิ้นสุดเมื่อ 120 ปีที่แล้ว ปีเกิดของมนุษย์ที่มีชีวิตทุกคนจะถูกรวมอยู่ในรายการนี้

รายละเอียด

รายการควรอยู่ในลำดับถัดลงมา

อนุญาตให้ใช้ฟังก์ชันในตัวเพื่อจัดการอาร์เรย์และ / หรือรายการทั้งหมดได้

รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

เมื่อรันในปีนี้ผลผลิตจะเป็น

2016, 2015, ..., 1897, 1896

เมื่อรันในปีหน้าผลผลิตจะเป็น

2017, 2016, ..., 1898, 1897

เป็นต้น

ปรับปรุง

  • บางคนถามเกี่ยวกับรูปแบบของรายการ ตามที่เดาได้ส่วนใหญ่มันไม่สำคัญ แทรกตัวคั่นใด ๆ ระหว่างตัวเลข ใส่เครื่องหมายจุลภาคหรือช่องว่างหรือทั้งคู่ขึ้นบรรทัดใหม่หรือส่งออกอาร์เรย์ได้โดยสัญชาตญาณ
  • ผู้อาวุโสเสมือนเช่นJeanne Calmentเป็นข้อยกเว้นของกฎที่ระบุไว้ในคำถามของฉัน

7
ฉันขอแนะนำให้ทดลองใช้แซนด์บ็อกซ์เพื่อรับข้อเสนอแนะก่อนโพสต์ความท้าทาย (ไม่ใช่สำหรับความท้าทายแรกของคุณเท่านั้นส่วนใหญ่เราจะใช้มันสำหรับทุกความท้าทาย)
trichoplax

3
ฉันไม่เห็นอะไรผิดปกติกับความท้าทายนี้ สิ่งหนึ่งที่อาจคุ้มค่ากับการระบุคือผลลัพธ์ควรเริ่มต้นด้วย 2016 หรือปีที่รัน (จะเริ่มต้นด้วย 2017 หากรันในปีหน้าหรือไม่) สิ่งนี้จะส่งผลกระทบไม่ว่าจะเป็นความท้าทายในการส่งออกคงที่หรือต้องการเข้าถึงวันที่ปัจจุบัน
trichoplax

19
Jeanne Louise Calmentมีอายุ 122 ปี
Zenadix

10
หนุ่มนั่นเร็วเกินไปที่จะยอมรับ
Addison Crump

6
ความท้าทาย: "พิมพ์ตัวเลขทั้งหมดจากy- 120 ถึงy" หรือ "พิมพ์ปีเกิดของผู้คนที่มีชีวิตทั้งหมด" หรือไม่? เพราะถ้าใครบางคนที่เกิดในปี 2439 มีชีวิตอยู่ทุกวันนี้นั่นไม่ได้หมายความว่ายังมีคนจาก 2441 รอบ ๆ
CompuChip

คำตอบ:


19

Pyke ขนาด 6 ไบต์

wC7m-

ลองที่นี่!

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

(หลังจากนั้นwcodepoint สำหรับ 153 มีอยู่ แต่ไม่สามารถพิมพ์ได้)


1
ว้าวนั่นเป็นเครื่องหมายถูกอย่างรวดเร็ว อาจจะรอคำตอบของเจลลี่?
อดัม

ในขณะที่ฉันเห็นว่าเป็นเครื่องหมายถูกอย่างรวดเร็วฉันสงสัยว่าแม้แต่ Jelly ก็สามารถทำได้ใน 5
บลู

ทำไมคุณถึงมีตัวแปรสำหรับ 121? เพียงเพราะมันเป็นจำนวนสแควร์? แต่ทำได้ดีมาก!
Denker

3
wจริงมีไบต์ unprintable หลังจากนั้นที่ทำให้มัน 121
สีฟ้า

1
@LeakyNun สามารถกำหนดค่าได้ไม่ว่าจะใช้เซิร์ฟเวอร์ใดก็ตาม บน pyke.catbus ฉันตั้งเป็น Windows-1252
บลู

11

Pyth, 11 9 8 ไบต์

-L.d3C\y

ทำงานโดยการทำแผนที่ในช่วง[0...120]และลบออกทุกหมายเลขจากปีปัจจุบัน ช่วงนี้ถูกสร้างขึ้นโดยปริยายโดยใช้121เป็นอาร์กิวเมนต์แผนที่ เพื่อหลีกเลี่ยงช่องว่างแยกระหว่าง.d3และ121เราได้รับหมายเลขนี้โดยการแปลงyเป็น codepoint
ขอบคุณ @FryAmTheEggman สำหรับวิธีการนี้!

ลองที่นี่!

โซลูชัน 9 ไบต์แบบเก่า:

_>121S.d3

ลองที่นี่!

สร้างช่วง[1...<current year>]และใช้เวลาเพียง 121 องค์ประกอบสุดท้ายเท่านั้น


1
คุณควรกลับรายการเพื่อให้เริ่มต้นด้วยปีปัจจุบัน
Christiaan Westerbeek

1
-L...บันทึกไม่กี่ไบต์
Jakube

1
@ChristiaanWesterbeek พลาดส่วนนั้นไปแล้ว ขอบคุณที่จำ!
Denker

@Jakube ใช้วิธีการที่แตกต่างกันในตอนนี้ แต่ขอบคุณสำหรับการเตือนว่ามีอยู่นี้ไม่ได้ใช้ Pyth มากในครั้งสุดท้าย!
Denker

1
-L.d3C\yควรทำงานสำหรับ 8
FryAmTheEggman

9

R, 34 ไบต์

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

ดูที่นี่ในล่ามออนไลน์

แก้ไขอาจจะลดลงถึง 33 substrไบต์โดยใช้

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

แต่ในทางเทคนิคการแก้ปัญหานี้จะใช้งานได้จนถึง 9999-12-31


3
นี่มันเจ๋งมาก. ฉันไม่ทราบว่ามันสามารถพิมพ์สตริงเป็นตัวเลขเมื่อใช้:โอเปอเรเตอร์ ...
Andreï Kostyrka

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}}

เอาท์พุต

enter image description here


8

BASH + coreutils, 35 33 ไบต์

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

2
ในกรณีของคุณอัญประกาศไม่จำเป็น: change: date +"%Y"เป็นdate +%Y
Olivier Dulac

1
x=`date +%Y`;seq $x -1 $[x-120]หรือseq $[x=`date +%Y`] -1 $[x-120]ทำงานได้ดี
เดนนิส

สั้นลง 10 ไบต์หากคุณมี OSX หรือเต็มใจที่จะติดตั้งjotบน Linux
Digital Trauma

7

CJam, 14 12 11 bytes

บันทึก 2 ไบต์ด้วย Sp3000 และ 1 ไบต์ขอบคุณ Martin Ender

et0=121,f-p

ลองออนไลน์!

คำอธิบาย

et0=         e# Push the current year
    121,     e# Push the range 0, 1, ..., 120
        f-   e# For each item in the range, subtract it from current year
          p  e# Print the array

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.

แสดงรายการปี 2559 ถึงปี 1896:

2016 to 1896


แก้ไขคำตอบเพื่อรับปีปัจจุบันจากเครื่องคิดเลข
Caleb Paul


6

PowerShell, 26 24 ไบต์

@TimmyD รุ่นที่ปรับปรุงแล้ว:

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

คือ:

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

ที่dateทำงานGet-Date


1
Blargh ควรตอบก่อนหน้านี้ นั่นเป็นเวอร์ชั่นที่ตรงไปตรงมาที่ฉันมีอยู่ จากนั้นทำงานแทรกแซง: รุ่น DA สนุกก็จะเป็น: ((date).year..0)[0..120]; อนิจจามันไม่สั้น
Joey

1
ฉันพบว่าน่าสนใจว่าวันที่นั้นเทียบเท่ากับ Get-Date เมื่อจริง ๆ แล้ววันที่ไม่ใช่นามแฝงของ Get-Date ฉันเคยเห็นสิ่งนี้เรียกว่ากฎ "คำกริยาโดยนัย" และไม่ค่อยมีการบันทึกไว้ในวรรณคดี PowerShell
Bevo

@Bevo มันมีประโยชน์สำหรับ CodeGolf แต่มีความเสี่ยงเล็กน้อยสำหรับการใช้งานอื่น ๆ ดู: codegolf.stackexchange.com/a/778/571และความคิดเห็นในเครือ; มันเป็นทั้งแนวโน้มที่จะตั้งชื่อการปะทะกันและช้ามาก
TessellatingHeckler

6

Dyalog APL , 11 10 ไบต์

120↑⌽⍳⊃⎕ts

120↑ ใช้ 120 องค์ประกอบ

ของการกลับรายการ

ดัชนีจนกระทั่ง

องค์ประกอบแรกของ

⎕TS TimeStamp ในรูปแบบ [YYYY, M, D, h, m, s, t]

ลองใช้ออนไลน์!


เวอร์ชั่นเก่า:

(⊃⎕TS)-⍳120

⊃⎕TS องค์ประกอบแรกของ [YYYY, M, D, h, m, s, t]

- ลบ

⍳120 [0, 1, 2, ... , 118, 119]

ต้องการ⎕IO←0ซึ่งเป็นค่าเริ่มต้นในหลาย ๆ ระบบ

ลองใช้ออนไลน์!


6

Vitsy + * sh + JavaScript , 33 26 21 18 ไบต์

Vitsy ไม่มีการเรียกคืนวันที่ / เวลาดั้งเดิมดังนั้นฉันต้องใช้เชลล์และ eval สำหรับอันนี้

ขอบคุณ @Caleb ที่ช่วยฉันกำจัดอีก 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.

คุณไม่สามารถลองอันนี้แบบออนไลน์ได้เพราะมันใช้ทั้งเชลล์และ eval

เอาต์พุตเป็นรหัสอักขระ


คุณควรจะตัดออกไปสองไบต์เพราะคุณไม่จำเป็นต้องใส่เครื่องหมายคำพูดคู่รอบสตริงรูปแบบวันที่ (เนื่องจากไม่มีช่องว่าง) date +%Yทำงานได้ดี
คาเลบ

@Caleb สมบูรณ์แบบขอบคุณ! ทำให้ความต้องการ JS eval ไม่มีอยู่จริงเช่นกัน
Addison Crump

5

Mathematica / Wolfram Language, 28 ไบต์

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

ยินดีต้อนรับสู่ PPCG!
Addison Crump

4
ยินดีต้อนรับสู่ PPCG! คุณไม่จำเป็นต้องใช้แผนที่ที่นี่เนื่องจากการลบจะถูกทำบนรายการโดยอัตโนมัติ และ-Range@121+1บันทึกเป็นไบต์ในรายการ zero-based และ#&@@เป็นไบท์มากกว่า[[1]]ไบต์มากกว่าที่กล่าวไว้เว้นแต่จะระบุไว้เป็นอย่างอื่นในการท้าทายการส่งทั้งหมดจะต้องมีฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบและรหัสนี้เป็นเพียงตัวอย่าง / การแสดงออก &การแก้ไขที่สั้นที่สุดจะทำให้มันเป็นฟังก์ชั่นที่ไม่มีชื่อโดยท้าย
Martin Ender

@ MartinEnder ขอบคุณสำหรับข้อเสนอแนะ! ฉันน่าจะจับได้ว่า Minus นั้นเป็นไปได้ที่จะทำอะไรได้บ้าง แต่ก็ยังมีเคล็ดลับอื่น ๆ อีกมาก!
user6014

#&@@Date[]-#&/@0~Range~120&จะช่วยให้คุณประหยัดสองไบต์ แต่แล้วทำให้ฟังก์ชั่นต้องเพิ่ม&ในตอนท้าย (ซึ่งฉันคิดว่าคุณต้องการอยู่แล้ว) ดังนั้น -1 byte ทั้งหมด
numbermaniac

5

R, 47 39 ไบต์

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

หากมีเพียงบางคนที่คิดค้นการใช้งาน UTF-8 ของ R ด้วยฟังก์ชั่นระบบที่ใช้งานง่าย ...

UPD: ลบออก 7 (!) ไบต์เนื่องจากplannapusผู้แนะนำ subrtacting a0:120เวกเตอร์มากกว่านับจากaไป(a-120)และ 1 ไบต์พระคุณuser5957401ที่สังเกตเห็นว่าจะทำงานเช่นเดียวกับdouble numericเวอร์ชั่นเก่า:

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

เล่นไปรอบ ๆ ด้วยและseq(a<-...,a-120)สามารถเลวลงสถานการณ์
Andreï Kostyrka

การใช้คำสั่ง type forcing as.doubleแทนas.numericจะช่วยคุณประหยัด byte ในทำนองเดียวกันถ้าแทนที่จะจัดรูปแบบวันที่คุณถือว่าการตอบสนองวันที่เป็นสตริงที่จะดึงออกมาและใช้substr(Sys.Date(),1,4)คุณบันทึกไบต์อื่น
user5957401



4

php, 73 66 58 42 ไบต์

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

เอาท์พุท:

2559, 2558, 2557, 2556, 2555, 2553, 2552, 2551, 2550, 2549, 2549, 2548, 2546, 2545, 2544, 2543, 2542, 2541, 2540, 2539, 2538, 2536, 2535, 2535, 2534, 2533, 2532, 2531, 2529, 2528, 2527, 2526, 2525, 2524, 2523, 2522, 2522, 2519, 2519, 2519, 2517, 2519, 2529, 2511, 2511, 2510, 2509, 2508, 2507, 2506, 2505, 2504, 2503, 2502, 2501, 2502, 2505, 2504, 2504, 2504, 2490, 2490, 2487, 2486, 2486, 2486 2484, 2483, 2482, 2481, 2480, 2479, 2478, 2476, 2475, 2474, 2473, 2473, 2472, 2472, 2470, 2469, 2467, 2466, 2466, 2464, 2461, 2461, 2461, 2461, 2460, 2460 2459, 2458, 2457, 2456, 2455, 2454, 2453, 2452, 2451, 2449, 2449, 2448, 2447, 2446, 2446, 2444, 2442, 2441, 2440, 2439, 2439

หากเราไม่ต้องการแยกด้วย,ดังนั้น58 57 41 ไบต์:

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

ขอบคุณที่ใส่ชื่อที่นี่สำหรับการบันทึก 16 ไบต์


คุณไม่จำเป็นต้องแยกจากกัน,ดูคำตอบอื่น ๆ อีกมากมาย
Addison Crump

มันดูเป็นอย่างนั้น แต่ฉันจะใส่สองตัวเลือกเพื่อให้ฉันสามารถทำสิ่งที่มากที่สุดและสิ่งที่ถูกร้องขอ
gabe3886

ฉันจัดการเพื่อให้ได้คำตอบที่คั่นด้วยจุลภาคกับขนาดคำตอบที่ไม่ใช่จุลภาคดั้งเดิมของฉัน นั่นเท่าที่ฉันคิดว่าฉันสามารถเล่นกอล์ฟได้
gabe3886

คุณสามารถลบ<?phpแท็กได้เนื่องจากเราอนุญาตให้ใช้งาน-rได้ฟรี
Business Cat

2
ปิดกอล์ฟ16 ไบต์ :<?=implode(', ',range($j=date(Y),$j-120));
แทรกชื่อผู้ใช้ที่นี่

4

Python 2, 64 62 54 ไบต์

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

@KarlKastor ขอบคุณ 8 ไบต์!


time.gmtime().tm_yearสั้นลง 3 ไบต์
KarlKastor

time.gmtime()[0]ยิ่งสั้น
KarlKastor

@KarlKastor ดี! การเล่นกับโมดุลเวลาก็เหมือนกับการเดินเข้าไปในเขาวงกตทุกครั้งสำหรับฉัน มีหลายวิธีที่จะทำให้หลงทาง
แผนที่

4

PostgreSQL, 57 ไบต์

ใครต้องการFROM:-) อาจไม่สามารถใช้งานได้ แต่ลองได้ที่sqlfiddle

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



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
ฉันอยากจะพูดว่า listagg ไม่จำเป็นและเป็นเพียงชุดของแถวที่สั่ง
MickyT

3

กำลังประมวลผล, 51 42 41 ไบต์

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

Ungolfed

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

การประมวลผลเป็นเพียงเครื่องมือห่อหุ้มสำหรับ Java หากคุณไม่ทราบและนำเอาส่วนใหญ่ออกไปดังนั้นทางออกที่ชัดเจนก็สั้นมากเมื่อเทียบกับรุ่น Java นอกจากนี้ยังเปิดหน้าต่างสำหรับการวาดภาพกราฟิก แต่การที่ดูเหมือนจะไม่ทำให้ฉันแพ้ :)


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

ฉันชอบ "+++" มันดูน่าสงสัยมาก ขอบคุณสำหรับคำแนะนำ!
โคดี้

3

MATLAB, 18 ไบต์

สมมติว่ารูปแบบเอาต์พุตไม่สำคัญ (นอกเหนือจากลำดับจากมากไปหาน้อย) โปรแกรมต่อไปนี้จะพิมพ์ 121 ปีสุดท้ายที่เริ่มต้นด้วยรูปแบบปัจจุบัน

year(date)-(0:120)

ต้องการ MATLAB รุ่น r2014a ขึ้นไป เวอร์ชันก่อนหน้านี้ไม่มีyearฟังก์ชั่น


3

JavaScript, 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
[]s ดูเหมือนจะเป็นที่ไม่จำเป็น
Neil

@ Neil: ขอบคุณ โซลูชันดั้งเดิมของฉันใช้อาร์เรย์ แต่ฉันไม่คิดว่าจะลบออก
Yay295

1
คุณสามารถบันทึกหนึ่งไบต์ใช้forแทนการwhileเกี่ยวกับเรื่องนี้: for(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d!
Dom Hastings

3

C, 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 แต่ฉันไม่ใช่โปรแกรมเมอร์ซีที่เก่ง ยินดีต้อนรับการปรับปรุง

แก้ไข : ปีปัจจุบันได้รับจาก commandline - โดยเฉพาะกลุ่มนกอัตโนมัติที่ผ่านการฝึกอบรมมาอย่างดี

แก้ไข 2 : 85 ไบต์ขอบคุณ Easterly Irk (ลบช่องว่างรอบพารามิเตอร์ฟังก์ชัน ARG)

แก้ไข 3 : 76 bytes ขอบคุณ anatolyg สำหรับการชี้ชัด (ลบ verbose argc / argv param ชื่อ)

แก้ไข 4 : 74 ไบต์ขอบคุณ Yay295 (ถ่าน ** v, ตัวคั่นปีที่เปลี่ยน)

แก้ไข 5 : 65 ไบต์ขอบคุณ Yay295 และ matt (ใช้ตัวแปร i อีกครั้ง, ลบตัวแปร x, เปลี่ยนไปเป็นลูป, ปรับปรุง printf เพื่อรวม atoi () อ่านและ i ++)


1
คุณไม่มีที่ว่างใช่ไหม int argc, char-> int argc,char?
Rɪᴋᴇʀ

2
แทนที่argcโดยc(หรือดีกว่าเข้ามาแทนที่int argcโดยเพียงแค่int) และโดยargv vนอกจากนี้ยังแทนที่โดยwhile forการเปลี่ยนแปลงหลังต้องใช้ประสบการณ์บางอย่างใน C (แต่อาจสนุกโดยไม่คำนึงถึง)
anatolyg

1
char*v[]-> char**vบันทึก 1 ไบต์ คุณสามารถประหยัดอีกด้วยการกำหนดปีของคุณด้วยช่องว่างหรือเครื่องหมายจุลภาคแทนการขึ้นบรรทัดใหม่
Yay295

1
คุณสามารถทำให้มันสั้นลง 71 ไบต์ main (int c, char ** v) {int i = 0; ในขณะที่ (i <120) printf ("% d,", atoi (v [1]) - i ++);
แมตต์

2
ยิ่งสั้น 65 bytes main(int i,char**v){for(i=0;i<121;printf("%d,",atoi(v[1])-i++));}
Matt

3

JavaScript, 60 53 48 Bytes

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

ฉันใช้โซลูชันแบบเรียกซ้ำ


1
คุณสามารถแทนที่console.logด้วยและลบสุดท้ายalert ;
NoOneIsHere

1
บันทึก 5 ไบต์ด้วยf=x=>x>Date().split" "[3]-121&&(alert(x),f(x-1))โดยแทนที่เครื่องหมายคำพูดด้วย backticks
ขนปุย

2

Perl, 33 ไบต์

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

ทำงานด้วย-M5.010หรือ-E:

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

2

k, 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

OP ขอรุ่นที่ชัดเจนในอนาคตดังนั้นคนที่สองเท่านั้นที่ตอบคำถาม คุณไม่จำเป็นต้องกดปุ่ม Enter (โดยทั่วไปอ้างถึง<CR>ในบริบทของ Vim) :pu=strftime('%Y')ใช่ไหม นอกจากนี้คุณสามารถข้ามการกดแป้นบางส่วนโดยใช้Yกับการคัดลอกทั้งบรรทัด รวม: :pu=strftime('%Y')<CR>qqYp<Ctrl-x>q118@q- 30 การกดแป้น
daniero

นอกจากนี้คุณสามารถดึงออกจากการ=ลงทะเบียน: "=strftime('%Y')<CR>pqqYp<Ctrl-x>q118@q- 29 การกดแป้นและมันจะกำจัดบรรทัดว่างแรก
daniero

หากคุณได้รับอนุญาตให้ใช้เชลล์เช่นกันคุณสามารถบันทึกการกดแป้นห้าครั้งด้วยdateยูทิลิตี้::.!date +\%Y<CR>qqYp<C-x>q118@q
John Gowers
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.