Su tarea es hacer un programa que haga lo siguiente:
- Deberías tomar el número. (Positivo, negativo, fracción es posible entrada)
- Si es negativo, invierte la quine. y negar ese número (Ser positivo)
- Luego repite <parte entera del número de entrada> veces e imprime primero <piso (parte de fracción del número de entrada * longitud)> desde su programa fuente. Si es entero, entonces la parte de fracción es cero.
-10% de bonificación si su programa no es palíndromo.
Ejemplo
Si su programa es "ABCDEFG", entonces
1)
5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFG
Explicación
ABCDEFG cinco veces
2)
-2
GFEDCBAGFEDCBA
Explicación
GFEDCBA (ABCDEFG invertido) 2 veces
3)
7.5
ABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABCDEFGABC
Explicación
ABCDEFG 7 veces seguido de ABC (primeras 3 (piso (0.5 * 7) = piso (3.5) = 3) letra en ABCDEFG)
4)
-0.3
GF
Explicación
GFEDCBA (ABCDEFG invertido) 0 veces seguido de GF (primer 2 (piso (0.3 * 7) = piso (2.1) = 2) letra en GFEDCBA (ABCDEFG invertido))
5)
0
<empty>
Explicación:
<vacío> aquí significa que su programa no sale. Es ABCDEFG cero veces que se define como una cadena vacía.
-
y.
manualmente (representando la fracción como enteros positivos). O puede dirigir su atención al próximo desafío. ;) (No todos los idiomas pueden participar en todos los desafíos, pero siempre que el desafío no descarte deliberadamente idiomas individuales arbitrarios, está completamente bien. Solo piense en todos los desafíos de procesamiento de audio / imagen o sistema de archivos.)Respuestas:
CJam,
2826 bytes * 0.9 = 23.4Gracias a Sp3000 por guardar 2 bytes.
Pruébalo aquí.
Explicación
fuente
Vitsy, 34 * 0.9 = 30.6 Bytes
¡Gracias a @ Sp3000 por señalar una falla en mi código!
Cortejar. Mi profesor de física me recordó que tenía funciones de poder para ayudarme con esto. Imagínate.
fuente
Perl, 104 bytes - 10% = 93.6
102 bytes + 2 bytes para
-i
- 10% por no ser un palíndromo. La entrada se pasa como argumento a-i
(por ejemplo,-0.3
arriba).Cómo funciona
Esta solución se basa en la siguiente quine:
Esto funciona de la siguiente manera. Primero, establezca
$_
la cadena:A continuación, llame
eval
, que funciona$_
de manera predeterminada. Esto llamaprint
con un argumento, un literal de cadena:Como esta cadena tiene comillas dobles, las variables se interpolan. Después de interpolar
$_
, el valor de la cadena es:Cuando se imprime, esto genera:
cuál es el código fuente del programa en sí.
Lo bueno de este quine es que puede incrustar código arbitrario dentro de la cadena para que sea
eval
'd.Aquí hay un desglose de la solución completa:
fuente
Mathematica, 139 - 10% = 125.1 bytes
Tenga en cuenta el espacio final. El espacio en blanco, la notación estándar, etc. son el resultado de
ToString[#0, InputForm]
.fuente
Haskell, 158 * 0.9 = 142.2 bytes
Una función quine.
fuente
Python 2, 193 bytes - 10% = 173.7
Errores en
0
, pero, ignorando STDERR, aún obtienes resultados vacíos.fuente