Prática Pyth 2


21

Hora de outra prática de Pyth. Apresento aqui 8 declarações de problemas com uma solução Pyth cada. Essas soluções são escritas por um iniciante em Pyth. Ele está muito feliz com essas soluções, pois são muito mais curtas que as respostas do Python. Sua tarefa, porém, é mostrá-lo melhor. Crie programas equivalentes, mas mais curtos.

Este é um desafio sobre os truques e otimizações que podem ser usados ​​ao jogar golfe em Pyth. Os jogadores de Pyth podem reconhecer muitos dos truques envolvidos, que levam a soluções mais curtas. No entanto, alguns problemas exigirão algumas abordagens incomuns que raramente são usadas. Alguns dos truques que eu realmente nunca vi na natureza. Mas nenhuma solução requer erros ou comportamento estranho, que não foi intencional pelo (s) projetista (s) de Pyth. Todas as respostas devem ser válidas para o Pyth commit mais recente ( 2b1562b ) a partir da postagem desta pergunta. Você pode usar o intérprete Pythpara teste. Ele está atualizado no momento e não espero grandes mudanças no Pyth, que invalidem as soluções ideais ou tornem possíveis soluções mais curtas. O intérprete online também apresenta a nova referência de personagem. Como é bastante novo, você também pode (deve) usar os documentos antigos , caso algo esteja incorreto ou ausente.

Objetivo: as soluções de referência totalizam 81 bytes. Seu objetivo é superar isso o máximo possível. A submissão que resolve todos os 8 problemas com o menor número total de bytes vence. O desempate é a data de envio.

Obviamente, apenas os envios são válidos, que contêm soluções para todos os 8 problemas. Você pode usar a implementação de referência, se não puder melhorar a pontuação de um (ou mais) problema específico.

Suas soluções devem imprimir exatamente a mesma saída que as soluções de referência. Exceto por uma nova linha opcional à direita.

Como essa é uma prática Pyth, somente programas escritos no idioma Pyth são permitidos.

Resposta: Por favor, esclareça toda a sua resposta, exceto a pontuação total. Pretende-se que você não veja as respostas de outras pessoas antes de enviar as suas. Você pode criar spoilers colocando>! na frente de cada linha, como:

>! Problem 1: V9m?>dNd0S9 (11 bytes)
>! Problem 2: VTN)VGN (7 bytes)
>! ...

Espero não ter escolhido problemas muito difíceis ou triviais. Esperando que muitos participantes e que todos obtenham algumas novas idéias sobre Pyth. Feliz golfe!

Problema 1:

Crie a seguinte matriz 9x9 e imprima-a:

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 3, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 4, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 5, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 6, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 7, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 8, 9]
[0, 0, 0, 0, 0, 0, 0, 0, 9]

Solução de referência ( Link ):

V9m?>dNd0S9 (11 bytes)

Problema 2:

Imprima todos os dígitos e letras em linhas separadas:

0
...
9
a
...
z

Solução de referência ( Link ):

VTN)VGN (7 bytes)

Problema 3:

Encontre o palíndromo lexicograficamente menor, que é lexicograficamente maior ou igual a uma sequência de entrada que contém letras minúsculas e é a mesma que a sequência de entrada.

a -> a
abc -> aca
adcb -> adda

Solução de referência ( Link ):

hf&gTzqT_T^Glz (14 bytes)

Problema 4:

Verifique se um número está no intervalo [0, número de entrada). Isso também deve funcionar para carros alegóricos.

4, 6 -> True
5.5, 6 -> True
6, 6 -> False
6, 6.1 -> True

Solução de referência ( Link ):

&gQ0<QE (7 bytes)

O formato de referência é to be tested value<newline>end value. No entanto, você pode escolher um formato de entrada diferente. Importante é apenas que você realize a declaração do problema e produza os resultados corretos.

Problema 5:

Analise uma sequência de entrada do formato "\ d + [a-zA-Z] +". Observe que o número realmente precisa ser um número, não uma sequência contendo dígitos.

'123Test' -> [123, 'Test']

Solução de referência ( Link ):

A.ggk\Az,sGH (12 bytes)

Problema 6:

Calcule a soma dos números separados por uma ou várias vírgulas. Você pode assumir que há pelo menos um número na string.

11,2,,,3,5,,8 -> 29

Solução de referência ( Link ):

svM:z",+"3 (10 bytes)

Problema 7:

Leia números inteiros positivos da entrada até obter o número 0. Imprima a soma de todos os números.

Solução de referência ( Link ):

WJE=+ZJ)Z (9 bytes)

Problema 8:

