Pyth Practice 2

21

Il est temps pour une autre pratique Pyth. Je présente ici 8 énoncés de problèmes avec une solution Pyth chacun. Ces solutions sont écrites par un débutant Pyth. Il est assez content de ces solutions, car elles sont beaucoup plus courtes que ses réponses Python. Votre tâche est cependant de lui montrer mieux. Créez des programmes équivalents mais plus courts.

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, qui mènent à des solutions plus courtes. Cependant, certains problèmes nécessiteront des approches inhabituelles qui sont rarement utilisées. Certaines des astuces que je n'ai jamais vues dans la nature. Mais aucune solution ne nécessite de bugs ou de comportements étranges, ce qui n'était pas intentionnel de la part des concepteurs de Pyth. Toutes les réponses doivent être valides pour la validation Pyth la plus récente ( 2b1562b ) à compter de la publication de cette question. Vous pouvez utiliser l' interpréteur Pythpour tester. Il est à jour en ce moment et je ne m'attends pas à de grands changements dans Pyth, qui invalideront des solutions optimales ou rendront des solutions plus courtes possibles. L'interpréteur en ligne propose également la nouvelle référence de personnage. Comme il est assez nouveau, vous pouvez (devriez) également utiliser les anciens documents , au cas où quelque chose est incorrect ou manquant.

Objectif: Les solutions de référence totalisent 81 octets. Votre objectif est de battre autant que possible. La soumission qui résout les 8 problèmes avec le plus petit nombre total d'octets gagne. Tiebreaker est la date de soumission.

Bien sûr, seules les soumissions sont valides, qui contiennent des solutions pour les 8 problèmes. Vous pouvez utiliser l'implémentation de référence, si vous ne pouvez pas améliorer le score d'un (ou plusieurs) problème particulier.

Vos solutions doivent imprimer exactement la même sortie que les solutions de référence. À l'exception d'une nouvelle ligne de fin facultative.

Comme il s'agit d'une pratique Pyth, seuls les programmes écrits dans le langage Pyth sont autorisés.

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. Vous pouvez créer des spoilers en mettant>! devant chaque ligne, comme:

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

J'espère que je n'ai pas choisi de problèmes trop difficiles ou trop triviaux. En espérant que beaucoup de participants et que tout le monde acquière quelques nouvelles perspectives sur Pyth. Bon golf!

Problème 1:

Créez la matrice 9x9 suivante et imprimez-la:

[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]

Solution de référence ( Lien ):

V9m?>dNd0S9 (11 bytes)

Problème 2:

Imprimez tous les chiffres et toutes les lettres sur des lignes distinctes:

0
...
9
a
...
z

Solution de référence ( Lien ):

VTN)VGN (7 bytes)

Problème 3:

Recherchez le palindrome lexicographiquement le plus petit, qui est lexicographiquement plus grand ou égal à une chaîne d'entrée contenant des lettres minuscules et est identique à la chaîne d'entrée.

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

Solution de référence ( Lien ):

hf&gTzqT_T^Glz (14 bytes)

Problème 4:

Vérifiez si un nombre est dans la plage [0, entrez le numéro). Cela devrait également fonctionner pour les flotteurs.

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

Solution de référence ( Lien ):

&gQ0<QE (7 bytes)

Le format de référence est to be tested value<newline>end value. Vous pouvez cependant choisir un format d'entrée différent. L'important est seulement que vous accomplissiez l'énoncé du problème et produisiez les résultats corrects.

Problème 5:

Analyser une chaîne d'entrée au format "\ d + [a-zA-Z] +". Notez que le nombre doit vraiment être un nombre, pas une chaîne contenant des chiffres.

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

Solution de référence ( Lien ):

A.ggk\Az,sGH (12 bytes)

Problème 6:

Calculez la somme des nombres, séparés par une ou plusieurs virgules. Vous pouvez supposer qu'il existe au moins un nombre dans la chaîne.

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

Solution de référence ( Lien ):

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

Problème 7:

Lisez les entiers positifs de l'entrée jusqu'à ce que vous obteniez le nombre 0. Imprimez la somme de tous les nombres.

Solution de référence ( Lien ):

WJE=+ZJ)Z (9 bytes)

Problème 8:

Résumez tous les éléments d'une matrice carrée, à l'exception de ceux de la diagonale principale (du coin supérieur gauche au coin inférieur droit).

Solution de référence ( Lien ):

