pyplot python quine

python - pyplot - más corto pitón quine?



title plt python (7)

_=''_=%r;print _%%_'';print _%_

¿Es este el quine de python más corto posible, o se puede hacer mejor? Este parece mejorar en todas las entradas en la página de Quine .

No estoy contando el trivial programa ''vacío'', y no estoy contando la sumisión de Terry Reedy, que se debe a las dobles comillas (si está permitido, ¿es "hola mundo" una quine? O "" para el caso? )


Aún más corto:

print(__file__[:-3])

Y nombre el archivo de print(__file__[:-3]).py ( Source )

Edición : en realidad,

print(__file__)

La print(__file__) nombre print(__file__) también funciona.


Ambos

print open(__file__).read()

y cualquier cosa que implique la importación no son quines válidos, porque un quine por definición no puede tomar ninguna entrada. La lectura de un archivo externo se considera entrada de entrada y, por lo tanto, una quine no puede leer un archivo, incluso a sí mismo.

Para el registro, técnicamente hablando, la quine más corta posible en python es un archivo en blanco, pero eso también es una especie de trampa.


En un enfoque ligeramente no literal, tomando ''más corto'' para significar corto en términos del número de declaraciones así como del recuento de caracteres, tengo uno here que no incluye ningún punto y coma.

print(lambda x:x+str((x,)))(''print(lambda x:x+str((x,)))'',)

En mi opinión, esto se sostiene, porque se trata de una sola función, mientras que otras son múltiples. ¿Alguien tiene uno más corto como este?

Edit: el usuario flornquake realizó la siguiente mejora (backticks para repr() para reemplazar a str() y eliminar 6 caracteres):

print(lambda x:x+`(x,)`)(''print(lambda x:x+`(x,)`)'',)


Estoy estrictamente en contra de su solución.

El prarametro de formato % es definitivamente una función de lenguaje de alto nivel demasiado avanzada. Si se permitieran tales construcciones, diría, también se debe permitir la import . Entonces puedo construir un Quine más corto introduciendo algún otro constructo de lenguaje de alto nivel (que, por cierto, es mucho menos poderoso que la función % , por lo que es menos avanzado):

Aquí hay un script de shell de Unix que crea un archivo quine.py y comprueba que realmente funciona:

echo ''import x'' > quine.py echo "print ''import x''" > x.py python quine.py | cmp - quine.py; echo $?

salidas 0

Sí, eso es hacer trampa, como usar % . Lo siento.


Solo voy a dejar esto aquí (guardar como excepciónQuine.py):

File "exceptionQuine.py", line 1 File "exceptionQuine.py", line 1 ^ IndentationError: unexpected indent


Técnicamente, el quine más corto de Python es el archivo vacío. Aparte de este caso trivial:

Como la impresión de Python agrega automáticamente una nueva línea, la quine es en realidad _=''_=%r;print _%%_'';print _%_/n (donde /n representa un solo carácter de nueva línea en el archivo).


Yo diría:

print open(__file__).read()

Source