Golf Practice: Pyth [fermé]

10

Il s'agit d'un défi concernant les astuces et les optimisations qui peuvent être utilisées lors du golf en Pyth. Les golfeurs Pyth peuvent reconnaître plusieurs des tours impliqués. Cependant, des approches et des constructions inconnues peuvent être impliquées, alors jetez un œil aux conseils Pyth ainsi qu'à la référence de caractère Pyth si vous êtes bloqué. Les solutions peuvent être testées ici .

Objectif: il y a 8 problèmes, chacun avec un extrait Pyth à optimiser. Votre objectif est de créer quelque chose d'équivalent mais de plus court. Les solutions de référence totalisent 80 octets. Votre objectif est de battre autant que possible.

Le gagnant ira à la soumission qui résout les 8 problèmes avec le plus petit nombre total d'octets. Tiebreaker est un post antérieur.

Réponse: Veuillez gâcher votre réponse entière, à l'exception de votre score total. Il est prévu que vous ne regardiez pas les réponses des autres avant de soumettre les vôtres.

Chaque soumission doit répondre à chaque problème et donner le nombre d'octets correspondant, mais n'hésitez pas à utiliser l'implémentation de référence si vous ne pouvez pas l'améliorer.

Détails: Si la question appelle une certaine valeur ou sortie, l' qégalité est souhaitée, donc 1et !0sont équivalentes. Si la question demande de tester si une condition est vraie, la sortie doit être véridique si la condition est vraie et fausse si la condition est fausse, mais elle n'est pas limitée au-delà. Vous ne pouvez pas échanger vrai pour faux et faux pour vrai. Si la question demande que quelque chose soit imprimé, rien d'autre ne peut être imprimé à l'exception d'une nouvelle ligne de fin.

Toutes les réponses doivent être valides pour la validation Pyth la plus récente à compter de la publication de cette question.

Problème 1: Étant donné un ensemble dans Q, affichez une liste contenant les éléments de Q dans n'importe quel ordre.

; 3 bytes
f1Q

Problème 2: affichez la liste [1, 1, 0, 0, 1, 1, 0].

; 9 bytes
[J1JZZJJZ

Problème 3: Étant donné un entier positif dans Q, testez si tous les chiffres de Q sont positifs (et non zéro).

; 7 bytes
!f!TjQT

Problème 4: Étant donné une chaîne en z, testez si z contient des guillemets - "ou '.

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

Problème 5: mappez Q = 1 à «Win», Q = 0 à «Tie» et Q = -1 à «Lose».

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

Problème 6: Imprimer 0123456789.

; 6 bytes
sm`dUT

Problème 7: Étant donné une chaîne en z, comptez le nombre d'inversions.

(Indexe iet jforme une inversion si i < jmais z[i] > z[j]).

; 17 bytes
ssmm>@zd@zkrdlzUz

Problème 8: Étant donné une liste en z, comptez le nombre d'éléments adjacents répétés.

; 9 bytes
lfqFT.:z2
isaacg
la source
@ user1737909 Cette réponse est correcte. f1Qfiltre Qune fonction qui est toujours vraie, donc elle sort toujours chaque élément de l'ensemble. fproduit une liste qui répond à l'objectif de cette question.
isaacg
Je ferme cette question comme hors sujet car les défis en plusieurs parties sans interaction entre les parties sont interdits. meta.codegolf.stackexchange.com/a/8464/45941
Martin Ender

Réponses:

9

52 octets

Problème 1: 2 octets

    SQ

Problème 2: 5 octets
    jC\f2

Problème 3: 4 octets
    -0`Q
Problème 4: 6 octets
    @z+N\'
Problème 5: 17 octets
    %3>"LTWoiisene"hQ
ou
    @c3"LoseTieWin"hQ
Problème 6: 3 octets
    pMT
Problème 7: 9 octets
    s>R_d.cz2
Problème 8: 6 octets
    sqVztz
La combinaison de la solution @ xnor pour le problème 4 avec la mienne (les deux 6 octets) donne une belle solution de 4 octets . Ainsi, 48 octets sont possibles.

Jakube
la source
Vous ne pouvez pas combiner votre solution avec xnor, car xnor n'est pas valide (voir mon commentaire sur sa réponse).
orlp
@orlp * combinant tout sauf les trucs invalides ;-) Ajout de la solution dans mon post.
Jakube
Ah, je vois maintenant :) Je suppose que j'étais 6 octets (et en comptant) pire qu'optimal.
orlp
aaah! Merci! n'avait pas réalisé :). Je vais retirer ça.
Ven
7

