Imprima su código al revés - quine inversa


83

Escriba un programa que imprima su propio código fuente al revés, en otras palabras, un eniuq .

Puntuación:

  • +50 si usa datos de extracción de Internet.
  • +25 si lees tu propio código fuente.
  • +1 punto por personaje
  • La puntuación más baja gana.

Reglas:

  • No usar otros archivos (p reverse.txt. Ej. )
  • La longitud mínima del código es de dos caracteres.
  • Su programa no puede ser un palíndromo.

1
Parece que esto se ha hecho antes , solo que sin la regla de "no palíndromos".
Iszi

3
¿Son esos puntajes bonos o penalizaciones ? Debe especificar con palabras si algo es una penalización o una bonificación, porque decir +10puede significar "puntuar como si tuviera 10 caracteres más de lo que realmente tiene" o "el código puede tener 10 caracteres más que no ser puntuado ", u otras interpretaciones.
AJMansfield

77
@AJMansfield La puntuación más baja gana significa que + x sería una penalización, -x sería una bonificación.
Iszi

99
La única pregunta que tengo, entonces, es ¿por qué extraer datos de Internet tiene una penalización mayor que leer el archivo fuente?
AJMansfield

44
Woohoo, primer lugar en la lista de preguntas de la red: D Nuestro sitio necesita más atención ...
Pomo de la puerta

Respuestas:


69

GolfScript - 2


1

(es decir, \n1dónde \nestá el carácter de nueva línea)

Salida:

1

(es decir 1\n)


Para citar a Ilmari :

GolfScript agrega automáticamente una nueva línea al final de la salida

Por lo tanto, una nueva línea seguida de un número imprimirá el número seguido de una nueva línea.


14
+1 No pensé que nada podría vencer a la solución de Mathematica.
Kaya

26
Solución bastante aburrida ...
theonlygusti

@theonlygusti Es golfscript, qué espera ...
Programas Redwolf

96

eh? , 5 caracteres

!hcuO

En realidad, NO tengo idea de cómo funciona, pero si descargas el intérprete y escribes !hcuO, entonces obtienesOuch!

Para ejecutar esto, debe ejecutar el programa así:

huh.exe !hcuO

En realidad buscará un archivo llamado !hcuO, pero no existe, por lo que generaOuch!


93
+1 por escribir algo que no entiendes
Cruncher

30
¿No es un poco irónico que no entiendas cómo funciona tu propio código, en un esolang que, por diseño, tampoco se supone que entienda tu código?
Iszi

@ Iszi Esa es la broma.
AJMansfield

99
No estoy seguro de que esté utilizando huh?correctamente, aunque me cuesta encontrar la documentación adecuada. Parece que el uso está destinado a ser huh.exe <path to source code>y Ouch!se devuelve para una ruta no válida. Intente poner su código en un archivo real y alimente ese archivo como argumento para huh?ver qué sucede. También es interesante ver que genera un Notes.txtarchivo con algunos comentarios.
Iszi

8
Ok, esto me acaba de decir que cree que entiende, pero no vi que sucediera nada. Tal vez debería dejar de jugar con él en mi sistema primario.
Iszi

85

Mathematica, 3 caracteres

a 2

a 2significa aveces 2. Entonces la respuesta es 2 a.


2
Esto probablemente ganará a menos que alguien pueda obtener una solución de dos caracteres.
ike

22
De hecho, conozco una solución de dos caracteres. También en Mathematica: 1#. La salida es #1.
alephalpha

77
@alephalpha: ¡Entonces deberías publicar eso como respuesta!
ProgramFOX

65

H9 + , 13 caracteres

!dlrow ,olleH

Como dice la página web, todos los caracteres que no son H, 9o +son ignorados, entonces mi programa imprimiráHello, world!


30
El único beneficio práctico de los lenguajes esotéricos locos es responder estas preguntas locas.
totymedli

Sería más práctico si estas preguntas fueran así.
kojiro

1
¡Eso es bastante inteligente!
theonlygusti

40

Javascript: 34 caracteres

reifitnedi detcepxenU :rorrExatnyS

salidas SyntaxError: Unexpected identifier, al menos en la consola de Chrome


8
Uso inteligente del abuso del sistema a través del abuso de errores
WallyWest

2
Señor, me ha alegrado el día: D
major-mann

44
No es una idea original, ya había una respuesta sobre esto en Python 2.
o0 '.

1
@Lohoris Lo siento, no lo vi
scrblnrd3

1
Consola Firebug en Mozilla Firefox: tnemetats erofeb ; gnissim :rorrExatnyS=> SyntaxError: missing ; before statement.
kenorb

27

