Versi Ubuntu mana yang didukung?

16

Diberikan tanggal input, entri Anda akan menampilkan daftar lengkap versi distro Ubuntu Linux yang didukung pada tanggal tersebut.

Daftar lengkap semua rilis adalah sebagai berikut:

Versi Kode nama Tanggal rilis Didukung hingga

4.10 Warty Warthog 2004-10-20 2006-04-30
5.04 Hoary Hedgehog 2005-04-08 2006-10-31
5.10 Breezy Badger 2005-10-13 2007-04-13
6.06 LTS Dapper Drake 2006-06-01 2009-07-14 2011-06-01 (Server)
6.10 Edgy Eft 2006-10-26 2008-04-25
7.04 Feisty Fawn 2007-04-19 2008-10-19
7.10 Gutsy Gibbon 2007-10-18 2009-04-18
8.04 LTS Hardy Heron 2008-04-24 2011-05-12 2013-05-09 (Server)
8.10 Intrepid Ibex 2008-10-30 2010-04-30
9.04 Jaunty Jackalope 2009-04-23 2010-10-23
9.10 Karmic Koala 2009-10-29 2011-04-30
10,04 LTS Lucid Lynx 2010-04-29 2013-05-09 2015-04-30 (Server)
10.10 Maverick Meerkat 2010-10-10 2012-04-10
11.04 Natty Narwhal 2011-04-28 2012-10-28
11.10 Oneiric Ocelot 2011-10-13 2013-05-09
12,04 LTS Pangolin Tepat 2012-04-26 2017-04-26
12.10 Quantal Quetzal 2012-10-18 2014-05-16
13,04 Raring Ringtail 2013-04-25 2014-01-27
13.10 Saucy Salamander 2013-10-17 2014-07-17
14,04 LTS Trusty Tahr 2014-04-17 2019-04
14.10 Utopic Unicorn 2014-10-23 2015-07-23
15.04 Vivid Vervet 2015-04-23 2016-01
15.10 Wily Werewolf 2015-10-22 2016-07
16,04 LTS Xenial Xerus 2016-04-21 2021-04

Aturan

  • Untuk setiap versi yang didukung, string versi yang tepat akan ditampilkan, misalnya 4.10
  • Untuk versi LTS (dukungan jangka panjang), LTSakan ditambahkan ke versi
  • Tiga versi LTS tertua datang dalam dua rasa - desktop dan server. Jika kedua versi LTS ini didukung pada tanggal yang diberikan, output hanya akan menjadi string versi seperti di atas. Namun jika hanya versi server yang didukung, maka Anda harus menambahkan -serverhingga akhir string versi
  • Pada saat penulisan, 4 versi terbaru hanya memiliki YYYY-MM di tanggal yang didukung-sampai. Anda harus memperlakukan tanggal ini seolah-olah itu adalah hari terakhir dari bulan yang diberikan. mis. 2019-04 harus diperlakukan sebagai 2019-04-30
  • Tidak akan ada output untuk tanggal di luar rentang tanggal lengkap yang ditangkap dalam tabel
  • Format tanggal input fleksibel, tetapi harus mengandung beberapa enumerasi Tahun, Bulan dan Hari. Jumlah hari atau detik (atau unit lain) dari zaman bukanlah format input yang valid.
  • Daftar keluaran dapat diberikan dalam format apa pun yang sesuai untuk bahasa Anda
  • Anda dapat menggunakan fungsi datetime dari bahasa Anda
  • Anda dapat menganggap semua input valid

Contoh:

Input output:

2000-01-01    
2004-10-20 4.10
2005-05-05 4.10, 5.04
2006-06-06 5.04, 5.10, 6.06LTS
2010-10-10 6.06LTS-server, 8.04LTS, 9.04, 9.10, 10.04LTS, 10.10
2021-04-30 16.04LTS
2021-05-01    
Trauma Digital
sumber
4
Breezy Badger ...?
Alex A.
Beberapa contoh Anda salah. 2010-10-10harus kembali6.06LTS-server, 8.04LTS, 9.04, 9.10LTS, 10.04LTS, 10.10
Mwr247
@ Mwr247 Terima kasih - Saya memperbaikinya. Apakah Anda melihat kesalahan lain?
Trauma Digital
@ Mwr247 Ah - Saya lupa mengutip string tanggal saat beralih ke fungsi.
Trauma Digital
1
@DigitalTrauma Whoops! Saya telah menghapus pengelompokan di sana untuk menyimpan dua karakter, tetapi tidak menyadari efeknya pada aspek kondisi tersebut. Sudah diperbaiki sekarang.
Mwr247

Jawaban:

5

JavaScript (ES6), 552 byte

d=>(d=d.replace(/^20|-/g,'')*1,[for(r of'41020,60430;50408,61031;51013,70413;-60601,90714,110601;61026,80425;70419,81019;71018,90418;-80424,110512,130509;81030,100430;90423,101023;-91029,110430;-100429,130509,150430;101010,120410;110428,121028;111013,130509;-120426,170426;121018,140516;130425,140127;131017,140717;-140417,190430;141023,150723;150423,160131;151022,160731;-160421,210430'.split`;`.map(a=>a.split`,`))if(d>=(a=Math.abs(f=r[0]))&&((m=d<=r[1])||r[2]&&d<=r[2]))((a+'').slice(-6,-2)/100).toFixed(2)+'LTS'.slice(f)+(m?'':'-server')].join`, `)

Membangun array data membutuhkan ~ 68% dari total ukuran. Sisanya adalah pemformatan input, pencarian array, dan konstruksi string keluaran.

String data dibagi menjadi array array dengan panjang 2 (normal) atau 3 (server). Tanggal direduksi menjadi format numerik, dengan awal "20" dilucuti (bersama dengan nol terkemuka setelah itu). LTS dilambangkan dengan tanggal mulai negatif. Nomor versi dapat dengan mudah diturunkan dari semua kecuali dua digit terakhir dari tanggal mulai positif, dibagi dengan 100.

Mwr247
sumber
Woohoo - jawaban pertama! Maaf - saya pemula JS - dapatkah saya menguji ES6 di browser? Atau apa cara termudah untuk memverifikasi?
Trauma Digital
@ DigitalTrauma Ya, cukup tetapkan fungsi ke variabel (tambahkan F=sebelum kode di atas) dan kemudian panggil fungsi itu saja ( F("2010-10-10")). Anda dapat menjalankannya di konsol pengembang browser modern apa pun (kunci f12).
Mwr247
+1 - Terlihat bagus sekarang! (tidak yakin mengapa saya menaruh komentar saya sebelumnya terhadap pertanyaan saya sendiri dan bukan jawaban Anda - oh well - Anda mengerti intinya :))
Digital Trauma