54 octets

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

orlp
la source
Joliment golfé :-)
Vedaad Shakib
est-ce que vous répondez pour la tâche 4 valable puisque sur falsey il imprime juste une ligne vierge?
Maltysen
@Maltysen Oui, car la valeur véridique de ""est False car not ""True.
orlp
3

58 octets

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

Maltysen
la source
Je ne le savais pas V(bien que je ne le comprenne toujours pas complètement, puisque vous faites des opérations vectorielles sur des opérandes de longueur inégale), donc je suis excusé pour celui-ci, mais j'aurais vraiment dû penser à C\f= /
orlp
@orlp Vtronque automatiquement les entrées inégales
Maltysen
3

Ce message est pour l'accumulation des meilleures solutions à travers toutes les réponses. Veuillez éditer dans la solution et le répondeur qui a trouvé la première cette solution s'il y a des améliorations.

48 octets

1. SQ- 2 octets, publié pour la première fois par @orlp
2. jC\f2- 5 octets, publié pour la première fois par @Maltysen
3. -0`Q- 4 octets, publié pour la première fois par @Jakube
4. @z`N- 4 octets, mélange de @xnor et @Jakube, mais pas dans encore des réponses.
(Je ne l'ai pas vu non plus lors de la rédaction de la question)
5. @c3"LoseTieWin"hQ- 17 octets, d'abord publié par @orlp
6. pMT- 3 octets, publié pour la première fois par @Jakube
7. s>M.cz2- 7 octets, publié pour la première fois par @orlp
8. sqVtzz- 6 octets, publié pour la première fois par @Maltysen

isaacg
la source
limitons-nous aux versions Pyth d'avant la question?
Optimizer
1
"Toutes les réponses doivent être valides pour la validation Pyth la plus récente à compter de la publication de cette question." Mettez, je serais intéressé d'entendre ce que vous pensiez. @Optimizer
isaacg
Pyth est en constante évolution, non? (à un rythme beaucoup plus rapide que les autres langues de golf). Il est donc très probable que ce nombre (48) passera facilement sous 40 dans un avenir proche. Et comme il s'agit d'un défi de pratique, vous voudriez idéalement vous entraîner à utiliser la dernière version de Pyth pour les nouveaux défis.
Optimizer
2

57 octets

1. (2) SQTrier.
2. (5) jC\f2 Convertir fen ASCII val puis base 2.
3. (5) /`Q`0Compter '0'dans la chaîne numérique.
4. (5) @z`\'Prend l'intersection définie de la chaîne avec "'".
5. (18) @c"Tie Win Lose"dQRend la liste divisée. Je n'ai pas commencé à travailler.
6. (4) jkUTRejoignez range(10). Apparemment, convertit automatiquement en chaîne.
7. (9) sm>d_d.:zCompte les sous-chaînes supérieures à leur inverse.
8. (9) l@C,zz.:zLongueur d'intersection des sous-listes de la liste et des paires d'éléments de la liste. Même longueur que la solution de référence.

xnor
la source
Votre solution pour # 4 n'est pas valide. Par exemple, la chaîne te\\stest un faux positif.
orlp
@orlp Le remplace par une solution différente et plus courte.
xnor