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-9funcionan 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 1no se puede escribir simplemente en hexadecimal, y he recurrido a reemplazar 1s 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, nstdin 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 ncomo 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 Aes un valor hexadecimal siguiente que 0xcontiene 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 nal 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
10xF - 0xE(o0xF-0xEo0xB-0xAo0xd - 0xco0xF/0xF)150xF2550xFF300xF + 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-9en 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 ncomo 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!