Atualmente, o Python é a principal linguagem de programação que mais cresce. É o idioma mais procurado pelo terceiro ano consecutivo, o que significa que os desenvolvedores que ainda não o utilizam dizem querer aprender. [1]
A razão para a popularidade do Python são suas muitas versões. [citação necessário] Na verdade, existem 116 versões do Python, incluindo duas versões de desenvolvimento.
Sua tarefa é produzir / imprimir uma lista de todas as versões do Python, na ordem que você desejar e no formato que você desejar. Você não pode usar nenhuma função interna que tenha essas informações armazenadas.
Você é livre para escolher o formato de saída, mas cada versão devem ser identificadas na medida padrão: 1.1
, 2.3.0
, 2.7.10
e assim por diante.
A lista completa 2 de versões do Python, separadas por vírgula, é mostrada abaixo:
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
ou pelas principais versões:
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
O desafio é um desafio de saída fixo e muito próximo de um desafio de kolmogorov , exceto que o formato de saída é opcional.
2 A lista é retirada do site oficial do Python, aqui e aqui . Existem algumas versões que não estão incluídas, como 0.9.0
.. 0.9.9
e 1.5.1p1
. Você deve usar a lista acima, mesmo se encontrar versões que não estão incluídas. Eu decidi ficar com as listas oficiais, pois caso contrário alguém provavelmente encontraria uma 2.1.0.1.2
versão ou algo assim.
fonte
1.1.0
(para fazer todas as versões 3 números) em vez de1.1
?Respostas:
JavaScript (ES6),
128 125124 bytesGuardado 1 bytes graças a @ OlivierGrégoire
Produz cada versão em uma linha separada. Ordenado da versão principal mais alta para a mais baixa e da revisão mais baixa para a mais alta.
Experimente online!
Quão?
As versões principal e secundária são mantidas na variável :v ∈ [ 0..27 ]
A revisão é realizada na variável . O valor máximo de depende de é armazenado em uma tabela de pesquisa codificada na Base-36. Qualquer nesta tabela significa que esta versão não foi lançada.r ≥ 0 r v 0 0
Além disso, usamos o teste para saber se a revisão deve ser incluída mesmo quando é (iniciando no Python 3.3.0).v > 22 0 0
fonte
C # (compilador interativo do Visual C #) , 109 bytes
Contém muitos não imprimíveis, cujos códigos são mostrados entre colchetes. Este é um programa completo. Os bytes nulos são substituídos por
\0
s no link TIO, pois meu dispositivo não pode copiá-los e colá-los.Guardou um byte graças a @OlivierGregoire.
Experimente online! (Obrigado a @OlivierGregoire por implantar os bytes nulos)
Explicação
Cada caractere na sequência representa quantas versões secundárias na posição principal. Por exemplo, o caractere no índice 5 (
ETX
) tem um valor ASCII de três e corresponde à versão principal1.5.x
que possui três versões secundárias. O programa pega o valor ascii do caractere atual e faz o loop várias vezes, imprimindo as versões secundárias antes de passar para a próxima versão principal.Para algumas versões, existem lacunas nas próximas versões. Para corrigir isso, a cadeia contém bytes nulos, para que o programa faça um loop zero vezes quando os encontrar.
A sequência não imprimível contém estes valores de caracteres:
fonte
j="..."[k];j-->0;
, principalmente porque o pedido não tem importância. Além disso, você pode explicar a diferença de tamanho entre o TIO (115 bytes) e a entrada (110 bytes)?\0
s fossem substituídos por bytes nulos, seriam 110 bytesPitão, 52 bytes
Experimente online aqui .
Saída é uma lista aninhada, com elementos agrupados por versão principal e secundária. Há uma lista vazia no início da saída e outra depois
1.6
. A saída total é a seguinte:Se isso não for aceitável, acrescente
.n
ao código a saída como uma lista nivelada, a um custo de 2 bytes.fonte
Java (JDK) , 134 bytes
Experimente online!
As versões são impressas da mais alta para a mais baixa.
Créditos
fonte
(a>1|b>0)&c<a.valueOf(y,36)
pode sera>1|b>0&&c<a.valueOf(y,36)
ec<1&(a<3|b<3)?
pode serc<1&&a<3|b<3?
para salvar 2 bytes. Dica Java relevante - seção Combinando verificações bit a bit e lógicas em vez de usar parênteses/10d
pode ser*.1
int a=28
->int a=1
e remova a condição no loop for e adicione uma++
para salvar 3 bytes. TIORetina , 105 bytes
Experimente online! Basicamente baseado na solução da @ Arnauld. Explicação:
Insira a sequência que consiste em 11 espaços seguidos pelos caracteres fornecidos.
Para cada caractere, liste o sufixo com a
_
e seu número da coluna.Converta as três letras em valores numéricos.
Converta os valores numéricos em unário.
Para cada valor até o valor especificado, use-o como sufixo para o número da versão, extraindo o maior e o menor do número da coluna.
Exclua o sufixo zero para as 16 primeiras versões que possuem um.
fonte
Geléia , 51 bytes
Experimente online!
Um link niládico que gera uma lista de listas de
.
números inteiros separados, agrupados por versão principal. No TIO, há algum código de rodapé para imprimi-las lindamente.fonte
33 , 484 bytes
Eu queria experimentar isso na minha linguagem cerebral.
Ele imprime cada versão python necessária para o desafio, delimitada por novas linhas.
Aqui está uma pequena explicação.
fonte