VPL Training es un curso virtual sobre el LMS Moodle que usa el plugin VPL y que ofrece un banco de problemas para aprender programación de computadores a nivel universitario. Allí hay un problema titulado Calendario raro pero inteligente, que desafía el pensamiento aritmético y computacional, busca que el estudiante proponga una solución matemática simple y la lleve al computador.
A continuación transcribo el texto del enunciado y luego analizo brevemente dos tipos de soluciones y hago una pequeña anotación al respecto:
Enunciado:
Se diseñó un calendario digital raro pero inteligente, el cual representa la fecha según la siguiente descripción:
- El día del calendario raro es la unión del código ASCII que representa a los dígitos del día real. Por ejemplo, si el día real es 25, el calendario raro lo representa como 5053, porque 50 es el código ASCII del '2' y 53 es el código ASCII del '5'. Si el día tiene sólo un dígito, el cero se representa según su ASCII 48. Por ejemplo, si el día es 07, el calendario raro lo representa como 4855 (revise https://ascii.cl/es/).
- El mes del calendario raro se representa de manera similar al dia. Por ejemplo, el mes Noviembre es 4949 y Febrero es 4850.
- El año del calendario raro se representa como la cuenta regresiva de los años que faltan para llegar a 9999. Por ejemplo, si el año real es 2018, el calendario raro lo representa como 7981.
- Todos los números (día, mes y año) se unen. Por ejemplo, si la fecha es 25 de febrero de 2018, la representación del calendario raro es 505348507981, un total de doce (12) dígitos (caben en un long de Java). A continuación varios ejemplos explicados:
Se requiere un programa que reciba como entrada un número de máximo ocho (8) dígitos, que representan una fecha, en el formato estándar de los seres humanos DDMMYYYY (asuma que la fecha siempre es válida). El programa debe generar como salida la representación de la fecha según el Calendario Raro pero Inteligente. Por ejemplo, la entrada 25022018 corresponde a la fecha 25 de febrero de 2018 y debe generar como salida 505348507981.
Tenga en cuenta que los caracteres de los dígitos del cero (0) al nueve (9) se representan en el código ASCII con la secuencia de códigos 49 al 57:
0 = 48 | 1 = 49 | 2 = 50 | 3 = 51 | 4 = 52
5 = 53 | 6 = 54 | 7 = 55 | 8 = 56 | 9 = 57
Entradas: Un número entero de máximo ocho (8) dígitos.
Salidas: Un número de doce (12) dígitos.
Dos Soluciones:
La primera solución es aritmética, es la solución esperada. Porque las entradas y salidas son números y las operaciones sugeridas son divisiones, sumas, restas y productos. Se espera un proceso inicial de análisis del número, es decir, partir en pedacitos el número, para lo cual se divide y toma residuo. Luego un proceso de codificación o conversión, que hace sumas y restas. Y finalmente un proceso de síntesis, unir los pedacitos y armar un número, para lo cual se multiplica y se suma.



.jpg)





.png)






