Welche Ubuntu-Versionen werden unterstützt?

15

Bei einem bestimmten Eingabedatum gibt Ihr Eintrag die vollständige Liste der unterstützten Versionen der Ubuntu Linux-Distribution an diesem Datum aus.

Die vollständige Liste aller Releases lautet wie folgt:

Versionscode Name Erscheinungsdatum Unterstützt bis

4.10 Warzenschwein 2004-10-20 2006-04-30
5.04 Hoary Hedgehog 2005-04-08 2006-10-31
5.10 Windiger Dachs 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 18.10.2007 18.04.2009
8.04 LTS Hardy Heron 2008-04-24 2011-05-12 2013-05-09 (Server)
8.10 Unerschrockener Steinbock 30.10.2008 30.04.2010
9.04 Jaunty Jackalope 2009-04-23 2010-10-23
9.10 Karmischer Koala 2009-10-29 2011-04-30
10.04 LTS Lucid Lynx 29.04.2010 09.05.2013 30.04.2015 (Server)
10.10 Außenseiter Erdmännchen 2010-10-10 2012-04-10
11.04 Natty Narwhal 2011-04-28 2012-10-28
11.10 Oneiric Ocelot 13.10.2011 2013-05-09
12.04 LTS Precise Pangolin 2012-04-26 2017-04-26
12.10 Quantal Quetzal 2012-10-18 2014-05-16
13.04 Raring Ringtail 25.04.2013 27.01.2014
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

Regeln

  • Für jede unterstützte Version wird der genaue Versionsstring ausgegeben, z 4.10
  • Für LTS-Versionen (Long Term Support) LTSwird an die Version angehängt
  • Die drei ältesten LTS-Versionen gibt es in zwei Varianten - Desktop und Server. Wenn beide LTS-Versionen am angegebenen Datum unterstützt werden, ist die Ausgabe einfach die Versionszeichenfolge wie oben. Wenn jedoch nur die Serverversion unterstützt wird, müssen Sie -serverdas Ende der Versionszeichenfolge anhängen
  • Zum Zeitpunkt des Schreibens haben 4 der neueren Versionen nur JJJJ-MM in ihren unterstützten Enddaten. Sie müssen diese Daten so behandeln, als ob sie der letzte Tag des angegebenen Monats wären. zB 2019-04 muss als 2019-04-30 behandelt werden
  • Daten außerhalb des in der Tabelle erfassten vollständigen Datumsbereichs werden nicht ausgegeben
  • Eingabe-Datumsformate sind flexibel, müssen jedoch eine Aufzählung von Jahr, Monat und Tag enthalten. Anzahl der Tage oder Sekunden (oder andere Einheiten) aus einer Epoche sind keine gültigen Eingabeformate.
  • Ausgabelisten können in jedem für Ihre Sprache geeigneten Format angegeben werden
  • Sie können datetime-Funktionen in Ihrer Sprache verwenden
  • Sie können davon ausgehen, dass alle Eingaben gültig sind

Beispiele:

Input-Output:

2000-01-01    
20.10.2004 4.10
2005-05-05 4.10, 5.04
2006-06-06 5.04, 5.10, 6.06LTS
10.10.2010 6.06LTS-Server, 8.04LTS, 9.04, 9.10, 10.04LTS, 10.10
2021-04-30 16.04LTS
2021-05-01    
Digitales Trauma
quelle
4
Luftiger Dachs ...?
Alex A.
Einige Ihrer Beispiele sind falsch. 2010-10-10sollte zurückkehren6.06LTS-server, 8.04LTS, 9.04, 9.10LTS, 10.04LTS, 10.10
Mwr247
@ Mwr247 Danke - ich habe das behoben. Sehen Sie weitere Fehler?
Digital Trauma
@ Mwr247 Ah - Ich habe vergessen, die Datumszeichenfolge bei der Übergabe an eine Funktion anzugeben.
Digital Trauma
1
@DigitalTrauma Whoops! Ich hatte eine Gruppierung dort entfernt, um zwei Zeichen zu speichern, aber ich wusste nicht, wie sich dies auf diesen Aspekt der Bedingung auswirkte. Es ist jetzt behoben.
Mwr247

Antworten:

4

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

Das Erstellen des Datenarrays nimmt ca. 68% der Gesamtgröße ein. Der Rest besteht aus der Eingabeformatierung, der Array-Suche und dem Aufbau der Ausgabezeichenfolge.

Die Datenzeichenfolge wird in ein Array von Arrays mit einer Länge von 2 (normal) oder 3 (Server) aufgeteilt. Die Daten werden auf das numerische Format reduziert, wobei die Anfangszahl "20" (zusammen mit den führenden Nullen danach) entfernt wird. LTS wird durch ein negatives Startdatum gekennzeichnet. Versionsnummern können bequem aus allen bis auf die letzten beiden Ziffern des positiven Startdatums, geteilt durch 100, abgeleitet werden.

Mwr247
quelle
Woohoo - erste Antwort! Entschuldigung - ich bin ein JS-Neuling - kann ich ES6 irgendwie in einem Browser testen? Oder wie lässt sich das am einfachsten überprüfen?
Digitales Trauma
@DigitalTrauma Ja, weisen Sie die Funktion einfach einer Variablen zu (fügen Sie sie F=vor dem obigen Code hinzu) und rufen Sie die Funktion dann einfach über diese auf ( F("2010-10-10")). Sie können es in jeder modernen Browser-Entwicklerkonsole ausführen (F12-Taste).
Mwr247
+1 - Sieht jetzt gut aus! (nicht sicher, warum ich meine vorherigen Kommentare gegen meine eigene Frage und nicht Ihre Antwort - na ja - Sie haben den Punkt bekommen :))
Digital Trauma