Pitón, 43 41

_=']0~::[_%%_ tnirp;%r=_';print _%_[::~0]


20

TI-BASIC, 2

i2

¿Dónde iestá el número imaginario?

Salidas 2i


1
Esto solo funciona en la pantalla de inicio, no dentro de un PRGM.
kernigh

8
@kernigh ¿Lo probaste? Funciona bien. (Si la última declaración de un programa TI-BASIC se evalúa como una expresión, su resultado se imprime en lugar de 'Listo' cuando finaliza el programa)
AJMansfield

18

BÁSICO, 22 12 7 caracteres

:-)

1 enil ni rorre xatnyS

EDITAR: si se le permite ingresar al programa en modo inmediato, esto podría reducirse a rorre xatnyS(12 caracteres).

En BBC BASIC, solo necesitas 7 caracteres:

ekatsiM

13

C ++ 472 caracteres

Muchos personajes, pero no puedo pensar en una forma más simple en un lenguaje basado en C.

#include<iostream>
#include<string.h>
#define p(t) std::cout<<'}'<<';'<<')'<<strrev(&std::string(#t)[0])<<t;
char* strrev(char*p){char*t=p;char*q=p;while(q&&*q)++q;for(--q;p<q;++p,--q)*p=*p^*q,*q=*p^*q,*p=*p^*q;return t;}
int main(){p("(p{)(niam tni};t nruter;q*^p*=p*,q*^p*=q*,q*^p*=p*)q--,p++;q<p;q--(rof;q++)q*&&q(elihw;p=q*rahc;p=t*rahc{)p*rahc(verrts *rahc;t<<)]0[)t#(gnirts::dts&(verrts<<')'<<';'<<'}'<<tuoc::dts )t(p enifed#>h.gnirts<edulcni#>maertsoi<edulcni#");}

13

golpetazo

$ dnuof ton dnammoc :found :hsab-
-bash: dnuof: command not found

Longitud: 31 caracteres.


sh

$ dnuof ton dnammoc :found :hs-
sh: dnuof: command not found

Longitud: 29 caracteres.

Este no podría funcionar en algunas distribuciones de Linux, pero funciona en OSX.


tcsh

$ .dnuof ton dnammoC :found.
.dnuof: Command not found.

Longitud: 26 caracteres.


csh

% .dnuof ton dnammoC :found.
.dnuof: Command not found.

Longitud: 26 caracteres.


El ganador es:

ksh

$ dnuof ton :found :hsk
ksh: dnuof: not found

Longitud: 21 caracteres.


Lo anterior debería funcionar en todos los sistemas operativos basados ​​en * unix.


32
No funciona para mí, tengo un comando llamadodnuof
Kroltan

8
Olvidé agregar, no funciona en las distribuciones que ha dnuofinstalado (sea lo que sea). Malditos hackers.
kenorb

55
Jajaja, hay un comando llamado dnuof? : D ¿qué hace?
Pomo de la puerta

11

GolfScript, 12 caracteres

"-1%.`"-1%.`

Este código toma la cadena entre comillas dobles "-1%.`", la invierte ( -1%), la duplica ( .) y anula la evaluación ( `) de la segunda copia, restaurando las comillas dobles a su alrededor.

Entrada anterior (13 caracteres):

