Prática de golfe: Pitão [fechado]


10

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. No entanto, abordagens e construções desconhecidas podem estar envolvidas; portanto, dê uma olhada nas Dicas do Pyth e na Referência do Personagem do Pyth, se você ficar preso. As soluções podem ser testadas aqui .

Objetivo: existem 8 problemas, cada um com um snippet Pyth para você otimizar. Seu objetivo é criar algo equivalente, mas mais curto. As soluções de referência totalizam 80 bytes. Seu objetivo é superar isso o máximo possível.

O vencedor irá para o envio que resolve todos os 8 problemas com o menor número total de bytes. O desempatador é uma publicação anterior.

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.

Cada envio deve responder a todos os problemas e fornecer a contagem de bytes correspondente, mas fique à vontade para usar a implementação de referência, se você não puder melhorá-la.

Detalhes: Se a pergunta chamadas para um determinado valor ou de saída, qa igualdade é desejado, então 1e !0são equivalentes. Se a pergunta exigir um teste para verificar se uma condição é verdadeira, a saída deve ser verdadeira se a condição for verdadeira e falsa se a condição for falsa, mas sem restrições além disso. Você não pode trocar true por false e false por true. Se a pergunta exigir que algo seja impresso, nada poderá ser impresso, exceto uma nova linha à direita.

Todas as respostas devem ser válidas para o Pyth commit mais recente a partir da postagem desta pergunta.

Problema 1: Dado um conjunto em Q, produza uma lista contendo os elementos de Q em qualquer ordem.

; 3 bytes
f1Q

Problema 2: Saída da lista [1, 1, 0, 0, 1, 1, 0].

; 9 bytes
[J1JZZJJZ

Problema 3: Dado um número inteiro positivo em Q, teste se todos os dígitos de Q são positivos (e não zero).

; 7 bytes
!f!TjQT

Problema 4: Dada uma sequência em z, teste se z contém aspas - "ou '.

; 9 bytes
|}\'z}\"z

Problema 5: Mapa Q = 1 para 'Ganhar', Q = 0 para 'Empate' e Q = -1 para 'Perder'.

; 20 bytes
@["Tie""Win""Lose")Q

Problema 6: Imprimir 0123456789.

; 6 bytes
sm`dUT

Problema 7: Dada uma sequência em z, conte o número de inversões.

(Índices ie jformar uma inversão se i < jmas z[i] > z[j]).

; 17 bytes
ssmm>@zd@zkrdlzUz

Problema 8: Dada uma lista em z, conte o número de elementos adjacentes repetidos.

; 9 bytes
lfqFT.:z2

@ user1737909 Essa resposta está correta. f1Qfiltra Quma função que é sempre verdadeira, portanto sempre gera todos os elementos do conjunto. fgera uma lista, que atende ao objetivo nessa pergunta.
— Isaacg

Estou encerrando esta questão como fora de tópico, porque os desafios de várias partes sem interação entre as partes são proibidos. Meta.codegolf.stackexchange.com/a/8464/45941
— Martin Ender

Respostas:


9

52 bytes

Problema 1: 2 bytes

    SQ

Problema 2: 5 bytes
    jC\f2

Problema 3: 4 bytes
    -0`Q
Problema 4: 6 bytes
    @z+N\'
Problema 5: 17 bytes
    %3>"LTWoiisene"hQ
ou
    @c3"LoseTieWin"hQ
Problema 6: 3 bytes
    pMT
Problema 7: 9 bytes
    s>R_d.cz2
Problema 8: 6 bytes
    sqVztz
Combinar a solução do @ xnor para o problema 4 com a minha (ambos com 6 bytes) fornece uma boa solução de 4 bytes . Portanto, 48 bytes são possíveis.


Você não pode combinar sua solução com xnor's, porque xnor's é inválido (veja meu comentário na resposta dele).
— Ou orp

@orlp * combinando tudo, menos as coisas inválidas ;-) Adicionou a solução no meu post.
— Jakube 16/07/2015

Ah, agora vejo :) Acho que eu tinha 6 bytes (e contando) pior do que o ideal.
— orlp

