Quelles versions d'Ubuntu sont prises en charge?

16

Étant donné une date d'entrée, votre entrée affichera la liste complète des versions prises en charge de la distribution Ubuntu Linux à cette date.

La liste complète de toutes les versions est la suivante:

Version Nom du code Date de sortie Pris en charge jusqu'à

4.10 Phacochère verruqueux 2004-10-20 2006-04-30
5.04 Hérisson Hoary 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 (Serveur)
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 (Serveur)
8.10 Bouquetin intrépide 2008-10-30 2010-04-30
9.04 Jaunty Jackalope 2009-04-23 2010-10-23
9.10 Koala karmique 2009-10-29 2011-04-30
10.04 LTS Lucid Lynx 2010-04-29 2013-05-09 2015-04-30 (serveur)
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 Precise Pangolin 2012-04-26 2017-04-26
12.10 Quetzal quantique 2012-10-18 2014-05-16
13.04 Ringing Ringtail 2013-04-25 2014-01-27
13.10 Salamandre grasse 2013-10-17 2014-07-17
14.04 LTS Trusty Tahr 2014-04-17 2019-04
14.10 Licorne utopique 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

Règles

  • Pour chaque version prise en charge, la chaîne de version exacte sera sortie, par exemple 4.10
  • Pour les versions LTS (support à long terme), LTSsera ajouté à la version
  • Les trois versions LTS les plus anciennes sont disponibles en deux versions: ordinateur de bureau et serveur. Si ces deux versions LTS sont prises en charge à la date indiquée, la sortie sera simplement la chaîne de version comme ci-dessus. Cependant, si seule la version du serveur est prise en charge, vous devez ajouter -serverà la fin de la chaîne de version
  • Au moment de la rédaction du présent document, 4 des versions récentes ne comportent que YYYY-MM dans leurs dates de prise en charge. Vous devez traiter ces dates comme si elles étaient le dernier jour du mois donné. par exemple 2019-04 doit être traité comme 2019-04-30
  • Il n'y aura pas de sortie pour les dates en dehors de la plage de dates complète capturée dans le tableau
  • Les formats de date d'entrée sont flexibles, mais doivent contenir une énumération de l'année, du mois et du jour. Le nombre de jours ou de secondes (ou d'autres unités) d'une époque ne sont pas des formats d'entrée valides.
  • Les listes de sortie peuvent être fournies dans le format qui convient à votre langue
  • Vous pouvez utiliser les fonctions datetime de votre langue
  • Vous pouvez supposer que toutes les entrées sont valides

Exemples:

Entrée sortie:

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    
Traumatisme numérique
la source
4
Breezy Badger ...?
Alex A.
Certains de vos exemples sont incorrects. 2010-10-10devrait revenir6.06LTS-server, 8.04LTS, 9.04, 9.10LTS, 10.04LTS, 10.10
Mwr247
@ Mwr247 Merci - j'ai corrigé celui-là. Voyez-vous d'autres erreurs?
Digital Trauma
@ Mwr247 Ah - J'ai oublié de citer la chaîne de date lors du passage à une fonction.
Digital Trauma
1
@DigitalTrauma Whoops! J'avais supprimé un groupe là-bas pour enregistrer deux personnages, mais je ne réalisais pas l'effet qu'il avait sur cet aspect de la condition. C'est réparé maintenant.
Mwr247

Réponses:

5

JavaScript (ES6), 552 octets

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

La construction du tableau de données occupe environ 68% de la taille totale. Le reste est le formatage d'entrée, la recherche de tableau et la construction de chaîne de sortie.

La chaîne de données est divisée en un tableau de tableaux de longueur 2 (normale) ou 3 (serveur). Les dates sont réduites au format numérique, avec le "20" initial supprimé (avec tous les zéros en tête après cela). LTS est indiqué par une date de début négative. Les numéros de version peuvent être facilement dérivés de tous, sauf les deux derniers chiffres de la date de début positive, divisés par 100.

Mwr247
la source
Woohoo - première réponse! Désolé - je suis novice JS - puis-je tester ES6 dans un navigateur d'une manière ou d'une autre? Ou quelle est la façon la plus simple de vérifier?
Digital Trauma
@DigitalTrauma Oui, affectez simplement la fonction à une variable (ajoutez F=avant le code ci-dessus), puis appelez simplement la fonction à travers elle ( F("2010-10-10")). Vous pouvez l'exécuter dans n'importe quelle console de développeur de navigateur moderne (touche f12).
Mwr247
+1 - Ça a l'air bien maintenant! (Je ne sais pas pourquoi j'ai mis mes commentaires précédents contre ma propre question et non votre réponse - eh bien - vous avez compris :))
Digital Trauma