{`'.~'+-1%}.~

Basado en el quine {'.~'}.~de 8 caracteres de esta respuesta ; los 5 caracteres adicionales son necesarios para stringificar e invertir la salida.

PD. Tenga en cuenta que GolfScript agrega automáticamente una nueva línea al final de la salida. Si esto se cuenta como parte de la salida, se puede agregar una nueva línea correspondiente a cualquier versión del código sin afectar la salida, por un costo de un carácter adicional.


10

Befunge 98-10 caracteres

"8k,'!1+,@

Esto funciona si su intérprete no interpreta las líneas ajustadas después de "agregar un espacio adicional. Si su intérprete interpreta líneas ajustadas así, entonces esta solución de 11 caracteres funciona ( porque los espacios duplicados en un literal de cadena se interpretan como uno ):

"9k,'!1+,@ 

Si puedo usar gsin penalización, entonces estos también funcionan (7 y 8 caracteres respectivamente):

"5k,g,@

y

"6k,g,@ 

9

Rubí, 60

puts(2,s=<<2.chop.reverse,s)
puts(2,s=<<2.chop.reverse,s)
2

Basado en un clásico rubí quine.


Buen uso de heredocs.
Jon Purdy

9

Perl, 41

$_=q{print~~reverse"\$_=q{$_};eval"};eval

Antigua respuesta de 52 caracteres (27 + 25 penalizaciones)

open+0;print ~~ reverse <0>

Lee su propia fuente, almacena el reverso en un escalar e imprime eso.


1
El scalaroperador puede ser reemplazado por ~~. Sin embargo, debe agregar +25 a su puntaje para leer su propio código fuente.
breadbox

@breadbox señaló
smcg

+1. Estaba a punto de publicar algo así como mi solución de shell : $_='say"lave;\047",~~reverse,"\047=_\$"';evalpero su solución es más corta :-) Tenga en cuenta que puede usar hasta 39 caracteres say. Espero que superes todas las rarezas esotéricas :-)
Tomas

@Tomas es usted que sugiere reemplazar printcon say? Eso termina sin imprimir nada.
smcg

¿Corriste perl con la -Mfeature=sayopción?
Tomás

9

Fisión , 6 bytes.

Un caso raro de una quina generalizada que tiene la misma longitud que la quina normal :

"LO+!'

La idea es la misma que la del quine normal, pero estamos usando un átomo a la izquierda (comenzando en L) para que el modo de impresión atraviese el código en el orden opuesto.


8

J: 26

Comillas estándar (26 caracteres) : definiendo una función y pasándola su propia definición, entre comillas:

|.(,],2#{:)'|.(,],2#{:)'''

Probablemente podría hacerse más corto.

Específico J (33 caracteres) : definiendo una variable y preguntando en qué archivo se definió la variable, es decir, este, y luego imprimiendo el contenido de ese archivo:

1!:2&2|.1!:1(4!:4 a=:<'a'){4!:3''

Debe guardarse y ejecutarse desde un script (es decir, no en el REPL, porque la respuesta a la pregunta es "su argumento no se definió en un archivo", por lo que no hay ningún archivo para leer).


2
El segundo debería obtener el bono de + 25 para leer el propio archivo.
Johannes Kuhn

2
@JohannesKuhn: Penalización, pero sí.
jazzpi

1
"Bonus" suena mejor.
Johannes Kuhn

7

> <> , 25 bytes

Me sorprendió descubrir que esto aún no se había hecho. :)

...yhsif sllems gnihtemoS

Pegue el código aquí y ejecútelo.

.es el comando Saltar, aparece xy ysale de la pila, y mueve la IP al (x, y)cuadro de código. En este caso, la pila está vacía, por lo que se imprime el único mensaje de error del idioma:

Something smells fishy...

1
La mejor respuesta
Insane

7

Microscript , 11 bytes

Como que tuve que hacer esto.

0"Caxq"Caxq

Sorprendentemente, esto es en realidad más corto que la quine verdadera más corta conocida del lenguaje. qy ason equivalentes, excepto que qagrega comillas de ajuste mientras aque no.


5

JavaScript jQuery 119 92 74 70 caracteres

alert($("#answer-16051 pre code").text().split("").reverse().join(""))

Ahora usando jQuery, como minitech sugirió en los comentarios, y envolviendo manualmente <pre><code>para que pueda usar text()sin temor a que otros bloques de código en esta publicación interfieran. <h4>Cuando lo probé, envolverlo manualmente era incompatible con el cromo, por lo que ahora debería funcionar en la mayoría de los navegadores.

Este programa, si se ejecuta desde esta página, encuentra el bloque de código directamente arriba, invierte su contenido y lo coloca en un cuadro de alerta.

Es bastante fácil de verificar, solo pégalo en la consola de desarrollo.


Esto es mucho más que simplemente usar una función. Y deberías usar jQuery (en esta página) o al menos de querySelectortodos modos ...
Ry-

@minitech gracias por el consejo, lo cambié por un querySelectormomento. Me gustaría analizar la posibilidad de jQuery, pero parece que me llevará un poco más de tiempo darme cuenta.
AJMansfield

@minitech ok, gracias por el jQueryconsejo. (Ayer empecé a aprender javascript).
AJMansfield

Me gusta esta solucion; pensar más allá.
theonlygusti

4

PHP, 41 caracteres (+25)

No sé si entendí la tarea correctamente. Pero aquí hay un intento de PHP:

while(!isset($s) || $s) echo isset($s) ? array_pop($s) : ($s = str_split(file_get_contents(__FILE__)) and null);

editar: esto puede ser mucho más corto:

echo strrev(file_get_contents(__FILE__));

Pero como puede ser así de simple, probablemente esto no sea lo que se pregunta ...



Cuando hago clic en Ejecutar, obtengo un montón de tonterías inútiles (aquí hay un pequeño fragmento: >? ;)llun dna ))__ELIF__(f$(tilps_rts = s$( : )s$(pop_yarra ? )s$(tessi ohce )s$ || )s$(tessi!(elihw ;"stnetnoc_"=.f$ ;'teg_elif'=f$ php?<>?}};ESLAF nruter;"ec6x\i66x\02x\e47x\96x\rw hay mucho más). Además, incluye tu cuenta de personaje; Este es un código de golf. Además, parece que estás leyendo tu archivo fuente, así que agrega 25 a tu número de caracteres y esa es tu puntuación. La puntuación más baja gana.
Justin

@Quincunx Primero, está al revés ... pero en segundo lugar, ¡este es el código fuente que genera phpfiddle! (pero al revés ...) Parecen escapar de muchas cosas, tratando de mantener las cosas seguras. Reemplace array_popcon array_shiftpara ver el código fuente no al revés ...
nl-x

Sí, puedo ver el código fuente invertido, pero ¿qué pasa con todo el texto extraño? Hay muchas secuencias de escape, pero hay algunas que no lo son (por ejemplo, ESLAF nruteres decir return FALSE).
Justin

@Quincunx Lo siento, no estoy entendiendo si estás interesado en la forma en que funciona phpFiddle, o si estás criticando mi código. Si es lo último, en mi defensa, coloque mi código en un archivo .php y ejecútelo en un navegador, y funcionará sin problemas. Simplemente pensé que phpfiddle era algo agradable para dejarte ver, para que puedas ver un poco de su funcionamiento interno.
nl-x

4

MATLAB, 78 caracteres:

 
|
.snoisserpxe ro stnemetats BALTAM ni dilav ton si retcarahc tupni ehT :rorrE

Tenga en cuenta que la solución requiere que comience con un carácter especial (alt + 0160) y que imprima exactamente el mensaje invertido. (A diferencia de la solución de Python)


4

UNIX shell, 31

Solución real a 52 caracteres:

A='printf "A$ lave;\047`echo $A|rev`\047=A"';eval $A

¡Pero cuidado! ¡La honestidad no vale la pena en el mundo de hoy! ¡La penalización es demasiado baja!

6 caracteres + 25 = 31:

rev $0

En OSX rev $0genera el error: rev: illegal option -- b.
kenorb

4

MS-DOS, 24 bytes

eman elif ro dnammoc daB

Salida:

Bad command or file name

3

JavaScript, 62

function f(){alert((f+'f()').split('').reverse().join(''))}f()

Funciona para mí en el último Chrome (v 31.0.1650.63). Algunos otros navegadores pueden dar un resultado diferente. (Si invierte esa salida, entonces funcionaría: P)


3

SmileBASIC, 118 102 bytes

FOR I=-101TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXTFOR I=-100TO.?MID$(("+CHR$(34))*3,30,102)[-I];:NEXT

2

JavaScript, 56

($=_=>_!=$._?_?$(_.slice(1))+_[0]:')':$('($='+$+')('))()

Indique su entorno porque esto no funciona en Chrome. ¿Es este Rhino o qué?
George Reith

@GeorgeReith: Cualquier cosa con soporte de función de flecha ES6. Todos los SpiderMonkeys deberían funcionar bien, por ejemplo (Rhino incluido).
Ry-

2

CSS, 88 bytes

<style>:before,*{display:block;unicode-bidi:bidi-override;direction:rtl;content:'<style>

Poner en una página html en blanco para evitar conflictos con otras etiquetas.


2

JavaScript, 53 50 46 43 bytes

q=_=>("q="+q+";q()").split("").reverse().join("");q()

(q=_=>`(q=${q})()`.split("").reverse().join(""))()

(q=_=>`(q=${q})()`.split``.reverse().join``)()

(q=_=>[...`(q=${q})()`].reverse().join``)()

Por favor, ayúdame a acortar esto.


No necesitas el envoltorio. q=_=>[...`q=${q}`].reverse().join`` funciona igual de bien
Rɪᴋᴇʀ

Si elimino el contenedor, no se ejecutará automáticamente.
ericw31415

No necesita hacerlo. Las funciones están bien.
Rɪᴋᴇʀ

Pero entonces, el código devuelve la referencia de función, no la salida de la función.
ericw31415

@ ericw31415 tiene razón. La llamada a la función es necesaria.
Mama Fun Roll

2

Guacamole Octo Fuzzy, 4 bytes

KNU_

Kimpresiones _UNK, Nempujes Noney Uempujes 0. Y _muestra el valor superior en la pila (pero no se imprime). Tan solo _UNKse imprime.


¿Por qué Ksale _UNK?
caird coinheringaahing

@RandomUser le pide a Riker más detalles, él es el creador del lenguaje. Acabo de leer los documentos.
Bald Bantha
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.