Resuma todos os elementos de uma matriz quadrada, exceto os da diagonal principal (canto superior esquerdo e canto inferior direito).

Solução de referência ( Link ):

-ssQs.e@bkQ (11 bytes)

Eu realmente gosto da idéia de perguntas específicas do idioma (e eu votei nessa aqui). Mas eu pensei que perguntas específicas da linguagem eram desaprovadas no PPCG?
Luis Mendo

3
@LuisMendo Acho que as perguntas específicas de um idioma são apenas desaprovadas, se a razão por trás da pergunta for uma aversão geral a idiomas de golfe como CJam, Pyth, ..., ou porque o OP só entende determinados idiomas. Isso aqui é um pouco diferente. Esta questão foi criada principalmente para mostrar alguns dos recursos mais ocultos de uma linguagem popular (no PPCG). De certa forma, é como uma coleção de truques. Não faz sentido permitir isso em todos os idiomas. Aqui está um meta-post sobre este tópico: link
Jakube 28/12

Em 6, os números são números inteiros positivos de um dígito?
Xnor

@xnor Você pode assumir que eles são positivos, mas podem consistir em mais de um dígito. Vou mudar o caso de teste.
Jakube

11
Estou votando para encerrar esta questão como fora de tópico, porque é um desafio de várias partes sem interação entre as partes
pppery 07/11

Respostas:


9

59 58 56 bytes

Problema 1:

j.tmLdS9Z (9 bytes)

Problema 2:

MTjG (5 bytes) (o primeiro caractere é uma nova linha)

Problema 3:

h.f_IZ1z (8 bytes)

Problema 4:

%IQE (4 bytes)

Problema 5:

,J.vz-zJ (8 bytes)

Problema 6:

srXz\,d7 (8 bytes)

Problema 7:

u+GE0 (5 bytes)

Problema 8:

ss.DR~hZQ (9 bytes)


2

66 bytes

1. 10 bytes: V9+mZN}hN9
2. 6 bytes: jUT)jG
3. 8 bytes: h.f_IZ1z
4. (implementação de referência) 7 bytes: &gQ0<QE
5. 11 bytes:,sK-rzZG-zK
6. 7 bytes: ssMcz\,
7. 8 bytes: s<.Qx.QZ
8. 9 bytes:ss.eXbkZQ


2

68 67 66 65 bytes

Tarefa 1

10 bytes: V9m*d>dNS9

Tarefa 2

5 bytes:, \nMTjGem que\n está uma nova linha

Tarefa 3

9 bytes: h.fqZ_Z1z

Tarefa 4

5 bytes: qQ%QE

Tarefa 5

Solução de referência, 12 bytes: A.ggk\Az,sGH

Tarefa 6

7 bytes: ssMcz\,

Tarefa 7

8 bytes: s<.Qx.Q0

Tarefa 8

9 bytes: ss.DVQUlQ


1

54 bytes

Aqui estão as soluções pretendidas. Exceto para a tarefa 8, todas as soluções foram encontradas.

1. j.tmLdS9Z (9 bytes) usando o mapa para o mapa esquerdo, transponha e preencha com zeros
2. \ nMTjG (5 bytes) usa novas linhas para o mapa
3. h.f_IZ1z (8 bytes) gera as possíveis sequências com .f
4 .% IQE (4 bytes) encontrou um caso de uso, em que o operador invariável precisa de 2 parâmetros
5., J.vz-zJ (8 bytes) .v avalia apenas a primeira instrução de uma string e ignora o restante
6. ssMcz \, ( 7 bytes) s "" = 0
7. u + GE0 (5 bytes) reduz até atingir um número conhecido
8. ss.DVQUQ (8 bytes) exclui a diagonal usando vetorização


Porra, eu esqueci de Ufazer lnas listas!
lirtosiast

11
Bom em bater isaacg em seu próprio idioma.
Stan Strum

1

 60 59  57 bytes

1. 9 bytes :j.tmRdS9Z


2. 6 bytes :jbUTjG


3. 8 bytes :h.f_IZ1z


4. 4 bytes :}sEU


5. 8 bytes :,K.vz-zK


6. 7 bytes :ssMcz\,


7. 8 bytes :s<FxB.Q0


8. 11 10 7 bytes : ss.DVQU Versão anterior:ss.e+<bk>bh

Observe que eu desenvolvi essas soluções de forma completamente independente de outras respostas, embora eu esteja atrasado para a festa.


Boa tentativa. Terceiro problema são 8 bytes embora.
Jakube

E tenho certeza de que a solução para o problema 8 não foi compilada na época. Mas eu não testei.
Jakube 11/11

@Jakube Oh, obrigado por perceber!
Mr. Xcoder
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.