Comment améliorer Pyth? [fermé]

24

Pyth est en développement continu, ce qui signifie que de nouvelles fonctionnalités sont ajoutées en permanence.

Je veux faire de Pyth une meilleure langue, donc je voudrais savoir quelles fonctionnalités les gens recherchent.

C'est l'endroit où vous avez les idées de publication pour améliorer Pyth.

Dans votre réponse, veuillez indiquer:

  • Ce que vous aimeriez voir changé / ajouté.

  • Un exemple d'utilisation de la modification.

Je commenterai si je prévois de mettre en œuvre la suggestion.

Veuillez vérifier si l'idée que vous souhaitez suggérer a déjà été suggérée. Upvote les idées que vous aimeriez mettre en œuvre.


Suggestions mises en œuvre:


C'était sur le sujet selon cette méta-question quand j'ai posté la question, ce n'est plus clair.

isaacg
la source
1
Pourquoi est-ce un wiki communautaire?
Geobits
4
Il s'agit plutôt d'une discussion et d'une collection de suggestions. Personne ne devrait gagner ou perdre de rep pour avoir suggéré une fonctionnalité Pyth. De plus, les suggestions implémentées devraient probablement être supprimées. Cette question connexe est également le wiki de la communauté.
Dennis
9
Je ne sais pas ce que je pense de questions comme celle-ci. Je peux voir que cela a un sens ici, car PPCG couvre probablement la plupart (sinon la totalité) de la base d'utilisateurs de Pyth, mais je ne suis pas sûr que nous devrions l'utiliser comme outil de suivi des problèmes. J'ai ajouté une réponse au meta post.
Martin Ender
Cela ne devrait-il pas être méta? Sérieusement les gars
Alec Teal
2
@AlecTeal "Meta Programming Puzzles & Code Golf Stack Exchange est la partie du site où les utilisateurs discutent du fonctionnement et des politiques de Code Golf Stack Exchange plutôt que de discuter des puzzles de programmation ou du code golf lui-même." Meta concerne spécifiquement cette communauté . Il n'appartient vraiment pas à la méta. Qu'il appartienne ici ou non à PPCG du tout est actuellement en cours de discussion dans le meta post que j'ai lié.
Martin Ender

Réponses:

7

Boucles imbriquées

Si vous souhaitez imbriquer des forboucles, vous devez actuellement gaspiller un octet pour l'utiliser à l' F<var><seq>intérieur de a V<seq>ou vice versa. J'aimerais avoir la même chose qu'avec lambdas, où la variable utilisée pour la boucle changerait lors de l'imbrication des boucles.

PurkkaKoodari
la source
Cela pourrait même être extensible à d'autres choses comme L, qui pourraient redéfinir, disons, Cla deuxième fois qu'il a été appelé.
FryAmTheEggman
4

Importation plus facile de modules

Jusqu'à présent, chaque fois que je l'ai utilisé, $cela a été quelque chose comme:

$from <module> import <function> as <pyth-function-with-same-arity>$
for example:
$from unicodedata import name as neg$

Il pourrait y avoir une nouvelle fonction qui résume cela par exemple .$:

.$"unicodedata""name""neg"
.$"unicodedata name neg"

Ou en utilisant la nouvelle syntaxe comme celle _Mqui peut ne pas être facile / possible à faire:

_$unicodedata name$

