Tantangan
Keluarkan daftar tahun yang dimulai dengan tahun berjalan dan berakhir 120 tahun yang lalu. Tahun kelahiran setiap manusia yang hidup akan dimasukkan dalam daftar ini.
Detail
Daftar harus dalam urutan menurun.
Setiap fungsi bawaan untuk memanipulasi array dan / atau daftar diperbolehkan.
Kode terpendek dalam byte menang.
Saat dijalankan tahun ini, hasilnya akan menjadi
2016, 2015, ..., 1897, 1896
Ketika dijalankan tahun depan hasilnya akan seperti itu
2017, 2016, ..., 1898, 1897
Dll
Memperbarui
- Beberapa orang bertanya tentang format daftar. Seperti dugaan kebanyakan orang, itu tidak masalah. Masukkan pemisah mana pun di antara angka-angka. Secara intuitif sebagian besar memasukkan koma atau spasi atau keduanya, baris baru atau output array.
- Manusia super semu seperti Jeanne Calment adalah pengecualian dari aturan yang disebutkan dalam pertanyaan saya.
y
- 120 hinggay
" atau "cetak semua tahun kelahiran orang yang hidup"? Karena jika seseorang yang lahir pada tahun 1896 masih hidup hari ini, itu tidak berarti bahwa masih ada orang-orang dari tahun 1898 sekitar.Jawaban:
Pyke, 6 byte
Coba di sini!
(Setelah
w
, codepoint untuk 153 hadir tetapi tidak dapat dicetak)sumber
w
benar-benar memiliki byte tak patut ditulis setelah yang membuatnya 121Pyth,
1198 byteBekerja dengan memetakan rentang
[0...120]
dan mengurangi setiap angka dari tahun berjalan. Rentang ini dibangun secara implisit dengan menggunakan121
sebagai argumen peta. Untuk menghindari spasi putih yang memisahkan antara.d3
dan121
kami mendapatkan nomor ini dengan mengonversikannyay
menjadi codepoint.Terima kasih kepada @FryAmTheEggman untuk datang dengan pendekatan ini!
Coba di sini!
Solusi 9 byte lama:
Coba di sini!
Buat rentang
[1...<current year>]
dan hanya ambil 121 elemen terakhir dari itu.sumber
-L...
menghemat beberapa byte.-L.d3C\y
harus bekerja untuk 8.R, 34 byte
Lihat di sini di penerjemah online.
Sunting Bisa dikurangi menjadi 33 byte dengan menggunakan
substr
.tetapi secara teknis solusi ini hanya akan berfungsi hingga 9999-12-31.
sumber
:
operator ...AngularJS + Lodash , 274 byte
Keluaran
sumber
BASH + coreutils,
3533 bytesumber
date +"%Y"
kedate +%Y
x=`date +%Y`;seq $x -1 $[x-120]
atauseq $[x=`date +%Y`] -1 $[x-120]
berfungsi juga.jot
di LinuxCJam,
141211 byteDisimpan 2 byte berkat Sp3000 dan 1 byte terima kasih kepada Martin Ender
Cobalah online!
Penjelasan
sumber
HP50g RPL, 97 byte
Tidak Disatukan:
Menampilkan daftar 2016 hingga 1896:
sumber
05AB1E ,
87 byteKode:
Penjelasan:
Menggunakan pengkodean CP-1252 . Cobalah online! .
sumber
PowerShell,
2624 byte@TimmyD versi yang disempurnakan:
Apakah:
di mana
date
berjalanGet-Date
sumber
((date).year..0)[0..120]
:; sayangnya itu tidak lebih pendek.Dyalog APL ,
1110 byte120↑
ambil 120 elemen⌽
dari yang terbalik⍳
indeks sampai⊃
elemen pertama dari⎕TS
TimeStamp dalam format [YYYY, M, D, h, m, s, t]TryAPL online!
Versi lama:
⊃⎕TS
elemen pertama [YYYY, M, D, h, m, s, t]-
minus⍳120
[0, 1, 2, ..., 118, 119]Membutuhkan
⎕IO←0
, yang merupakan standar pada banyak sistem.TryAPL online!
sumber
Vitsy + * sh
+ JavaScript,33262118 byteVitsy tidak memiliki pencarian waktu / tanggal asli, jadi saya harus menggunakan shell dan eval untuk yang ini.
Terima kasih kepada @Caleb karena membantu saya menghilangkan 3 byte lagi!
Anda tidak dapat mencoba yang ini secara online, karena ia menggunakan shell DAN eval.
Output adalah sebagai kode karakter.
sumber
date +%Y
berfungsi dengan baik.Bahasa Mathematica / Wolfram, 28 byte
sumber
-Range@121+1
menyimpan byte dari daftar berbasis nol. Dan#&@@
satu byte lebih[[1]]
. Yang mengatakan, kecuali dinyatakan sebaliknya dalam tantangan, semua kiriman harus fungsi atau program penuh, dan kode ini hanyalah potongan / ekspresi. Perbaikan terpendek akan membuatnya menjadi fungsi yang tidak disebutkan namanya dengan menambahkan&
.#&@@Date[]-#&/@0~Range~120&
akan menghemat dua byte, tetapi kemudian membuatnya berfungsi membutuhkan menambahkan&
pada akhirnya (yang saya pikir Anda butuhkan juga), sehingga total -1 byte.R,
4739 byteJika hanya seseorang yang menemukan implementasi UTF-8 dari R dengan fungsi sistem yang sering digunakan ...
UPD: dicukur 7 (!) Byte karena plannapus , yang menyarankan sub-subtacting
0:120
vektor daripada menghitung daria
ke(a-120)
dan 1 byte grâce à user5957401 , yang memperhatikan bahwa itudouble
akan berhasil juganumeric
. Versi lama:sumber
seq(a<-...,a-120)
hanya dapat memperburuk situasi.as.double
bukannyaas.numeric
akan menghemat satu byte. Demikian pula, jika alih-alih memformat tanggal, Anda memperlakukan respons tanggal sebagai string untuk menarik dan menggunakansubstr(Sys.Date(),1,4)
Anda menyimpan byte lainMATL , 10 byte
Cobalah online!
sumber
05AB1E, 9 byte
121FžgN-=
Coba online
sumber
php,
73 66 5842 byteKeluaran:
Jika kita tidak perlu berpisah dengan
,
, maka58 5741 byte:Terima kasih untuk menyisipkan nama pengguna di sini untuk menghemat 16 byte
sumber
,
, lihat banyak jawaban lainnya.<?php
tag karena kami mengizinkan berjalan dengan-r
gratis<?=implode(', ',range($j=date(Y),$j-120));
Python 2,
64 6254 byte@KarlKastor terima kasih untuk 8 byte!
sumber
time.gmtime().tm_year
lebih pendek 3 bytetime.gmtime()[0]
bahkan lebih pendekPostgreSQL, 57 byte
Siapa yang butuh
FROM
:-). Mungkin seharusnya tidak berhasil, tetapi ternyata berhasil, cobalah di sqlfiddlesumber
Bash pada OS X, 23
Ini juga akan berfungsi di Linux jika Anda telah
jot
menginstal BSD (missudo apt-get install athena-jot
.sumber
Python 2, 62 byte
Dan pada 64 byte:
sumber
Oracle SQL 11.2, 111 byte
sumber
Memproses,
514241 byteTidak disatukan
Pemrosesan hanyalah pembungkus untuk Java jika Anda tidak tahu, dan mengambil sebagian besar boilerplate, sehingga solusi yang jelas juga sangat pendek dibandingkan dengan versi Java. Juga membuka jendela untuk menggambar grafik, tetapi memiliki itu tampaknya tidak mendiskualifikasi saya :)
sumber
for(int i=0;i<121;)print(year()-i+++" ");
MATLAB, 18 byte
Dengan asumsi format output tidak masalah (selain urutan menurun), program berikut mencetak 121 tahun terakhir dimulai dengan yang sekarang.
Ini membutuhkan versi MATLAB r2014a atau lebih tinggi. Versi sebelumnya tidak termasuk
year
fungsi.sumber
JavaScript,
55525049 byte+9 byte ke
alert
data (tidak perlu jika Anda menjalankan ini di konsol).-4 byte jika pembatas tidak diperlukan.
sumber
[]
s tampaknya tidak perlu.for
bukanwhile
inifor(a=d=s=Date().substr(11,4);d-->s-120;)a+=" "+d
:!C,
8785767465 byteTidak Disatukan:
Golf kode pertama saya - Pointer apa pun akan diterima dengan baik. Akan lebih baik jika saya bisa memotong sampah argc / argv, tapi saya tidak begitu mahir programmer C. Perbaikan disambut baik.
EDIT : Tahun ini diperoleh dari commandline - khusus oleh sekelompok burung minum otomatis yang terlatih.
EDIT 2 : 85 bytes Terima kasih kepada Easterly Irk (menghapus spasi di sekitar parameter fungsi arg)
EDIT 3 : 76 bytes Berkat anatolyg untuk menunjukkan yang jelas (nama parameter verbose argc / argv dihapus)
EDIT 4 : 74 byte Terima kasih kepada Yay295 (char ** v, pembatas tahun berubah)
EDIT 5 : 65 byte terima kasih kepada Yay295 dan matt (digunakan kembali variabel i, hapus variabel x, ubah sementara menjadi untuk loop, perbarui printf untuk menyertakan atoi () baca dan i ++)
sumber
int argc, char
->int argc,char
?argc
denganc
(atau lebih baik gantiint argc
dengan adilint
) danargv
denganv
. Juga gantiwhile
denganfor
. Perubahan terakhir membutuhkan beberapa pengalaman dalam C (tetapi mungkin menyenangkan terlepas dari).char*v[]
->char**v
menghemat 1 byte. Anda dapat menyimpan yang lain dengan membatasi tahun Anda dengan spasi atau koma alih-alih baris baru.main(int i,char**v){for(i=0;i<121;printf("%d,",atoi(v[1])-i++));}
JavaScript,
605348 BytesSaya menggunakan solusi rekursif.
sumber
console.log
denganalert
, dan menghapus yang terakhir;
.f=x=>x>Date().split" "[3]-121&&(alert(x),f(x-1))
, ganti tanda kutip dengan backticks.Perl, 33 byte
Jalankan dengan
-M5.010
atau-E
:sumber
k, 27 byte
Output seperti yang ditentukan
Contoh:
Ini dapat dipersingkat lebih dengan tidak memformat output dan hanya mengembalikan daftar bilangan bulat:
sumber
jq, 46 karakter
(45 karakter kode + 1 opsi baris perintah karakter)
Contoh dijalankan:
Tes online
sumber
Vim,
3229 penekanan tombolTerima kasih kepada @daniero untuk bantuan dalam menghemat beberapa penekanan tombol dan membuat hasilnya sedikit lebih rapi.
<Enter>
aku s Enter<Ctrl-x>
adalah Ctrl+XPenjelasan:
Format output:
Setiap angka berada pada baris terpisah seperti di bawah ini.
sumber
<CR>
dalam konteks Vim) setelah:pu=strftime('%Y')
? Anda juga dapat melewati beberapa penekanan tombol dengan menggunakanY
salinan seluruh baris. Secara total::pu=strftime('%Y')<CR>qqYp<Ctrl-x>q118@q
- 30 penekanan tombol=
register:"=strftime('%Y')<CR>pqqYp<Ctrl-x>q118@q
- 29 penekanan tombol, dan itu menghilangkan baris kosong pertamadate
utilitas::.!date +\%Y<CR>qqYp<C-x>q118@q