Python jest obecnie najszybciej rozwijającym się głównym językiem programowania. Jest to najbardziej poszukiwany język trzeci rok z rzędu, co oznacza, że programiści, którzy jeszcze go nie używają, twierdzą, że chcą się go nauczyć. [1]
Powodem popularności Pythona jest jego wiele wersji. [potrzebne źródło] Istnieje w rzeczywistości 116 wersji Pythona, w tym dwie wersje programistyczne.
Twoim zadaniem jest wydrukowanie / wydrukowanie listy wszystkich wersji Pythona, w dowolnej kolejności i dowolnym formacie. Nie możesz używać żadnych wbudowanych funkcji, które przechowują te informacje.
Jesteś wolny, aby wybrać format wyjściowy, ale każda wersja muszą być identyfikowane w standardowy sposób: 1.1
, 2.3.0
, 2.7.10
i tak dalej.
Pełna lista 2 wersji Pythona, oddzielonych przecinkami, pokazano poniżej:
1.1, 1.2, 1.3, 1.4, 1.5, 1.5.1, 1.5.2, 1.6, 2.0, 2.0.1, 2.1, 2.1.1, 2.1.2, 2.1.3, 2.2, 2.2.1, 2.2.2, 2.2.3, 2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.4, 2.4.1, 2.4.2, 2.4.3, 2.4.4, 2.5, 2.5.1, 2.5.2, 2.5.3, 2.5.4, 2.6, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8, 2.6.9, 2.7, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10, 2.7.11, 2.7.12, 2.7.13, 2.7.14, 2.7.15, 2.7.16, 3.0, 3.0.1, 3.1, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5, 3.2 , 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6, 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7, 3.4.0, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 3.4.10, 3.5.0, 3.5.1, 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6, 3.5.7, 3.6.0, 3.6.1, 3.6.2, 3.6.3, 3.6.4, 3.6.5, 3.6.6, 3.6.7, 3.6.8, 3.7.0, 3.7.1, 3.7.2, 3.7.3
lub według głównych wersji:
1.1
1.2
1.3
1.4
1.5, 1.5.1, 1.5.2
1.6
2.0, 2.0.1
2.1, 2.1.1, 2.1.2, 2.1.3
2.2, 2.2.1, 2.2.2, 2.2.3
2.3, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5
2.4, 2.4.1, 2.4.2, 2.4.3, 2.4.4
2.5, 2.5.1, 2.5.2, 2.5.3, 2.5.4
2.6, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8, 2.6.9
2.7, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10, 2.7.11, 2.7.12, 2.7.13, 2.7.14, 2.7.15, 2.7.16
3.0, 3.0.1
3.1, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.1.5
3.2, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.2.5, 3.2.6
3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4, 3.3.5, 3.3.6, 3.3.7
3.4.0, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.4.5, 3.4.6, 3.4.7, 3.4.8, 3.4.9, 3.4.10
3.5.0, 3.5.1, 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6, 3.5.7
3.6.0, 3.6.1, 3.6.2, 3.6.3, 3.6.4, 3.6.5, 3.6.6, 3.6.7, 3.6.8
3.7.0, 3.7.1, 3.7.2, 3.7.3
Wyzwanie jest stałym wyzwaniem wyjściowym i bardzo zbliżonym do wyzwania kolmogorov , z wyjątkiem tego, że format wyjściowy jest opcjonalny.
2 Lista pochodzi z oficjalnej strony Python, tu i tutaj . Niektóre wersje nie są uwzględnione, takie jak 0.9.0
.. 0.9.9
i 1.5.1p1
. Musisz użyć powyższej listy, nawet jeśli znajdziesz wersje, które nie zostały uwzględnione. Postanowiłem trzymać się oficjalnych list, ponieważ w przeciwnym razie ktoś prawdopodobnie znalazłby 2.1.0.1.2
wersję lub coś takiego.
źródło
1.1.0
(aby wszystkie wersje miały 3 liczby) zamiast1.1
?Odpowiedzi:
JavaScript (ES6),
128 125124 bajtówZaoszczędzono 1 bajt dzięki @ OlivierGrégoire
Wyświetla każdą wersję w osobnym wierszu. Zamówienie od najwyższej do najniższej wersji głównej i od najniższej do najwyższej wersji.
Wypróbuj online!
W jaki sposób?
źródło
C # (interaktywny kompilator Visual C #) , 109 bajtów
Zawiera wiele niedrukowalnych, których kody są pokazane w nawiasach. To jest pełny program. Puste bajty są zastępowane przez
\0
s w łączu TIO, ponieważ moje urządzenie nie może ich skopiować i wkleić.Oszczędność jednego bajtu dzięki @OlivierGregoire.
Wypróbuj online! (Podziękowania dla @OlivierGregoire za wszczepienie bajtów zerowych)
Wyjaśnienie
Każdy znak w ciągu reprezentuje liczbę mniejszych wersji na głównej pozycji. Na przykład znak o indeksie 5 (
ETX
) ma wartość ASCII równą trzy i odpowiada głównej wersji,1.5.x
która ma trzy mniejsze wersje. Program pobiera wartość ascii bieżącego znaku i zapętla ją wiele razy, drukując wersje pomniejsze przed przejściem do następnej wersji głównej.W niektórych wersjach istnieją luki w następnych wersjach. Aby to naprawić, ciąg zawiera puste bajty, dzięki czemu program zapętla zero razy, gdy je napotka.
Niedrukowalny ciąg zawiera następujące wartości znaków:
źródło
j="..."[k];j-->0;
, zwłaszcza, że zamówienie nie ma znaczenia. Czy potrafisz także wyjaśnić różnicę wielkości między TIO (115 bajtów) a wpisem (110 bajtów)?\0
s zostały zastąpione bajtami zerowymi, byłoby to 110 bajtówPyth, 52 bajty
Wypróbuj online tutaj .
Dane wyjściowe to zagnieżdżona lista z elementami pogrupowanymi według wersji głównej i podrzędnej. Na początku danych wyjściowych jest pusta lista, a po niej następna
1.6
. Pełna wydajność jest następująca:Jeśli nie jest to do przyjęcia, wstaw
.n
się do kodu, aby uzyskać wynik w postaci spłaszczonej listy, kosztem 2 bajtów.źródło
Java (JDK) , 134 bajty
Wypróbuj online!
Wersje są drukowane od najwyższej do najniższej.
Kredyty
źródło
(a>1|b>0)&c<a.valueOf(y,36)
możnaa>1|b>0&&c<a.valueOf(y,36)
ic<1&(a<3|b<3)?
możnac<1&&a<3|b<3?
zapisać 2 bajty. Odpowiednia wskazówka Java - sekcja Łączenie bitowych i logicznych kontroli zamiast używania nawiasów/10d
może być*.1
int a=28
->int a=1
i usuń warunek z pętli for, a następnie dodaj,a++
aby zapisać 3 bajty. TIOSiatkówka , 105 bajtów
Wypróbuj online! Luźno oparty na rozwiązaniu @ Arnauld. Wyjaśnienie:
Wstaw ciąg składający się z 11 spacji i podanych znaków.
Dla każdego znaku wypisz go z a
_
oraz numerem kolumny.Konwertuj trzy litery na wartości liczbowe.
Konwertuj wartości liczbowe na jednoargumentowe.
Dla każdej wartości do podanej wartości użyj tego jako sufiksu numeru wersji, wyodrębniając major i minor z numeru kolumny.
Usuń sufiks zero dla pierwszych 16 wersji, które go mają.
źródło
Galaretka , 51 bajtów
Wypróbuj online!
Łącze niladyczne, które wyświetla listę list
.
oddzielnych liczb całkowitych, pogrupowanych według wersji głównej. W TIO jest trochę stopki, by ładnie je wydrukować.źródło
33 , 484 bajty
Chciałem to wypróbować w moim języku w stylu brainf * ck.
Drukuje każdą wersję Pythona wymaganą dla wyzwania, oddzieloną znakami nowej linii.
Oto małe wyjaśnienie.
źródło