En referencia a los códigos de caracteres ASCII imprimibles en decimal, sabemos que del 32 al 126 tenemos los caracteres imprimibles con 32 siendo (espacio). Su desafío es escribir un programa utilizando solo caracteres del 32 al 125 (excluyendo 126) que, cuando se ejecuta, imprime su propio código fuente, excepto que cada carácter en el código fuente tiene su código ASCII aumentado en uno.
Por ejemplo, si el código fuente era
main(){printf("Hello World");}
su salida sería
nbjo)*|qsjoug)#Ifmmp!Xpsme#*<~
Lo siguiente está prohibido:
- Lectura / escritura / uso de cualquier archivo externo o almacenamiento (incluido Internet)
- Lectura / eco de su propio código fuente
- Códigos fuente con menos de 2 caracteres (no son divertidos). Debe ser mayor o igual que 2.
Lo que lo convierte en un concurso de popularidad donde, después de esperar al menos dos semanas, la respuesta, en cualquier idioma, con los votos más altos gana y el recuento de caracteres más pequeños es el desempate.
popularity-contest
quine
Punto fijo
fuente
fuente
~
realmente apesta para GolfScript. Apuesto a que lo hiciste a propósito. :-)Respuestas:
Python (27 caracteres)
En el shell de Python, el siguiente script generará el resultado deseado:
¡Si! produce:
fuente
eh? , 5 caracteres
Tenga en cuenta que el quinto carácter es un espacio después
Ntbg
. Este es el mismo truco que en una de mis respuestas anteriores .Ntbg
es una ruta no válida, por lo que el intérprete dará salidaOuch!
. Debe ejecutarlo así:fuente
PHP (351)
Estoy seguro de que hay una mejor manera de hacerlo, ya que soy nuevo en codegolfing, pero aquí está mi solución PHP:
Salida:
fuente
TI-BASIC, 10
¡Para su calculadora TI-83/84!
Salidas:
fuente
GolfScript, 15 caracteres
Salida:
Pruébalo en línea.
Una solución bastante sencilla basada en la técnica que utilicé para mi entrada al desafío "quine rotativo" . El único detalle complicado es que el carácter
~
(ASCII 126) no está permitido por las reglas de desafío, por lo que no puedo usarlo para ejecutar mi bloque de código. Afortunadamente,1*
se puede utilizar como sinónimo de ello.Explicación:
El bloque de código
{`{)}%"/2+"}
es duplicado por.
, y la segunda copia ejecutada por1*
(técnicamente, un bucle de una iteración), dejando la otra copia en la pila. Dentro del bloque de código,`
stringifica el bloque de código y{)}%
recorre (los códigos ASCII de) sus caracteres, incrementando cada uno en uno. Finalmente,"/2+"
empuja la cadena literal/2+
(que se.1*
desplaza por una) en la pila. Al final del programa, el intérprete de GolfScript imprime automáticamente todo en la pila.PD. Sí, sé que este es un concurso de popularidad en lugar de un estricto código de golf , pero ¿qué más voy a hacer con GolfScript - ASCII art? ;-)
fuente
JavaScript, 117 caracteres
Sé que no es golf de código, pero lo jugué de todos modos.
(No estoy leyendo mi propio código fuente; simplemente estoy usando la función
Function
del objetotoString
).fuente
Java: 1331 bytes, 618 bytes y 504 bytes
Aquí está en java. Lo bueno es que es bastante legible y flexible. Puede experimentar para cambiar la
SHIFT
variable a 0 y será una quine. Puede cambiarlo al valor que desee, incluidos los valores negativos, y cambiará el código en consecuencia.Sin embargo, el único inconveniente en la clase anterior son los saltos de línea, que no están permitidos en la especificación de la pregunta (están fuera del rango de 32 a 125). Así que doy aquí una versión de golf que está libre de saltos de línea (y sin las peculiaridades para manejarlos). Puede editar el valor de la
S
variable para cambiar el turno. Esto tiene 618 bytes:Seguramente, si eliminamos el ajuste fino del desplazamiento y codificamos el valor del cambio, podemos hacer una versión completamente golfizada con 504 bytes:
fuente
Perl 5, 284 caracteres incluyen los avances de línea
No se le permitió usar ~ lo hizo un poco más complicado.
fuente
Python, 99
Salida:
Esto se puede acortar a 75 caracteres , pero imprimirá un nuevo carácter de línea después de la salida, técnicamente rompiendo las reglas:
fuente
\x09
) al final, ya que una pestaña desplazada por una es una nueva línea (\x0A
)? Entonces su versión acortada funcionaría con 76 bytes.Stax , 16 bytes
Ejecutar y depurarlo
Adaptación de la
"34bL"34bL
quine. Como ahora se"
convierte en el#
que no necesita escapar, podemos incluirlo en la cadena.fuente
Lua - 192
Muy claro,
fuente
C - 156
Solo el clásico C quine con las modificaciones requeridas
PD: aparentemente
sprintf(f,...,f,...)
es una segfault.fuente
JavaScript (276)
Sin usar
.toString()
:fuente
Rubí, 63
Maldición, no puedo usar un heredoc en este caso.
Ruby tiene un método nativo
.succ
que hace esto en un personaje, y la impresión sin una nueva línea es más corta que la impresión con, por lo que esto funciona bastante bien.fuente
C, 153
Otra modificación del clásico quine en c ...
fuente
> <>, 16 bytes
Pruébalo aquí!
Esto es más o menos una quine estándar en> <> (sin usar las
g
instrucciones). Las únicas diferencias son que no lee su propio código fuente e incrementa cada carácter en 1 antes de generarlo.Salidas
*> <> , 15 bytes (no competitivos)
Pruébalo aquí!
fuente
Tcl , 89 bytes
Pruébalo en línea!
Tcl , 89 bytes
Pruébalo en línea!
Dos enfoques; ¡la misma longitud de byte!
fuente
Haskell , 64 bytes
Pruébalo en línea!
fuente
Perl 5 , 55 bytes
Pruébalo en línea!
fuente
J, 42 bytes
fuente