Este desafío es presentado por inspiración real (y trágica). Recientemente, la fila de números en mi teclado ha sido un poco esporádica. Las teclas 1-9
funcionan a veces, pero otras veces no tienen resultado. Como un ávido programador, ¡esto es horrible! (¿Ves ese signo de exclamación? Así es como sabes que están funcionando en este momento). No solo a menudo necesito los números, sino también los símbolos!@#$%^&*(
¡son completamente ineficaces la mitad del tiempo también! Como programador en C, en lugar de tomarme un tiempo libre de mi apretada agenda de garabatear código para arreglar mi laptop, he estado más interesado en solucionar el problema. En el transcurso de las últimas semanas, lentamente, todos los literales de números en mi código han sido reemplazados por hexadecimales para que no tenga que buscar números para copiar y pegar. Sin embargo, algunos números no son fáciles de escribir sin las teclas 1-9
. Por ejemplo, el número 1
no se puede escribir simplemente en hexadecimal, y he recurrido a reemplazar 1
s en mi código con 0xF - 0xE
. Las únicas teclas que se ven afectados son 1-9
, por lo mantengo pleno uso de símbolos como +
, -
, y /
. Sin embargo, no puedo usar multiplicación o paréntesis, como*
y a (
menudo se rompen. Esto lleva a tu desafío.
Entrada
Un número entero, n
stdin o el equivalente de su idioma. Si lo desea, el entero puede ir precedido o seguido de una nueva línea u otro carácter de espacio en blanco. Alternativamente, puede recibir información a través de un argumento de línea de comando.
Su programa debe responder correctamente a la entrada negativa y ser capaz de manejar al menos enteros con signo de 32 bits.
Salida
Su programa debería generar, de alguna forma observable, la forma más corta posible (en caracteres que no sean espacios en blanco) de escribir el número n
como una suma, diferencia o división de uno o más valores hexadecimales. Hay más de una forma de resolver este problema, y no es necesario que favorezca cualquier salida de igual longitud sobre cualquier otra.
La salida debe estar en la forma A % A % A...
donde A
es un valor hexadecimal siguiente que 0x
contiene solo dígitos A-F a-f
, y %
es uno de los símbolos -+/
. Vamos a /
describir la división entera, no el punto flotante.
(Tenga en cuenta que su resultado debería resultar n
al evaluar las divisiones primero, de izquierda a derecha, y luego sumas y restas, de izquierda a derecha, como es la convención).
Casos de prueba
De entrada y salida
1
0xF - 0xE
(o0xF-0xE
o0xB-0xA
o0xd - 0xc
o0xF/0xF
)15
0xF
255
0xFF
30
0xF + 0xF
Puntaje y Reglas
Este es el código de golf. Su puntaje preliminar es el número de bytes en su archivo fuente.
NO puede usar ninguno de los dígitos 1-9
en su fuente.
PUEDE usar símbolos !@#$%^&*(
en su fuente, pero cada uno tiene una penalización de +20 a su puntaje.
Su programa puede ser reemplazado por una función que tome n
como argumento siempre que esa función produzca algún tipo de salida legible por humanos. El valor de retorno de su función NO cuenta como salida.
Las lagunas estándar no están permitidas.
¡La puntuación más baja gana! ¡Buena suerte!
¿Me equivoqué con el formato / cuestionamiento / claridad? ¡Házmelo saber! ¡Esta es mi primera presentación a este sitio!