¿Cómo se puede mejorar Pyth? [cerrado]

24

Pyth está en desarrollo continuo, lo que significa que se agregan nuevas características todo el tiempo.

Quiero hacer de Pyth un mejor idioma, así que me gustaría saber qué características está buscando la gente.

Este es el lugar donde tienen las ideas de publicaciones para mejorar Pyth.

En su respuesta, indique:

  • Lo que le gustaría ver cambiado / agregado.

  • Un ejemplo de uso del cambio.

Comentaré si planeo implementar la sugerencia.

Verifique si la idea que desea sugerir ya ha sido sugerida. Vota ideas que te gustaría implementar.


Sugerencias implementadas:


Esto fue sobre el tema según esta meta pregunta cuando publiqué la pregunta, ya no está claro.

revs isaacg
fuente
1
¿Por qué es una wiki comunitaria?
Geobits
44
Es más una discusión y una colección de sugerencias. Nadie debería ganar o perder reputación por sugerir una función Pyth. Además, las sugerencias implementadas probablemente deberían eliminarse. Esta pregunta relacionada también es wiki comunitaria.
Dennis
99
No estoy seguro de cómo me siento con preguntas como esta. Puedo ver que tiene sentido aquí, porque PPCG probablemente cubre la mayoría (si no toda) de la base de usuarios de Pyth, pero no estoy seguro de que debamos usarlo como un rastreador de problemas. He agregado una respuesta a la meta publicación.
Martin Ender
¿No debería ser esto meta? En serio chicos
Alec Teal
2
@AlecTeal "Meta Programming Puzzles & Code Golf Stack Exchange es la parte del sitio donde los usuarios discuten el funcionamiento y las políticas de Code Golf Stack Exchange en lugar de discutir rompecabezas de programación o el propio código de golf". Meta es específicamente sobre esta comunidad . Realmente no pertenece al meta. Si pertenece aquí o no en PPCG, se está discutiendo actualmente en la meta publicación que vinculé.
Martin Ender

Respuestas:

7

Bucles anidados

Si desea anidar forbucles, actualmente tiene que desperdiciar un byte para usarlo F<var><seq>dentro V<seq>o viceversa. Me encantaría tener lo mismo que con lambdas, donde la variable utilizada para el bucle cambiaría al anidar bucles.

PurkkaKoodari
fuente
Esto podría incluso ser extensible a otras cosas como L, que podrían redefinir, por ejemplo, Cla segunda vez que se llamó.
FryAmTheEggman
4

Importación de módulos más fácil

Hasta ahora, cada vez que lo he usado $ha sido algo como:

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

Podría haber una nueva función que resumiera esto, por ejemplo .$:

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

O usar la sintaxis más nueva como la _Mque puede no ser fácil / posible de hacer:

_$unicodedata name$

Además, una función con cada arity podría recibir un nombre de macro de una sola letra para que estas llamadas sean más cortas (excepto la _$opción).

FryAmTheEggman
fuente
4

Dormido

Esto causó problemas aquí , y @ mbomb007 sugirió ponerlo como una mejora para Pyth . Básicamente, ahora mismo, para dormir durante la cantidad de segundos dada, necesito hacer algo como:

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

Lo cual es molesto y largo como diablos.

refi64
fuente
Puede simular el comportamiento del sueño con la función de fecha. f>.d1Q0por ejemplo duerme Qsegundos.
Jakube
@Jakube Eso no siempre funciona. Según los documentos, en Unix, devuelve cuánto tiempo ha estado ejecutándose el programa. Lo cual es malo cuando el usuario ingresa la entrada.
kirbyfan64sos
¿Qué tal este que: J.d0f>-.d0JQ0. Sin embargo, es bastante largo ... Estoy de acuerdo, una función de suspensión sería buena.
Jakube
4

Más lambdas

Esta es realmente la idea de FryAmTheEggman , pero la estoy publicando para que salga a la luz.

A veces encuentro que usar dos lambdas de un argumento diferentes acortaría el código, mientras que tener que usar una lambda de dos argumentos para uno no lo haría.

Sería bueno tenerlo L, My los amigos redefinen una función diferente cada vez que se usa; por ejemplo, este código:

L*b2L*b3y5'5

podría compilar para:

@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))

La elección exacta de las funciones podría modificarse, por supuesto.

revs Pietu1998
fuente
3

Matrices multidimensionales mejoradas

El uso de matrices multidimensionales es bastante difícil de hacer actualmente. Por ejemplo, el código C A[B][C][D]se traduciría @@@ABCDen Pyth. Algo así @A[BCD)sería mucho mejor (aunque no más corto aquí). Lo mismo también vale para X; A[B][C][D] = Ees actualmente X@@ABCDE, cuando podría ser XA[BCD)E.

revs Pietu1998
fuente
3

Algunas ideas menores

  • Diferencia absoluta, es decir abs(val1 - val2). Actualmente lo es .a-<val1><val2>.
  • min/ maxpara valores. Actualmente es hS,<val1><val2>/ eS,<val1><val2>o lo mismo con más valores. ( hS<seq>/ eS<seq>para secuencias es lo suficientemente corto).
PurkkaKoodari
fuente
3

No es una característica de Pyth, pero sin embargo ...

Modularizar el código Pyth

Esto solo afecta a Pyth debajo del capó. Algunas partes de la implementación de Pyth son bastante desordenadas. Muchas variables globales y otras cosas extravagantes.

Realmente me sentí frustrado hace unos días, cuando intenté usar algunas funciones de la implementación de Pyth (como ejecutar una cadena de comandos de Pyth) desde otro script de Python.

Algo como lo siguiente sería bueno:

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

Bueno, supongo que esto es solo una llamada de ayuda para Pyth5.

Jakube
fuente
1

Elementos unicos

Pyth actualmente no tiene una forma corta de obtener elementos únicos de una secuencia. Puede probar si es único, pero no puede obtener los elementos que realmente son únicos. Actualmente, el camino más corto es :

{.-Q{Q

6 bytes! Compare eso con K, donde conseguir los elementos singulares es una operación de un byte: =x.

Tal vez .}trabajaría aquí?

revs refi64
fuente
¿En qué casos de uso (además de tat one challenge) estás pensando?
isaacg
@isaacg No recuerdo del todo, pero antes tuve que intentar obtener los elementos únicos de una lista y tuve que usar otra cosa (que siempre era más larga).
kirbyfan64sos
No soy un programador de Pyth, pero me encuentro con esto todo el tiempo en GolfScript / CJam: .&resp. _&aparece en muchas respuestas. Es muy útil.
Lynn
1
¿Cómo es esto diferente de {Q?
isaacg
1
@isaacg Está ordenado
Ypnypn