2010-03-19 20 views
16

terminado de leer esta entrada del blog: http://www.skorks.com/2010/03/an-interview-question-that-prints-out-its-own-source-code-in-ruby/más corta Rubí Quine

En ella, el autor afirma el caso de utilizar un quine como una pregunta de la entrevista. No estoy seguro de estar de acuerdo, pero de eso no se trata esta pregunta.

Sigue construyendo una quine en Ruby y la refactoriza para acortarla. Luego desafía al lector a tratar de hacerlo aún más corto.

He jugado un poco con él por un tiempo y se le ocurrió la siguiente:

s="s=;puts s[0,2]+34.chr+s+34.chr+s[2,36]";puts s[0,2]+34.chr+s+34.chr+s[2,36] 

Ésta es la primera vez que he intentado un quine y no puedo encontrar la manera de que sea más corto .

¿Cuál es la cantidad más corta de Ruby quine que puede obtener? Por favor, publique una explicación si su implementación lo requiere.

+2

Si usted se está preguntando, un quine es un programa que, cuando se ejecuta, imprime su propio código fuente. http://en.wikipedia.org/wiki/Quine_(computing) – AaronThomson

+6

Aquí está mi Quine más corto: –

+0

Quizás debería haber dicho "quine más corto, no trivial"? – AaronThomson

Respuesta

19

Desafortunadamente, RubyGarden ya no existe. Aquí hay un par de enlaces a compensar por ello (el que Kevin desplazados no es la más corta más por cierto):

The first quines in Ruby

s="s=%c%s%c; printf s,34,s,34,10%c"; printf s,34,s,34,10 

ruby quine slightly smaller than python quine

_="_=%p;puts _%%_";puts _%_ 

shortest nozero [sic!] ruby quine

puts <<2*2,2 
puts <<2*2,2 
2 
+0

Gracias, eso es justo lo que estaba buscando. ¿Puedes explicar la sintaxis en el último? – AaronThomson

+0

En realidad se explica en la segunda página del hilo vinculado anteriormente. Cita: "pone << 2" - imprime todo el texto de después de esta declaración hasta que llegue a la cadena "2". .... "* 2" - Imprime esa cadena dos veces .... ", 2" - Y luego imprime el valor 2 El segundo "pone << 2 * 2,2" es solo texto, y el "2" final es el delimitador . –

+0

¡También funciona en Perl! http://pastebin.com/0YVrr4wN –

2
$><<open($0).read 

17 bytes, si no tiene una nueva línea final.

EDITAR: oh, espera, leer tu propio archivo fuente es hacer trampa.

4

aún más corto:

$><<IO.read($0) 

15 caracteres, sin incluir la nueva línea

+8

No tiene quine: http://en.wikipedia.org/wiki/Quine_(computing)#.22Cheating.22_quines – johncorser

Cuestiones relacionadas