De plus, une fonction avec chaque zone peut recevoir un nom de macro à une seule lettre afin que ces appels soient plus courts (sauf pour l' _$option).

FryAmTheEggman
la source
4

En train de dormir

Cela a causé des problèmes ici , et @ mbomb007 a suggéré de le mettre comme une amélioration de Pyth . Fondamentalement, en ce moment, afin de dormir pendant le nombre de secondes donné, je dois faire quelque chose comme:

Q$__import__('time').sleep(Q)$

Ce qui est ennuyeux et aussi diable.

refi64
la source
Vous pouvez simuler le comportement de sommeil avec la fonction date. f>.d1Q0par exemple, dort Qquelques secondes.
Jakube
@Jakube Cela ne fonctionne pas toujours. Selon les documents, sur Unix, il retourne depuis combien de temps le programme fonctionne. Ce qui est mauvais lorsque l'utilisateur entre une entrée.
kirbyfan64sos
Que diriez - vous que celui - ci: J.d0f>-.d0JQ0. C'est assez long cependant ... Je suis d'accord, une fonction sommeil serait bien.
Jakube
4

Plus de lambdas

C'est vraiment l'idée de FryAmTheEggman , mais je la poste pour la diffuser .

Parfois, je trouve que l'utilisation de deux lambdas à un argument différents raccourcirait le code, tout en devant utiliser un lambda à deux arguments pour un ne le ferait pas.

Ce serait bien d'avoir L, Met les amis redéfinissent une fonction différente à chaque utilisation; par exemple, ce code:

L*b2L*b3y5'5

pourrait compiler pour:

@memoized
def subsets(b):
 return times(b,2)
@memoized
def read_file(b):
 return times(b,3)
imp_print(subsets(5))
imp_print(read_file(5))

Le choix exact des fonctions pourrait bien sûr être modifié.

Pietu1998
la source
3

Tableaux multidimensionnels améliorés

L'utilisation de tableaux multidimensionnels est assez difficile à faire actuellement. Par exemple, le code C A[B][C][D]se traduirait @@@ABCDen Pyth. Quelque chose comme ça @A[BCD)serait beaucoup plus agréable (mais pas plus court ici). Il en va de même pour X; A[B][C][D] = Eest actuellement X@@ABCDE, quand il pourrait l'être XA[BCD)E.

Pietu1998
la source
3

Quelques idées mineures

  • Différence absolue, c.-à-d abs(val1 - val2). Actuellement c'est .a-<val1><val2>.
  • min/ maxpour les valeurs. Actuellement, c'est hS,<val1><val2>/ eS,<val1><val2>ou la même chose avec plus de valeurs. ( hS<seq>/ eS<seq>pour les séquences est assez court.)
PurkkaKoodari
la source
3

Pas une fonctionnalité Pyth, mais néanmoins ...

Modulariser le code Pyth

Cela n'affecte que Pyth sous le capot. Certaines parties de l'implémentation Pyth sont assez compliquées. Beaucoup de variables globales et d'autres choses hacky.

J'ai été vraiment frustré il y a quelques jours, lorsque j'ai essayé d'utiliser quelques fonctions de l'implémentation Pyth (comme exécuter une chaîne de commandes Pyth) à partir d'un autre script Python.

Quelque chose comme ce qui suit serait bien:

from pyth import execute_pyth
print(execute_pyth(code='sQ', input='[1, 2, 3]'))

Eh bien, je suppose que ce n'est qu'un appel à l'aide pour Pyth5.

Jakube
la source
1

Éléments uniques

Pyth n'a actuellement aucun moyen d'obtenir des éléments uniques d'une séquence. Vous pouvez tester s'il est unique, mais vous ne pouvez pas obtenir les éléments réellement uniques. Actuellement, le moyen le plus court est :

{.-Q{Q

6 octets! Comparer à K, où l' obtention des éléments uniques est une opération sur un octet: =x.

Peut .}- être que ça fonctionnerait ici?

refi64
la source
À quels cas d'utilisation (à part un défi) pensez-vous?
isaacg
@isaacg Je ne me souviens pas très bien, mais j'ai dû essayer d'obtenir les éléments uniques d'une liste auparavant et j'ai dû utiliser autre chose (qui était toujours plus long).
kirbyfan64sos
Je ne suis pas un programmeur Pyth, mais je rencontre ça tout le temps dans GolfScript / CJam: .&resp. _&apparaît dans beaucoup de réponses. C'est très utile.
Lynn
1
En quoi est-ce différent de {Q?
isaacg
1
@isaacg C'est trié
Ypnypn