Un Quat es una combinación de un quine y el popular programa de gato esolang .
Reto
El desafío es escribir un programa estándar para gatos. Cualesquiera que sean las entradas del usuario, el programa hará eco de la entrada en stdout.
Sin embargo, cuando la longitud de la entrada es mayor que 0 y un múltiplo de 4, el programa debe generar su propio código fuente. Quat proviene del quatro portugués , que se traduce como 'cuatro'.
Reglas
- Se aplican lagunas estándar
- No puede leer el código fuente de un archivo
- Una entrada vacía debería producir una salida vacía
Prima
Si la longitud de su entrada es un múltiplo de 4, puede ganar un bono del 25% imprimiendo los length/4
tiempos de quine . Otro 5% de bonificación si separa la salida por espacios (no se permite espacio final).
Casos de prueba
Los siguientes casos de prueba aplican para el programa in%4=0?cat:self
(no es un lenguaje real).
<empty input> -> <empty output>
input -> input
1234 -> in%4=0?cat:self
12345678 -> in%4=0?cat:self
0% de bonificación
12345678 -> in%4=0?cat:selfin%4=0?cat:self
25% de bonificación
12345678 -> in%4=0?cat:self in%4=0?cat:self
30% de bonificación
Tanteo
Este es el código de golf . El código más corto en bytes gana.
\n
sea el nuevo carácter de línea, para 1 byte de entradaRespuestas:
CJam, 23 * 0.75 = 17.25 bytes
Quine generalizado estándar ...
o
Pruébalo aquí.
Explicación
La otra versión evita el uso de una variable mediante el uso del truco de rotación de la pila
]:\
.fuente
En serio,
89 bytesPruébalo en línea
(Presione enter una vez en el cuadro de entrada para probar la entrada vacía).
El primer bono se puede hacer en 12 bytes (16 * .75):
Explicación:
Debido a que a algunas personas no les gusta el uso de las funciones integradas de Quining de Seriously, proporciono esta versión de 22 bytes que no se usa
Q
como referencia:Si usted es una de esas personas, considere esta la versión definitiva (por ahora) y luego comience un metaproceso sobre el uso de elementos integrados en quines.
fuente
Pyth, 33 * .75 = 24.75
Banco de pruebas
Pyth quine estándar usando join. Esto es solo una verdadera frase en el intérprete en línea, que no agrega una nueva línea final.
Obteniendo los resultados finales de bonificación en una puntuación de 39 * .7 = 27.3:
fuente
Vitsy ,
1817 bytesTan cerca .Yus ¡Ahora estoy ganando entre quiners no construidos! mira en serioNo hay razón para que yo vaya tras las bonificaciones: arrojarían muchos más bytes.
Versión de trampa quine, 12 bytes:
fuente
G`
es genial! Parece más legítimo que un simpleQ
comando.Emacs Lisp (323 * 0.75 = 242.25)
Esto utiliza la mecánica de citas de Lisp para proporcionar el código fuente como entrada para sí mismo.
Antigua versión de trampa
Sin golf:
fuente
JavaScript,
575672 bytes * 0.75 = 54¡Gracias a @Neil por un ahorro de un byte!
La solución más corta que pude encontrar fue bastante sencilla.
Entonces, aquí hay un par de soluciones adicionales (más interesantes):
JavaScript,
8281 bytes * 0.75 = 60.75Éste abusa
repeat
de la funcionalidad de lanzar una excepción si se pasa un no entero.JavaScript, 83 bytes * 0.70 = 58.1
Este último es definitivamente mi favorito, dividiendo la entrada en cada cuatro caracteres usando la expresión regular
/.{4}/
. Si quedan caracteres al final de la cadena cuando nosotrospop
, no es divisible por 4, entonces alerta la entrada. De lo contrario,pop
reduce la longitud de la matriz en uno, por lo que en este punto la longitud de la matriz es igual a la longitud de entrada / 4. En este caso, solofill
con la quine yjoin
con espacios.fuente
&&
a||
, ponga un!
antes del(p=prompt())
, quite el<1
y mueva elp
para estar dentro de?:
.Perl,
6865 * 0.75 = 48.75 bytesVea el conjunto de pruebas en línea aquí.
Desglosado
fuente
Mathematica, 229 bytes
Todo el espacio en blanco es para que
InputForm
el programa coincida con su código real.fuente
Javascript ES6, 45 bytes
Extensión de mi Bling Quine de 21 bytes. Espero que
prompt
se permita la mezcla y la salida de funciones.fuente
JavaScript, 33 bytes
Otras soluciones:
4436 bytes38,5 bytes
fuente