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
isaacg
fonte
@ 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.

Jakube
fonte
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

orlp
fonte
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

Maltysen
fonte
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

isaacg
fonte
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.

xnor
fonte
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