Mandolina quine

25

Escriba una quine ... de la que se puede eliminar cualquier otro personaje, sigue siendo una quine válida. Puede especificar si desea comenzar a eliminar caracteres en el primer o segundo carácter.

Criterios de puntuación (agregue bonificaciones / porcentajes porcentuales juntos para el porcentaje total):

  • Las respuestas deben tener al menos 4 caracteres.
  • El programa debe contener al menos un carácter alfabético en su fuente, por lo que, por ejemplo, 12345!@#$%^&*()está descalificado
  • + 750% si el lenguaje utilizado no es completo de Turing (¡te estoy mirando, HTML!)
  • -15% si la solución no lee su fuente de ninguna forma
  • -20% si también puedes mantener solo cada quinto personaje y aún formar una quine

La puntuación se mide por el número de caracteres en el primer programa.

Ejemplo (no programas reales):

Si 123456789abcdefy 13579bdfson dos quines, la puntuación es de 15. Además, si 159des también un quine, entonces el resultado final es 12.

Este es el código golf, por lo que gana la puntuación más baja.

Jwosty
fuente
2
@ hosch250 El programa original no sería una quine porque no imprimiría esos espacios en blanco. Lo mismo ocurre con los comentarios innecesarios.
Jwosty
1
Sí, nunca antes había programado una quine, y no tengo idea de cómo hacerlo sin leer el código fuente en C ++. ¡Aunque los he visto en C ++ antes!
Hosch250
1
Usted declara: "-20% si también puede eliminar cada 4 caracteres y aún formar una quine". Pero técnicamente esto no es lo que sucede en tu ejemplo. ¿Quieres decir que puedes hacerlo por segunda vez?
mmumboss
44
¿Los bonos son aditivos o multiplicativos? Es decir, si mi programa tiene 10 caracteres de largo y califica para el bono de -15% y el bono de -20%, su puntaje será 10 * (1 - 0.15 - 0.2) = 6.5 o 10 * (1 - 0.15) * (1 - 0.2) = 6.8? Asumí lo último, pero una aclaración explícita sería buena.
Ilmari Karonen
1
¿No sería una quolina mandolina, no una guillotina? Las guillotinas hacen un corte limpio, generalmente mortal, y la cabeza rueda. Las mandolinas se hacen con las muchas rebanadas espaciadas uniformemente. :)
Jonathan Van Matre

Respuestas:

24

PHP, 4 caracteres - 15% - 20% = 2.72 2.6 puntos

ABCD

Sí, PHP es un lenguaje completo de Turing. Nadie dijo que tenía que usar ninguna de sus funciones de programación reales. ;-)

Editar: Cambió la puntuación en función de la aclaración de que los bonos son aditivos, no multiplicativos.

Ilmari Karonen
fuente
Esto funciona en ASP, posiblemente.
Ismael Miguel
2
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ Me rindo. : P
Jwosty
17
En realidad, se desaconseja el uso de las funciones de programación reales de PHP.
Rhymoid
1
Esta no es una quine adecuada. Sin embargo, sigue siendo una buena respuesta
MilkyWay90
14

TI BASIC 4 - 35% = 2.6

Puede que los entienda mal, pero creo que también soy elegible para las bonificaciones de -15% y -20%, lo que significa que tengo el puntaje más bajo posible.

Puedo escribir el programa:

123i

que dará como resultado 123idonde yo es, por supuesto, la unidad imaginaria. Cuando eliminas el primer y el tercer carácter, todo lo que queda es 2iqué resultados2i

mmumboss
fuente
No del todo ... '12i' generará '12i' y '2' generará '2' para un puntaje mínimo de 1.95.
intx13
En realidad, '2i' puntúa 1.3, y si el programa vacío se considera una quine, 'i' puntúa 0.65.
intx13
44
@ intx13: "Las respuestas deben tener al menos 4 caracteres " .
Ilmari Karonen
Ah, me perdí eso!
intx13
Beat me to it;)
Timtech
13

Python - 95

Gran reto. ¡Pensé que esto era bastante inteligente, y en realidad una solución legítima!

00;"#";print(open(__file__).read())
0#;XpXrXiXnXtX(XoXpXeXnX(X_X_XfXiXlXeX_X_X)X.XrXeXaXdX(X)X)
qwr
fuente
1
¡Agradable! Tenga en cuenta que esto técnicamente no funciona tal cual, ya que termina eliminando la nueva línea al hacer la quine alternativa. requiere un poco de ajustes IOW
Claudiu
3
@Claudiu Bueno, supongo que depende de si OP considera a la nueva línea como un personaje. Si es así, puede agregar una nueva línea entre cada línea. 96 caracteres
qwr
Por supuesto un salto de línea es un personaje ...
mbomb007
11

