Какие версии Ubuntu поддерживаются?

16

Учитывая дату ввода, ваша запись выведет полный список поддерживаемых версий дистрибутива Ubuntu Linux на эту дату.

Полный список всех релизов выглядит следующим образом :

Версия Кодовое название Дата выпуска Поддерживается до

4.10 Warty Warthog 2004-10-20 2006-04-30
5.04 Седой Еж 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 (Сервер)
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 (Сервер)
8.10 Intrepid Ibex 2008-10-30 2010-04-30
9.04 Jaunty Jackalope 2009-04-23 2010-10-23
9.10 Кармическая Коала 2009-10-29 2011-04-30
10.04 LTS Lucid Lynx 2010-04-29 2013-05-09 2015-04-30 (Сервер)
10.10 Maverick Meerkat 2010-10-10 2012-04-10
11.04 Натти Нарвал 2011-04-28 2012-10-28
11.10 Oneiric Ocelot 2011-10-13 2013-05-09
12.04 LTS Precise Pangolin 2012-04-26 2017-04-26
12.10 Квантовая Кецаль 2012-10-18 2014-05-16
13,04 рвения 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

правила

  • Для каждой поддерживаемой версии будет выведена точная строка версии, например 4.10
  • Для версий LTS (долгосрочная поддержка), LTSбудут добавлены к версии
  • Три самые старые версии LTS выпускаются в двух вариантах - для настольных компьютеров и серверов. Если обе эти версии LTS поддерживаются на данную дату, выводом будет просто строка версии, как указано выше. Однако, если поддерживается только версия сервера, вы должны добавить -serverв конец строки версии
  • На момент написания этой статьи 4 из последних версий имели только YYYY-MM в поддерживаемых до даты. Вы должны относиться к этим датам, как если бы они были последним днем ​​данного месяца. например, 2019-04 должен рассматриваться как 2019-04-30
  • Для дат за пределами полного диапазона дат, зафиксированного в таблице, вывод не будет
  • Форматы вводимых дат являются гибкими, но должны содержать некоторые перечисления года, месяца и дня. Количество дней или секунд (или других единиц) из эпохи не являются допустимыми форматами ввода.
  • Списки вывода могут быть предоставлены в любом формате, удобном для вашего языка
  • Вы можете использовать функции даты и времени на вашем языке
  • Вы можете предположить, что все данные верны

Примеры:

Ввод, вывод:

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-сервер, 8.04LTS, 9.04, 9.10, 10.04LTS, 10.10
2021-04-30 16.04LTS
2021-05-01    
Цифровая травма
источник
4
Breezy Badger ...?
Алекс А.
Некоторые из ваших примеров неверны. 2010-10-10должен вернуться6.06LTS-server, 8.04LTS, 9.04, 9.10LTS, 10.04LTS, 10.10
Mwr247
@ Mwr247 Спасибо - я исправил это. Вы видите другие ошибки?
Цифровая травма
@ Mwr247 Ах - я забыл процитировать строку даты при передаче функции.
Цифровая травма
1
@DigitalTrauma Ой! Я удалил группу, чтобы сохранить два символа, но не осознал, как это отразилось на этом аспекте условия. Это сейчас исправлено.
Mwr247

Ответы:

5

JavaScript (ES6), 552 байта

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`, `)

Построение массива данных занимает ~ 68% от общего размера. Остальное - форматирование ввода, поиск в массиве и построение выходной строки.

Строка данных разбивается на массив массивов длиной 2 (обычная) или 3 (серверная). Даты сокращаются до числового формата с удалением начального «20» (вместе с любыми начальными нулями после этого). LTS обозначается отрицательной датой начала. Номера версий могут быть легко получены из всех, кроме двух последних цифр положительной даты начала, разделенных на 100.

Mwr247
источник
Woohoo - первый ответ! Извините - я новичок в JS - могу ли я как-нибудь протестировать ES6 в браузере? Или какой самый простой способ проверить?
Цифровая травма
@DigitalTrauma Да, просто назначьте функцию переменной (добавьте F=перед кодом выше), а затем просто вызовите функцию через нее ( F("2010-10-10")). Вы можете запустить его в любой современной браузерной консоли разработчика (клавиша f12).
Mwr247
+1 - хорошо выглядит сейчас! (не уверен, почему я сравнил свои предыдущие комментарии со своим собственным вопросом, а не с вашим ответом - о, хорошо - вы поняли :))
Цифровая травма