Escriba un programa completo que tome una entrada entera booleana o no negativa. Debería:
- Emite su propio código fuente si el valor de entrada es falso
- Emite su propio código fuente en reversa si el valor de entrada es verdadero
Su programa no puede ser palindrómico, ni puede leer su propio código fuente de ninguna manera.
Este es el código de golf: el código más corto en bytes gana.

Respuestas:
Gol> <> , 9 bytes
Me siento un poco incómodo al publicar esto, ya que tenemos respuestas> <>, Vitsy y Minkolang. Las únicas adiciones al quine estándar son
I(leer entrada entera),?(ejecutar luego si es verdadero) yr(apilar inversa).Pruébalo en línea .
fuente
sP#Hr?I"CJam,
1716 bytesPruébalo aquí.
Una modificación bastante directa del quine estándar. Otras soluciones para 17 bytes:
Si puedo suponer que la entrada es solo 0 o 1 (como sustituto de un booleano, para el que no hay un tipo dedicado en CJam), obtengo 15 omitiendo
g:Explicación
fuente
g.Pyth, 17 bytes
Una modificación directa del estándar Pyth quine.
fuente
> <>, 17 bytes
Requiere el indicador -v (+1 byte) para insertar la entrada en la pila (o para que pueda poner la entrada en la pila de antemano en el intérprete en línea).
Puede hacer lo siguiente para la misma cantidad de bytes (sin el indicador) si solo se permitieran entradas enteras (es decir, 0 para falsedad, 1 para verdad).
Pruébalo en línea
Verdad / falsedad para> <> son cualquier cosa que no sea 0 y 0, respectivamente.
fuente
Vitsy , 15 bytes
... Estoy ... estoy ganando a CJam! (grita) ¡Mamá! Mira, ma, lo hice.
Explicación:
'rd3 * i86 * - (rl \ O Quine estándar, pero con un giro: 'Capture el código fuente como una cadena rd3 * Crear el 'carácter en ASCII i86 *: obtiene el carácter de entrada como ASCII y luego resta 48 de él. Si es cero, la instrucción if omitirá la siguiente instrucción. (r Si el elemento superior de la pila es cero, no haga el siguiente elemento. El siguiente elemento aquí es inverso. l \ O imprimir la pila.Nueva versión de Vitsy , 11 bytes
v'rd3 *} v) rZ v Capture la entrada como una variable. 'Captura la fuente hasta encontrar a otra' r Invierta la pila. d3 * Empuje 'a la pila. } Gire la pila hacia la derecha. v) Empuje la variable (entrada) a la pila y pruebe si no es cero. r Si es así, invierta la pila. Z Salida de todo en la pila.fuente
Javascript (ES6), 42 bytes
Esta es una modificación de mi Bling Quine . También es el doble de largo.
fuente
prompt()es necesario, a menos que cambiemos a Node.JS. Creo que$=_=>(A=`$=${$};$(prompt())`,alert(_?A:[...A].reverse().join``));$(prompt())funciona correctamente, aunque tal vez podría jugar más golf.Burlesque, 40 bytes
Explicación:
Burlesque cuenta con funciones avanzadas de manipulación de código y pila. De hecho, no puede acceder al código fuente del programa, pero puede acceder al código restante que se ejecutará en el futuro. Esto significa
#Qque devolverá todo el código que le sigue, por lo que tenemos que agregar todo#Qa ese código, que es con lo que estamos haciendori#Q.++1 2es un código técnicamente ilegal ya que está basado en pila. Pero podemos manipular el código para que se ejecute como1 2++:Trabajar con estos elementos integrados es increíblemente complicado y nadie los ha utilizado para nada productivo, excepto para cosas relacionadas con quine. Si inviertes
++1 2, obtienes2 1++lo que produciría21y no12. La razón que produce el código anterior12es porque#Qtambién incluye el<-lo que al final terminamos ejecutando mucho más que solo2 1++: p. Terminamos ejecutando lo2 1++#q<-que produce12.En realidad, podemos reemplazar cosas en nuestro código, por ejemplo, este código reemplaza todas las ocurrencias de
?+sí mismo con?*Uso:
fuente
Haskell,
126118108 bytesEspera
0o1como entrada.fuente
Minkolang 0.10 , 13 bytes
Pruébalo aquí
Esto es exactamente igual que el quine estándar a excepción de estas cuatro caracteres:
n,?r.ntoma un número entero de la entrada, lo,invierte, por lo que?omitersi la entrada es verdadera. De lo contrario,rinvierte la pila para que salga en orden inverso.fuente
Python 2, 51 bytes
fuente
Java 10 (programa completo), 282 bytes
Pruébalo en línea.
Java 10 (como función lambda), 154 bytes
Pruébalo en línea.
Explicación:
explicación quine :
var scontiene el código fuente sin formato%sse utiliza para poner esta cadena en sí misma cons.format(...)%c,%1$cy34se utilizan para formatear las comillas dobless.format(s,34,s)lo pone todo juntoY luego
new StringBuffer(s).reverse()se usa para revertir la cadena de quine si es necesario en función de la entrada booleana.fuente
05AB1E , 21 bytes
Pruébalo en línea.
La modificación de la forma predeterminada quine
0"D34çý"D34çýañadiendo‚sè.Explicación:
PD: Imprime automáticamente una nueva línea final. Si esto también se invierte, son 23 bytes en su lugar:
Pruébalo en línea. (
?es una impresión explícita sin nueva línea )fuente