Golfscript, 5 puntos

{hai}

es una función que, cuando se ejecuta, ejecutará la función (no existente) hai. Sin embargo, no se ejecuta, sino que se imprime cuando finaliza el programa, incluidos los corchetes externos. Eliminando caracteres el uno al otro produce:

{a}

Cojo, lo sé :-)

John Dvorak
fuente
Creo que usted también califica para ambos bonos: su programa no lee su propio código fuente y también {}es una quine.
Ilmari Karonen
@IlmariKaronen es difícil saber qué cuenta como leer el código fuente propio. ¿Cuentan las funciones sin evaluar? ¿Las cadenas de evaluación cuentan? En cuanto a la otra bonificación, tal vez está mal redactada, pero leí "eliminar cada cuatro caracteres" como "mantener cada quinto carácter", lo que me dejaría solo con un paréntesis (aunque {ab0}califica si 0puede ser el que se mantiene)
John Dvorak
De hecho, está mal redactado, pero el ejemplo sugiere que significa "mantener cada cuarto personaje". De todos modos, como notará, {ab0}califica de cualquier manera.
Ilmari Karonen
Parece que {hi}también funciona, será más corto (4 caracteres) y también calificará para todos los bonos. (Parece que el guión {ievalúa {ipor alguna razón ...)
Claudiu
8

HQ9 + - 4 * 7.5 * 0.8 = 24 puntos

Q+++

Todavía una quine con cada segundo personaje:

Q+

... y cada quinto:

Q

Lo siento, no pude resistirme. :)

Smallhacker
fuente
7

HTML / Markdown, 4 * 7.5 = 30

HHHH

Admito que esto es lamentable, pero en realidad no va en contra de ninguna regla en la pregunta. Excepto que HTML / Markdown puede no considerarse un lenguaje de programación real.

n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
fuente
Supongo que no especifiqué que los programas que no pueden dividirse más pequeños no sean válidos. Revisando desafío ...
Jwosty
@Jwosty: entonces "HHHH" en HTML ganaría. Nota 5555no funciona porque no tiene carácter alfabético
Claudiu
Necesitas un carácter alfabético.
qwr
@qwr: Olvidé eso al mirar GolfScript. Remoto.
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳
Hmm ... supongo que esto es válido: P
Jwosty
5

! / bin / sh

Me gustó tanto la solución de qwr , que descaradamente hice un puerto para el shell POSIX. No lo guarde en un nombre de archivo que contenga espacios.

: '#';cat $0

#c a t   $ 0

Comience a eliminar en el carácter número 1 y cuente las nuevas líneas como caracteres. La segunda quine es, por supuesto:

 #;a 0
cat $0

¡Por favor vota la respuesta de qwr en lugar de esta!

joeytwiddle
fuente
3

Bash, 23

Newline es un personaje!

Algunos comentarios desordenados funcionan, de modo que cuando se elimina cualquier otro personaje que comience desde el primero, el comentario se convierte en código y el código se convierte en un comentario:

#cRaRtR R$R0R R#
cat $0

Después de eliminar todos los demás caracteres ( incluida la nueva línea ):

cat $0 #ct$

fuente
Sin embargo, no es una quine si lee su propia fuente.
daniero
@daniero "-15% si la solución no lee su fuente de ninguna forma" implica que se le permite leer la fuente del programa (pero no obtiene la bonificación)
@daniero oh, miré en Wikipedia, supongo que es una trampa ... pero es code-golf
¡Siempre voté a los gatos!
Antonio Ragagnin
2

Brainf ** k, 37 - 15% = 31.45

Abusar del intérprete portátil Brainfuck

+A[B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]

Comience a eliminar del segundo personaje.

Timtech
fuente
Cuando ejecuto esto, obtengo B-C<D+E]F-GÿH<I<J<K<L<M<N<O[P.Q>R]como salida, por lo que faltan algunos caracteres.
Sylwester
¿Es Brainfuck, o un dialecto particular de Brainfuck que solo funciona en un intérprete?
user253751
@immibis Es normal (esas letras mayúsculas pueden ser espacios o símbolos o cualquier cosa). Sin embargo, debe usar el intérprete portátil vinculado desde la respuesta.
Timtech
1
La primera parte se va hacia la izquierda hasta que encuentra el ÿ y el intérprete vinculado almacena el código 5000 bytes antes del inicio de la cinta de datos. Eso no es portátil Brainfuck.
user253751
0

HQ9 + T, - 4 * 0.8 = 3.2 puntos

qqqq

Es una quine válida (ish) y una quine cada segundo y quinto carácter. No pude resistirme. . . .

Gavriel Feria
fuente