-ssQs.e@bkQ (11 bytes)
Jakube
la source
J'aime beaucoup l'idée de questions spécifiques à la langue (et j'ai voté pour celle-ci). Mais je pensais que les questions spécifiques à la langue étaient mal vues dans PPCG?
Luis Mendo
3
@LuisMendo Je pense que les questions spécifiques à une langue ne sont désapprouvées que si la raison derrière la question est une aversion générale contre les langues de golf comme CJam, Pyth, ..., ou parce que l'OP ne comprend que certaines langues. C'est ici un peu différent. Cette question est principalement conçue pour montrer certaines des fonctionnalités les plus cachées d'un langage populaire (sur PPCG). D'une certaine manière, c'est comme une collection de trucs. Il ne fait pas de sens de le permettre à toutes les langues. Voici un Meta-post sur ce sujet: lien
Jakube
En 6, les nombres sont-ils des nombres entiers positifs à un chiffre?
2015
@xnor Vous pouvez supposer qu'ils sont positifs, mais ils peuvent être composés de plusieurs chiffres. Je vais changer le cas de test.
Jakube
1
Je vote pour fermer cette question comme hors sujet parce que c'est un défi en plusieurs parties sans interaction entre les parties
pppery

Réponses:

9

59 58 56 octets

Problème 1:

j.tmLdS9Z (9 octets)

Problème 2:

MTjG (5 octets) (Le premier caractère est une nouvelle ligne)

Problème 3:

h.f_IZ1z (8 octets)

Problème 4:

%IQE (4 octets)

Problème 5:

,J.vz-zJ (8 octets)

Problème 6:

srXz\,d7 (8 octets)

Problème 7:

u+GE0 (5 octets)

Problème 8:

ss.DR~hZQ (9 octets)

isaacg
la source
2

66 octets

1. 10 octets: V9+mZN}hN9
2. 6 octets: jUT)jG
3. 8 octets: h.f_IZ1z
4. (implémentation de référence) 7 octets: &gQ0<QE
5. 11 octets: ,sK-rzZG-zK
6. 7 octets: ssMcz\,
7. 8 octets: s<.Qx.QZ
8. 9 octets:ss.eXbkZQ

Maltysen
la source
2

68 67 66 65 octets

Tache 1

10 octets: V9m*d>dNS9

Tâche 2

5 octets :, \nMTjG\nest une nouvelle ligne

Tâche 3

9 octets: h.fqZ_Z1z

Tâche 4

5 octets: qQ%QE

Tâche 5

Solution de référence, 12 octets: A.ggk\Az,sGH

Tâche 6

7 octets: ssMcz\,

Tâche 7

8 octets: s<.Qx.Q0

Tâche 8

9 octets: ss.DVQUlQ

lirtosiast
la source
1

54 octets

Voici les solutions envisagées. À l'exception de la tâche 8, toutes les solutions ont été trouvées.

1. j.tmLdS9Z (9 octets) en utilisant la carte pour la carte de gauche, transposer et remplir avec des zéros
2. \ nMTjG (5 octets) utiliser des retours à la ligne pour la carte
3. h.f_IZ1z (8 octets) générer les chaînes possibles avec .f
4 .% IQE (4 octets) a trouvé un cas d'utilisation, où l'opérateur invariant a besoin de 2 paramètres
5., J.vz-zJ (8 octets) .v n'évalue que la première instruction d'une chaîne et ignore le reste
6. ssMcz \, ( 7 octets) s "" = 0
7. u + GE0 (5 octets) réduire jusqu'à ce qu'il atteigne un nombre connu
8. ss.DVQUQ (8 octets) supprimer la diagonale à l'aide de la vectorisation

Jakube
la source
Merde, j'ai oublié de le Ufaire lsur les listes!
lirtosiast
1
Agréable à battre isaacg dans sa propre langue.
Stan Strum
1

 60 59  57 octets

1. 9 octets :j.tmRdS9Z


2. 6 octets :jbUTjG


3. 8 octets :h.f_IZ1z


4. 4 octets :}sEU


5. 8 octets :,K.vz-zK


6. 7 octets :ssMcz\,


7. 8 octets :s<FxB.Q0


8. 11 10 7 octets : ss.DVQU Version précédente:ss.e+<bk>bh

Notez que j'ai développé ces solutions complètement indépendamment des autres réponses, même si je suis assez en retard pour la fête.

M. Xcoder
la source
Belle tentative. Le troisième problème est de 8 octets.
Jakube
Et je suis à peu près sûr que la solution au problème 8 n'a pas été compilée à l'époque. Mais je ne l'ai pas testé.
Jakube
@Jakube Oh merci de l'avoir remarqué!
M. Xcoder