aaah! obrigado! não tinha percebido :). Eu removo isso.
— Ven

7

54 bytes

Tarefa 1, 2 bytes : SQ
Tarefa 2, 6 bytes : j102 2
Tarefa 3, 5 bytes : *FjQT
Tarefa 4, 6 bytes : @z"'\"
Tarefa 5, 17 bytes : @c3"LoseTieWin"hQ
Tarefa 6, 4 bytes : jkUT
Tarefa 7, 7 bytes : s>M.cz2
Tarefa 8, 7 bytes :sqM.:z2


Bem golfed :-)
— Vedaad Shakib

você responde a tarefa 4 válida, já que, em Falsey, apenas imprime uma linha em branco?
— Maltysen

@ Maltysen Sim, porque o valor de verdade ""é False porque not ""é True.
— orlp

3

58 bytes

Tarefa 1, 2 bytes : SQ
Tarefa 2, 5 bytes : jC\f2
Tarefa 3, 6 bytes : !}Z Q
Tarefa 4, 8 bytes : |}\'z}Nz
Tarefa 5, 18 bytes : @c"Tie\nWin\nLose"bQ
Tarefa 6, 4 bytes : jkUT
Tarefa 7, 9 bytes : lf>FT.cz2
Tarefa 8, 6 bytes :sqVtzz


Eu não sabia V(embora ainda não o entenda completamente, já que você está fazendo operações vetoriais em operandos de comprimento desigual), então sou desculpado por isso, mas eu realmente deveria ter pensado em C\f= /
— orlp

@orlp Vtrunca automaticamente entradas desiguais
— Maltysen

3

Este post é para o acúmulo das melhores soluções em todas as respostas. Edite na solução e o responsável pela resposta que encontrou a solução pela primeira vez, se houver alguma melhoria.

48 bytes

1. SQ- 2 bytes, primeiro publicado por @orlp
2. jC\f2- 5 bytes, primeiro publicado por @Maltysen
3. -0`Q- 4 bytes, primeiro publicado por @Jakube
4. @z`N- 4 bytes, mistura de @xnor e @Jakube, mas não em qualquer resposta ainda.
(Também não vi isso ao escrever a pergunta)
5. @c3"LoseTieWin"hQ- 17 bytes, publicado pela primeira vez por @orlp
6. pMT- 3 bytes, publicado pela primeira vez por @Jakube
7. s>M.cz2- 7 bytes, publicado pela primeira vez por @orlp
8. sqVtzz- 6 bytes, publicado pela primeira vez por @Maltysen


estamos restringindo às versões Pyth antes da pergunta?
— Optimizer

11
"Todas as respostas devem ser válidas para o commit Pyth mais recente a partir da postagem desta pergunta." Coloque que eu estaria interessado em ouvir o que você estava pensando. @Optimizer
— isaacg

Pyth está sempre evoluindo, certo? (em um ritmo muito mais rápido que outros idiomas de golfe). Portanto, é muito provável que esse número (48) chegue facilmente a menos de 40 no futuro próximo. E como esse é um desafio para a prática, o ideal é praticar usando a versão mais recente do Pyth para novos desafios.
— Optimizer

2

57 bytes

1. (2) SQClassificar.
2. (5) jC\f2 Converta fem ASCII val e, em seguida, na base 2.
3. (5) /`Q`0Conte '0'na sequência numérica.
4. (5) @z`\'Tira a interseção definida da corda com "'".
5. (18) @c"Tie Win Lose"dQFaz a lista com divisão. Não consegui fatiar para o trabalho.
6. (4) jkUTParticipe range(10). Aparentemente, converte para uma string automaticamente.
7. (9) sm>d_d.:zConta substrings que são maiores que o inverso.
8. (9) l@C,zz.:zComprimento da interseção das sublistas da lista e pares de elementos da lista. Mesmo comprimento que a solução de referência.


Sua solução para o número 4 é inválida. Por exemplo, a sequência te\\sté um falso positivo.
— Ou orp

@orlp Substituiu-o por uma solução diferente e mais curta.
— Xnor
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.